注意事項
成果物は「例のアレ」に関連する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が気合で頑張るよ。
個人的に得た知見
- VPC難しい。lambdaをVPCに含めると外界と繋がらなくなるのでNATとゲートウェイの設定が必須。
- GPTsを公開するときに本名かwebサイトが晒される。
- GPTsはレスポンスをそのままコンテキストに保持している。
- ChatGPTに会話コンテキストのハンドリングを任せるのはかなり楽。
-
OpenAIへのAPIリクエスト(埋め込み生成)がランダムにタイムアウトしてしまう。おそらくlambda特有でデプロイ直後は安定している。NATいじったらいけた - APIスキーマを書くことは、人間にもCopilotにもChatGPTにも優しい。
終わりに
作ったGPTsは事故や財布の都合で予告なしに止まるかもしれません。その場合はごめんなさい。