注意事項
成果物は「例のアレ」に関連するGPTsです。
かなり挑戦的な内容になっています。(倫理的に)
お知らせ
終了しました。
毎月$40かかるのが苦しかったです
成果物
生き字引と化したChatGPTが完成しました。
文章を語録に変換してくれます。
語録の追加ができます。(あまり荒らさないでね)
一応似ている単語は弾くようにしています。
語録の出現率を調整できます。
検索時のレスポンスにidを含めているので、出現率を制御するAPIを使用できます。
インフラ
GPTが使用するLambda、dbを触りに行くだけの踏み台、HTTP通信で操作できるベクトルDBをがっちゃんこしてます。(VPSの設定で詰まったのは内緒)
Lambdaは関数URLを使用。API Gatewayなしにルーティングできる。ECRのコンテナでデプロイ。
踏み台はSSH、APIはBasicで保護しています。
スタック
- Python3.10
- 正直TypeScriptと悩むが、Pythonならなんとかなる感がある
- fastapi + mangum
- 自動ドキュメント生成とGPTsの相性が最高。Pydanticはズッ友。/openapi.jsonに自動でスキーマを公開するので、これをGPTsに見せればOK。mangumでlambdaのイベントを扱える
- openai
- 1.0になってからバチバチに型がついて使いやすくなった
- chromadb
- 無料!デフォルトの距離計算がコサイン類似度ではないのだけ罠。(かと言ってコサイン類似度のメリットを理解しているわけではない)
ロジック
GPTsが変換したいテキストをリクエストに含めてベクトル検索するよ。
関連した語録が返ってくるからGPTsが気合で頑張るよ。
個人的に得た知見
- lambdaをVPCに含めると外界と繋がらなくなるのでNATとゲートウェイの設定が必須
- GPTsを公開するときに本名かwebサイトが晒される
- GPTsはレスポンスをそのままコンテキストに保持している
- ChatGPTに会話コンテキストのハンドリングを任せるのはかなり楽
- APIスキーマを書くことはAIと人間に優しい
終わりに
作ったGPTsは事故や財布の都合で予告なしに止まるかもしれません。その場合はごめんなさい。