AIエージェントのデザインパターンを実装する
AIエージェントをLanggraphで実装する「LangChainとLangGraphによるRAG・AIエージェント[実践]入門」を読んでみて、AIエージェントのデザインパターンを実際のユースケースに当てはめてColaboratory上で実装してみる。
今回は「プロンプト・レスポンス最適化」パターンを実装してみる。
プロンプト・レスポンス最適化は、ユーザーが初めに作成したプロンプトをそのままLLMに入力しても、必要な情報が足りないなどで良いレスポンスを得られないことが考えられる。そこで、プロンプト自体の評価を事前にLLMで行い足りない情報をユーザ側に追加で入力させたりwebに問い合わせることで、それら情報を追加したプロンプトを生成し改めてLLMに投げる。
ユーザーに足りない情報を質問する
プロンプトについて足りない情報がある場合には、ユーザーに足りない情報を聞いてより情報量の多いプロンプトを作り直した後で質問することで、よりほしい答えを期待できる。以下のフローチャートとなるLanggraphをColaboratoryで実装した。
質問の例として、「日本の旅行先でおすすめを教えてください。」と問い合わせてみた。追加の質問および回答は以下となった。Colaboratory上で質問について1問ずつ回答を記入した。
どの季節に旅行する予定ですか? : 冬
旅行の期間はどのくらいですか? : 1か月
特に興味のある観光地やアクティビティはありますか? : 川下り
予算はどの程度を考えていますか? : 50万円
旅行の際の移動手段は何を予定していますか? : 特に指定なし
この質問、回答ペアともとのプロンプトから新しいプロンプトを生成し、改めてLLMに質問をなげて結果を得た。(Colaboratoryの最後の出力参照)
webから足りない情報を付加する
プロンプトで足りない情報をwebから検索して、それらとともに答えを生成する方法もある。今回の実装では生成した回答が十分かを判定し、不十分であれば再度生成するフローとして実装した。
質問の例として、「日本の山でとれる山菜とキノコを教えてください。」と問い合わせてみた。すると、['日本 山菜 キノコ 種類', '山菜 キノコ 旬 時期', '最新 山菜 キノコ 狩り 情報']というキーワードをそれぞれ抽出してweb検索結果をもとに回答を生成した。