マルチエージェント
オーケストレーションとは、アプリ内でのエージェントの流れを指します。どのエージェントを、どの順番で実行し、次に何をすべきかをどのように判断するかということです。エージェントをオーケストレーションする方法は大きく 2 つあります。
- LLM に意思決定させる: これは LLM の知性を活用し、計画・推論を行い、その結果に基づいて次のステップを決定させる方法です。
- コードによるオーケストレーション: コードでエージェントのフローを制御する方法です。
これらのパターンは組み合わせて使うこともできます。それぞれ長所と短所があり、以下で説明します。
LLM によるオーケストレーション
Section titled “LLM によるオーケストレーション”エージェントとは、 instructions 、 tools 、 handoffs を備えた LLM です。つまり、自由度の高いタスクが与えられた場合でも、 LLM が自律的に計画を立て、 tools を用いてアクションを実行してデータを取得し、 handoffs を使ってサブエージェントにタスクを委譲できます。たとえば、リサーチエージェントには次のようなツールを持たせることができます。
- Web 検索を用いてオンライン情報を取得
- ファイル検索とリトリーバルで社内データや接続先を検索
- コンピュータ操作で PC 上のアクションを実行
- コード実行でデータ分析を行う
- 計画立案やレポート作成などに長けた専門エージェントへの handoffs
このパターンは、タスクが自由形式であり LLM の知性に依存したい場合に最適です。ここで重要となる戦略は次のとおりです。
- 優れたプロンプトに投資する
利用可能な tools 、その使い方、動作すべきパラメーターの範囲を明確にします。 - アプリを監視し、改善を繰り返す
問題が発生した箇所を把握し、プロンプトを改善します。 - エージェントに内省させ、自己改善させる
例として、ループで実行して自己批評させたり、エラーメッセージを与えて改善させたりします。 - 何でもこなす汎用エージェントより、特定タスクに特化したエージェントを用意する
- evals に投資する
これにより、エージェントをトレーニングしてタスク遂行能力を向上させられます。
コードによるオーケストレーション
Section titled “コードによるオーケストレーション”LLM によるオーケストレーションは強力ですが、コードでオーケストレーションすると、速度・コスト・パフォーマンスの面でより決定論的かつ予測可能になります。代表的なパターンは次のとおりです。
- structured outputs を使用し、コードで検査できる適切な形式のデータを生成する
たとえば、エージェントにタスクをいくつかのカテゴリーに分類させ、そのカテゴリーに応じて次のエージェントを選択します。 - 複数のエージェントを連鎖させる
1 つのエージェントの出力を次のエージェントの入力に変換します。例えばブログ記事を書くタスクを、リサーチ → アウトライン作成 → 記事執筆 → 批評 → 改善という一連のステップに分割できます。 - タスクを実行するエージェントと評価・フィードバックを行うエージェントを
while
ループで回す
評価者が所定の基準を満たしたと判断するまで繰り返します。 - 複数のエージェントを並列実行する(例:
Promise.all
などの JavaScript プリミティブを使用)
互いに依存しない複数のタスクがある場合、スピード向上に有効です。
これらのパターンを示すコード例は examples/agent-patterns
にあります。