AIパーソナル・ラーニング
と実践的なガイダンス

LLMアプリケーション:エージェントとの対話に関する考察(ツールコール付き)

ChatGPTやKimiのようなQ&A製品は、KimiのLLMダイアログ、リンクダイアログ、ファイルダイアログ、ネットワークダイアログのようなエージェントダイアログ(ユーザーと対話するために異なるツールを呼び出す機能)を使用しています。例えば、ChatGPT、Wenxin Yiyin、Xunfei Starfireは、Wensheng Diagram、Code Writer、Maths Calculatorなどのツールで拡張されています。

 


LLMアプリケーション:エージェントとの対話に関する考察(ツールコール付き)-1

 

LLMアプリケーション:エージェントとの対話に関する考察(ツールコール付き)-2

ChatGPT4のエージェント対話

 

 

現在、エージェント対話能力を実現するフレームワークの主流はReAct(2022年にプリンストン大学とグーグルが提唱)であり、ReAct [1]は思考と行動を融合させたキューワードアプローチである。その歴史的変遷を以下に示す:

 

LLMアプリケーション:エージェントとの対話に関する考察(ツールコール付き)-3

 

上表の3つの方法とは

 

理由だけ:多段階の思考を誘導するためにプロンプトで質問を入力する前に、"ステップバイステップで考えてみましょう "というプロンプトを追加し、思考の連鎖を使用して、直接答えを与えることはありませんが、欠点は明らかである:理由だけ閉ざされたドアはちょうど行うには考えていない、考える前に世界を理解するために外の世界を見に行くことはありませんので、それは幻覚を生成し、王朝の変化は知りません;

 

アクト・オンリー:シングルステップのActionObservationでObservationを得る、デメリット:何も考えずにすぐにやってしまうので、最後に得られる答えが自分の望むものと同じであるとは限らない;

 

リ・アクト考えることと行動することの融合、つまり、行動する前に考え、行動した結果を返し、次に何をすべきかを考え、行動し、最終的な答えが出ることを知りながら、そのプロセスを何度も何度も繰り返す。

 

延長:2023年には自己反省もある(リフレクションフレームワークの)、反射に参加し、以下に示すように、ここでは深さではない。また、興味のある友人は、"エージェントの研究 - エージェントのフレームワークの比較の19種類 "の大きな淘宝網の技術公開番号で見ることができる、論文を送信するために、この作品は本当に、より多くの花を再生されます。

 

LLMアプリケーション:エージェントとの対話に関する考察(ツールコール付き)-4

 

ReActの論文で言及されている例を示すことで、上記の論理とメリット・デメリットがより明確になる:

 

LLMアプリケーション:エージェントとの対話に関する考察(ツールコール付き) - 5

 

レアクトのプロンプトは

"""
エージェントプロンプトの入力変数の説明:
- tools: ツールセットの説明。"{tool.name}: {tool.description}"の形式。
- toool_names: ツール名のリスト
- 履歴: ユーザとエージェント間の対話履歴(エージェントチャットの途中でReActを複数回実行しても、対話履歴にはカウントされないことに注意)
- 入力: ユーザーからの質問
- agent_scratchpad:行動と観察の中間処理。
は"˶nObservation: {observation}˶nThought:{action}"となります。
次にagent_scratchpad(エージェントの思考記録)を渡す。
"""
agent_prompt = """
以下の質問にできるだけ答えてください。 順番通りであれば、いくつかのツールを適切に使用することができます。 あなたは以下のツールを使用することができます。

{ツール}

以下のフォーマットを使用する。
質問:あなたが答えなければならない入力質問1
考え:何をすべきか、どんな道具を使うべきかを常に考えるべきだ。
Action: 取るべきアクション。{tool_names}のいずれかでなければならない。
アクション入力:アクションへの入力
観察:行動の結果
... (この思考/行動/行為の入力/観察は0回以上繰り返すことができる)。
最終的な答えがわかった
最終的な答え:元の入力質問に対する最終的な答え
始める!

history: {歴史}。

質問: {input}

Thought: {agent_scratchpad}"""

 

ReActアプリケーションのフローチャートを以下に示す:

LLMアプリケーション:エージェントとの対話についての考察(ツールコール付き) - 6

 

 

インターネット上に良い例があるので、ここでは説明のためにそれを参照する[2]:

 

と仮定しよう:

 

ユーザーからの質問: "今日の市場におけるバラの平均価格は?それに15%を上乗せして売る場合、どのように値段をつければいいのでしょうか?"

 

ツール:: {'bing web search': Bing Searchを使ったオープンソース情報のウェブ検索ツール; 'llm-math': ビッグモデルとPythonで数学をするためのツール}。

 

すると、最初の対話のインプットはこうなる:

