目次
以下の記事を参考にした
https://www.mlq.ai/fine-tuning-gpt-3-question-answer-bot/
処理の流れとしては
質問をリクエスト→Embeddingから類似するQAを検索→CompletionAPIにQAを埋め込んで質問に答えさせるという感じ
Fine-tuningとか使うかとおもったけど、QAボットくらいならこれで良いみたい
Embeddingというのはベクトル検索のために必要なやつで、まぁ検索のための情報を計算してくれるって感じ
これにFAQのCSVとかを食わせて、情報を追加する
サンプルコードみたら何となく分かると思う
https://platform.openai.com/docs/guides/embeddings/what-are-embeddings
というわけで、大体のChatbot作るための流れは
FAQをCSVとかに出力→データを掃除(装飾など消す)→Embedding作成→サンプルコードと同じように実装していく
細かいところはサービス用にちょいちょい変える必要があると思う
CSVだとメンテ性が悪いのでベクトル検索できるサービスにおくなど
JSで実装する場合
↓のようなライブラリがあれば便利
・CSV読むときにdanfojs
https://github.com/javascriptdata/danfojs
・絶対いるopenai-node
https://github.com/openai/openai-node
・ベクトル検索するときにcosine-similarity
https://github.com/compute-io/cosine-similarity
あとサンプルコードでembeddings_utilsみたいなのが出てくるがそういうのは必要あれば自分で書き換える
https://github.com/openai/openai-python/blob/main/openai/embeddings_utils.py
あとデフォルトのpromptだと適当なURLを生成することがあったので(hallucination)、そのへんはcontextにないURLを生成するな、contextに存在する場合のみそのまま提供することはOK、みたいな感じの命令で防げる
(でも命令の仕方によってはまだ適当なURL出してくるので調整が必要)