はじめに
Adventカレンダー用に考えたネタです。openaiの機能を使って簡単にLINEスタンプ自動返却botを作成できないか検討してみた、という内容の記事です。
LINEスタンプについて
この機能については特に説明は不要かと思いますが、LINEbot(Messaging API)でスタンプを返したい場合は基本的には公式で提供されている以下のリストから適切なものを選ぶことになると思います。
スタンプをメッセージとして送るためにはpackageId
とstickerId
が必要になります。今回はこの2つのプロパティ要素をopenaiの提供するgptが自動で判断してくれないかを検討しました。
Assistants APIとは
Assistants APIは名前の通り、AIアシスタントを手軽に作成できるAPIです。2023/11/20時点ではPythonとNode.jsのパッケージが公式でサポートされているみたいです。
ナレッジベースの読み込み
まずはGPT側に必要なスタンプの情報を読み込ませたいと思います。このナレッジベースの構築に関しては先例があります。
今回はもっと簡単に、Retrieval機能を使ってナレッジベースを構築できないかを考えてみました。
上記の例のようにファイルをアップロードするだけでGPT側が勝手に必要情報を拾ってきてくれるみたいなので、そのファイルを作成してみました。
今回やってみたことはかなりシンプルで、先ほどのLINEスタンプのリストの公式ページを丸々スクリーンショット保存したものを使いました。
モデル構築
先ほどのブログのように、Playgroundを使えば手軽にAssistants APIを試すことができるのでそれを使います。
モデルはgpt-4-1106-preview
を使って、toolsはRetrievalを有効化して今回用意したスタンプリストのページのスクリーンショットをアップロードしました。
ちなみにInstruction(GPTに与える事前設定のようなもの)は以下のようにしました。
## 命令
ナレッジベースを元に、入力されたメッセージに対して適した内容のLINEスタンプのIDを返答してください
## 出力形式
{
"packageId": {id here},
"stickerId": {id here}
}
結果
まずはちゃんとナレッジベースを読み込んだ上での返答をしてくれるかどうかの検証からです。
とりあえず期待した形式での回答をしてくれたので一安心です。ちなみにこのIDに対応するスタンプは、これです。
ちゃんと存在するスタンプ情報が返ってきました!他の回答も試してみましょう。
存在しないIDが返ってきました。うまくいかない場合もあるようです。。。他の内容も試してみましょう。
存在するIDではあるのですが、よくよくみてみると「こんにちは」と同じ返答内容のようです。。。
さいごに
今回記事にする内容を思いついてQiitaを書き出すまでに1時間ほどしかたっていないので、Assistants APIを使えば本当に簡単に自分専用のAIアシスタントが作れることを実感しました。
ただし性能については何とも言えないのが現状なので、もう少しナレッジベースかInstructionsの調整が必要そうですね。