エージェント・ループの理解
ツール呼び出し(tool-calling)モデルを使用して構築する場合、最も重要な決定はプロンプトではありません。モデルの周囲にある「ループ」です。
LLMはツールの使用を決定しますが、そのツール自体を実行することはできません。アプリケーションまたはSDKがコンテキストを組み立て、ツールを実行し、その結果を追記する必要があります。このサイクルがエージェント・ループです。
モデルはシステムの一部に過ぎません。ハーネス(harness)またはSDKがオーケストレーションを管理します。これには、プロンプトの組み立て、ツールの実行、リトライ、および終了が含まれます。
信頼性の高いエージェントを構築するための重要な概念:
- 状態管理(State management)は極めて重要です。ツールの出力を失うと、エージェントは何が起きたかを忘れてしまいます。
- パフォーマンスはプロンプトの増大制御に依存します。コストを低く抑えるために、安定したプレフィックスとキャッシュを活用してください。
- 安全性には検証が必要です。データを変更するアクションには、承認ゲート(approval gates)を使用してください。
- ライフサイクルを管理するのはモデルではなく、ハーネスです。
ループの実践的なメンタルモデル:
- 入力状態を構築する。
- モデルを呼び出す。
- レスポンスを検査する。
- モデルがツールを要求した場合は、それらを検証して実行する。
- ツールの結果をコンテキストに追記する。
- 再度モデルを呼び出す。
- モデルが最終的な回答を提供したときにのみ停止する。
同じモデルを使用しても、2つのシステムが異なる挙動を示すことがあります。これは、コンテキスト、ツールの順序、および履歴に関して、それぞれのハーネスが異なる決定を下すために起こります。
次のような一般的な問題に注意してください:
- 繰り返しの挙動:通常、状態の連続性が断たれていることが原因です。
- 低品質:ツールの出力が長すぎたり、ノイズが多かったりすることが原因であることが多いです。
- 高コスト:通常、キャッシュを妨げる不適切なプロンプトの順序付けが原因です。
- 不安全なアクション:ツールを実行する前に引数を検証していない場合に発生します。
モデルはアクションを選択します。ハーネスは現実を制御します。より優れたシステムを構築したいのであれば、単にプロンプトを微調整するのではなく、より優れたループを構築してください。
オプションの学習コミュニティ: https://t.me/GyaanSetuAi