以下の質問にできるだけ答えてください。 順番通りであれば、いくつかのツールを適切に使用することができます。 あなたは以下のツールを使用することができます。
bing-web-search: オープンソース情報をウェブで検索するためのビング検索ツール
llm-math:大きなモデルとPythonで数学をするためのツール
以下のフォーマットを使用する。
質問:あなたが答えなければならない入力質問1
考え:何をすべきか、どんな道具を使うべきかを常に考えるべきだ。
Action:取るべきアクション。[bing-web-search, llm-math]のいずれかでなければならない。
アクション入力:アクションへの入力
観察:行動の結果
... (この思考/行動/行為の入力/観察は0回以上繰り返すことができる)。
最終的な答えがわかった
最終的な答え:元の入力質問に対する最終的な答え
始める!
の歴史がある。
質問:現在の市場におけるバラの平均価格はいくらですか?15%のマークアップでバラを売る場合、どのように値段をつければよいでしょうか?
考えた。

 

出力を取得し、それを解析して思考、行動、行動入力を得る:

感想:必要な情報をすぐに見つけられるように、検索ツールを使って答えを探すべきですね。
アクション:bing-web-search
アクション・インプット:バラの平均価格

 

bing-web-searchツールを呼び出し、"薔薇の平均価格 "と入力し、リターン・コンテンツを得る 観察:"webによると、アメリカでは薔薇の花束は1本80.16ドル"。その後、上記の内容を整理し、ウェブサイトに掲載する。その後、上記の内容をReActのプロンプト・ワード・テンプレートに入れ、第2ラウンドの対話入力を開始する:

以下の質問にできるだけ答えてください。 順番通りであれば、いくつかのツールを適切に使用することができます。 あなたは以下のツールを使用することができます。
bing-web-search: オープンソース情報をウェブで検索するためのビング検索ツール
llm-math:大きなモデルとPythonで数学をするためのツール
以下のフォーマットを使用する。
質問:あなたが答えなければならない入力質問1
考え:何をすべきか、どんな道具を使うべきかを常に考えるべきだ。
Action:取るべきアクション。[bing-web-search, llm-math]のいずれかでなければならない。
アクション入力:アクションへの入力
観察:行動の結果
... (この思考/行動/行為の入力/観察は0回以上繰り返すことができる)。
最終的な答えがわかった
最終的な答え:元の入力質問に対する最終的な答え
始める!
の歴史がある。
質問:現在の市場におけるバラの平均価格はいくらですか?15%のマークアップでバラを売る場合、どのように値段をつければよいでしょうか?
感想:必要な情報をすぐに見つけられるように、検索ツールを使って答えを探すべきですね。
アクション:bing-web-search
アクション・インプット:バラの平均価格
観察:オンライン情報源によると、アメリカではバラの花束は1本80.16ドル。
考えた。

 

出力を取得し、それを解析して思考、行動、行動入力を得る:

考え:15%を上乗せするといくらになるのか、計算が必要だ。
アクション: llm-math
アクション入力: 80.16*1.15

 

llm-mathツールを呼び出し、"80.16*1.15 "を入力し、Observation: "92.184 "を返す。その後、上記の内容をReActのプロンプト・ワード・テンプレートに入力し、3回目の対話入力を開く:

以下の質問にできるだけ答えてください。 順番通りであれば、いくつかのツールを適切に使用することができます。 あなたは以下のツールを使用することができます。
bing-web-search: オープンソース情報をウェブで検索するためのビング検索ツール
llm-math:大きなモデルとPythonで数学をするためのツール
以下のフォーマットを使用する。
質問:あなたが答えなければならない入力質問1
考え:何をすべきか、どんな道具を使うべきかを常に考えるべきだ。
Action:取るべきアクション。[bing-web-search, llm-math]のいずれかでなければならない。
アクション入力:アクションへの入力
観察:行動の結果
... (この思考/行動/行為の入力/観察は0回以上繰り返すことができる)。
最終的な答えがわかった
最終的な答え:元の入力質問に対する最終的な答え
始める!
の歴史がある。
質問:現在の市場におけるバラの平均価格はいくらですか?15%のマークアップでバラを売る場合、どのように値段をつければよいでしょうか?
感想:必要な情報をすぐに見つけられるように、検索ツールを使って答えを探すべきですね。
アクション:bing-web-search
アクション・インプット:バラの平均価格
観察:オンライン情報源によると、アメリカではバラの花束は1本80.16ドル。
考え:15%上乗せした場合の価格を計算するためのデータが必要です。
アクション: llm-math
アクション入力: 80.16*1.15
観測:92.184
考えた。

 

出力を取得し、それを解析して思考、行動、行動入力を得る:

思考:最終的な答えはわかっている。
最終回答:15%を追加販売する場合、価格は92.184ドルとなります。

 

