🤖

Node-REDでChatGPT API(gpt-3.5-turbo)を試す

2023/03/02に公開

ChatGPT API(gpt-3.5-turbo)に対応したNode-REDを更新しました。
基本的な設定はこちらの記事をご確認ください。

https://zenn.dev/gaomar/articles/e46cba8e489dfa

新しくなった部分

  • 会話の初期設定ができる
  • 会話の継続ができる

実際にNode-REDを使って詳しく見ていきます。今回は手っ取り早くenebularを使って検証します。

https://enebular.com/

会話の初期設定

Nodeの設定画面に SystemSettingがあるのでそこに初期設定を明記します。例えばこんな感じです。

末尾に「テヘペロ」とつけてね

s100.png

これを実行するとこんな感じでAIが返答します。

おはようございます!テヘペロ。

s101.png

ツンデレで返してほしい場合や、AIにキャラクター設定したり色々試せます。

会話の継続

過去のバージョンだと会話の継続を行うために小細工が必要でしたが、今回公開されたAPIだと簡単に会話の継続をすることができます。
simple-chatgptの返答プロパティ pastMessagesに会話の履歴を返すようにしています。これを利用して会話の継続を行うことができます。

例えばこんな感じ

s102.png

その人 = 織田信長だということを会話の流れから把握しているのが分かります。
ちなみにchangeノードは単純にmsg.payloadに値を入れているだけです。

s103.png

msgオブジェクトの中身

msgオブジェクトの中身はこんな感じです。pastMessagesにこれまでの履歴を全部入れています。

{
  "_msgid": "6e89395571345cae",
  "payload": "織田信長は1534年に生まれました。",
  "pastMessages": [
    {
      "role": "user",
      "content": "織田信長を20文字で要約して"
    },
    {
      "role": "assistant",
      "content": "\n\n日本史上最強の大名。天下統一を果たし、刷新的な改革を行い大成した。"
    },
    {
      "role": "user",
      "content": "その人はいつ生まれた?"
    },
    {
      "role": "assistant",
      "content": "織田信長は1534年に生まれました。"
    }
  ]
}

s104.png

新規で会話する場合

pastMessagesの中身を削除してしまえば会話が初期化されます。
誰に殺されたのか聞いてみたところ、こんな感じでその人が誰なのか分からなくなっています。

s105.png

もし削除していなければ、会話は継続しています。

s106.png

まとめ

ChatGPTのAPIが公開され、できることが一気に増えました。料金も安いので様々なアプリに実装されていくかと思います。AIの進化が本当に止まらないですね!

Discussion