返信メッセージの作成
さて、前回のところまででWebサーバーがユーザーのメッセージを受け取るところまでが完成しました。
今回は受け取ったメッセージから返信するメッセージを作成していきます。
今回はAIに返信してもらうという趣旨なのですが、AIをpythonで扱う為のライブラリはいくつか提供されています。今回の場合は単純なメッセージのやり取りではなく、AIを使った関数呼び出しが入ってくるのでライブラリを使っていきます。
また、使用するAIはopenAIのGPTと、一部可能であればコストの安いgoogleのgeminiを使いたいと思います。
ライブラリの選択
ライブラリの選択肢としては2つありました。
1.OpenAI公式ライブラリ
2.LangChain
OpenAI公式ライブラリは名前のまま、OpenAIが自社のAIを利用するために提供しているライブラリです。公式ドキュメントを見た感じ、直感的で使いやすい印象でした。
もう一つはLangChainです。これはAIを使ったアプリケーションを構築するためのオープンソースのフレームワークです。公式ドキュメントを見てみると、全部入りという感じでした。
これはどちらで行くか迷ったのですが、今回は要件にユーザーとの会話を記憶するというものがあります。
openAIの公式ライブラリではおそらくこの機能は直接的には提供されていません。
一方、LangChainではメモリー機能が提供されてる為今回はLangChainを使用していくことになりました😃
早速LangChainを触ってみます。
とりあえず感触を掴むために、ネット上からサンプルのコードを拾ってきて動かしてみようと思いました。
しかし、qiitaなどで投稿されているコードがいまいちちゃんと動きません😨
ちょっと調べてみると、このLangChainというフレームワークは物凄く早いペースで更新がされていて、一ヶ月前に書いたコードがそのままでは動かないほどのスピードだということが分かりました😅
ということで、公式ドキュメントを見ながら学習を進めていきます。
これがなかなかにボリュームがあり、ちょっと難しい部分もあって、今回のプロジェクトに必要と思われる部分+αの学習だけで2日間かかってしまいました😅
今回のプロジェクトに関わる部分について簡単に書くと、LangChainではtoolというものがあります。
AIが使う道具というイメージです!
このtoolは標準で用意されているものもあれば自作することもできます!
このtoolを用意することでAIは自身でどの道具を使用するかを判断して使うという感じです😃
ともあれ、とりあえずざっくりと全体像を把握して必要な部分は触れる様になったので開発を開始していきます!
ツールの作成
今回必要なツールは以下のものになります。
1.Web検索tool
AIは最新の情報を持っていません。例えば、今日の天気や近くの映画館で今上映している映画の情報などは分かりません。そこで、そのような情報が必要な場合はネットを検索してURLを取得するツールが必要です。
2.スクレイピングツール
web検索toolは検索した後にURLを返すようなtoolにします。そうすると、そのURLを元にホームページ内の情報を取得するツールが必要になります。
3.画像生成tool
ユーザーが画像を作って欲しい時に画像を生成するツールです。
3.画像編集tool
ユーザーから送られてきた画像を絵画風にしたり、男性を女性にしたり、若返らせたりするツールです。
次回は各ツールの要件と、作り方を書いてみます😃