LangchainはReAct呼び出しを実装しており[3]、ReAct Agent、AgentExecutor、ツールを作成する必要があります。ReAct Agentを通して、先に述べたことを実現し、異なるツールに接続し、ユーザのニーズとLLMの考えに従って異なるツールを呼び出し、Q&Aのパフォーマンスを向上させることができます。ReActベースのAgent Chatを自分で書き換える場合、ツールの選択が存在しない、ツールの呼び出しに失敗する、ツールの呼び出しがデッドループにはまるなど、いくつかの境界条件には特に注意を払う必要があり、これらは最終的に対話の有効性に影響するからです。個人的には、ReAct Agent Chatの効果を実践する際に、いくつかの気づきがあります:

  • LLMは、エージェントとの対話能力アライメントを行ったものを選び、できればReAct PromptをLLMに適応させることができる;
  • 良いツールの紹介を明確に記述することで、ツール間の記述のブレを減らし、間違ったツールの使用を避けることができる;
  • 多くのLLMは、長い文脈の入力を理解するのが苦手になってしまう。
  • もし1回だけ思考-行為-観察があれば、1セットのプロセスダウン、あなたは2回のLLMと1回のツールコールを通過する必要があり、それは応答時間に影響を与える、あなたはこのReActのプロセスを簡素化したい場合は、直接最終的な結果を直接出力するツールによって、意図認識+ツールコールを使用することができ、要約回答を行うためにLLMにフィードバックする必要はありませんが、欠点は、それがそう完璧ではないということです。

 

LangChainは多くのスターターキットを提供しており、[4]で見ることができる。

 

正面から見ると、ActionとAction Inputはツールの名前とツールの入力である。Action入力はLLMのクエリ解析に基づくツールの入力であるのに対して、「一時アップロードファイルとの対話」機能はファイルの場所やファイルの内容が必要であるため、実は、以下の私の図面に従って、「一時アップロードファイルとの対話」を「Action入力」機能だけに入れることができます。このため、下図のように「一時アップロードされたファイルとの対話」機能と「一時アップロードされたファイルとの対話」機能を分離することができます。

 

LLMアプリケーション:エージェントとの対話についての考察(ツールコール付き) - 7

 

具体的なフロントエンドとバックエンドの連携プロセスは以下の通り:

1.ユーザがファイルをアップロードすると、フロントエンドはまず一時的な知識ベースを作成し、ファイルの対話ラウンド数を0に初期化し、その一時的な知識ベースの変数名を記録しながら、ファイルをその知識ベースにアップロードする;

2、対話の各後続ラウンドは、知識ベースの名前は、対話の各ラウンドの後、上記のフローに行くによると、エージェントチャットに渡され、ドキュメントの下に対話のラウンド数で更新されます;

3、文書対話ラウンド数>文書保持ラウンド数、またはユーザーが手動でコンテキストをクリアすると、フロントエンドは一時知識ベースを削除し、一時知識ベースの変数名をクリアする。

 

書誌

[1] リ・アクト: Synergising Reasoning and Acting in Language Models, 公式プレゼンテーション: https://react-lm.github.io/

[2] LangChainドライラン(1): AgentExecutorはどのようにモデルやツールを動かしてタスクを完了させるのか?- 黄佳の記事 - 知乎https://zhuanlan.zhihu.com/p/661244337

[3] ReAct、Langchainのドキュメント:https://python.langchain.com/docs/modules/agents/agent_types/react/

[4] Agent Toolkit, Langchain ドキュメント: https://python.langchain.com/docs/integrations/toolkits/

[5]「LLM+サーチ・リライト」論文10本一挙掲載 - 検索と押しにこだわったエッセイ - Knowledge: https://zhuanlan.zhihu.com/p/672357196

[6] MultiQueryRetriever, Langchain documentation: https://python.langchain.com/docs/modules/data_connection/retrievers/MultiQueryRetriever/

[7] HypotheticalDocumentEmbedder, Langchain documentation: https://github.com/langchain-ai/langchain/blob/master/cookbook/hypothetical_document_埋め込み.ipynb

[8] ビッグモデルのアプリケーション開発、必見のRAG上級Tips - Articles by Rainfly - ナレッジ: https://zhuanlan.zhihu.com/p/680232507

AIイージー・ラーニング

AIを始めるための素人ガイド

AIツールの活用方法を、低コスト・ゼロベースから学ぶことができます。AIはオフィスソフトと同様、誰にとっても必須のスキルです。 AIをマスターすれば、就職活動で有利になり、今後の仕事や勉強の労力も半減します。

詳細を見る
無断転載を禁じます:チーフAIシェアリングサークル " LLMアプリケーション:エージェントとの対話に関する考察(ツールコール付き)

チーフAIシェアリングサークル

チーフAIシェアリングサークルは、AI学習に焦点を当て、包括的なAI学習コンテンツ、AIツール、実践指導を提供しています。私たちの目標は、高品質のコンテンツと実践的な経験の共有を通じて、ユーザーがAI技術を習得し、AIの無限の可能性を一緒に探求することです。AI初心者でも上級者でも、知識を得てスキルを向上させ、イノベーションを実現するための理想的な場所です。

お問い合わせ
ja日本語