ハンドオフ オーケストレーションを使用する
ハンドオフ オーケストレーション を使用すると、AI エージェントはタスク コンテキストまたはユーザー要求に基づいて相互に制御を転送できます。 各エージェントは、適切な専門知識を持つ別のエージェントに会話を "ハンドオフ" し、最適なエージェントがタスクの各部分を処理できるようにします。 このパターンは、カスタマー サポート、エキスパート システム、または動的委任が必要な状況に最適です。
このパターンは、最適なエージェントが事前に認識されていないシナリオや、処理中にタスクの要件がより明確になるシナリオに適しています。 並列パターンとは異なり、エージェントは一度に1つずつ動作し、完全に制御を次に引き渡します。
ハンドオフ オーケストレーションを使用する場合
次のシナリオでは、ハンドオフ オーケストレーション パターンの使用を検討できます。
- タスクには専門的な知識やツールが必要ですが、エージェントの数や順序を事前に決定することはできません。
- 専門知識の要件は処理中に動的に発生し、コンテンツ分析に基づいてタスク ルーティングがトリガーされます。
- 複数ドメインの問題では、さまざまな専門家が順番に作業する必要があります。
- エージェントが制御をいつ転送し、誰に転送するかを示すクリアシグナルまたはルールを定義できます。
ハンドオフ オーケストレーションを回避する状況
次のシナリオでは、ハンドオフ オーケストレーション パターンの使用を避けたい場合があります。
- 関係するエージェントとその順序は、事前にわかっており、固定されています。
- タスク ルーティングは単純でルールベースであり、動的な解釈は必要ありません。
- ルーティングの決定が不十分な場合は、ユーザーに不満を感じる可能性があります。
- 複数の操作を同時に実行する必要があります。
- 無限ハンドオフループやエージェント間の過度のバウンスを避けるのは困難です。
ハンドオフ オーケストレーションを実装する
ハンドオフ オーケストレーション パターンは、制御ワークフローを使用して Microsoft Agent Framework SDK に実装できます。 コントロール ワークフローでは、各エージェントがタスクを順番に処理し、その出力に基づいて、次に呼び出すエージェントを決定します。 このルーティングは、分類結果に基づいてタスクを異なるエージェントにルーティングするスイッチ ケース構造を使用して行われます。
データ モデルとチャット クライアントを設定する
- AI サービスに接続するためのチャット クライアントを作成する
- AI エージェントの構造化された JSON 応答の Pydantic モデルを定義する
- ワークフロー ステップ間で情報を渡すための単純なデータ クラスを作成する
- 構造化された JSON 出力用の特定の命令と
response_formatパラメーターを使用してエージェントを構成する
特殊な Executor 関数を作成する
- 入力ストレージ 実行プログラム - 受信データを共有状態に保存し、分類エージェントに転送します
- 変換実行プログラム - エージェントの JSON 応答を型指定されたルーティング オブジェクトに変換します
- ハンドラー実行プログラム - ガード条件を使用して分類結果ごとに個別の実行プログラムを作成し、正しいメッセージ処理を検証します
ルーティング ロジックをビルドする
- 分類値ごとに条件チェッカーを生成するファクトリ関数を作成する
- 受信メッセージを調べて特定の分類結果に対して true を返す条件を設計する
- スイッチ ケース エッジ グループの Case オブジェクトで条件を使用する
- 予期しないシナリオのフォールバックとして既定のケースを常に含める
ワークフローをアセンブルする
- WorkflowBuilder を使用して Executor を通常のエッジに接続する
- 分類結果に基づいてルーティング用のスイッチ ケース エッジ グループを追加する
- 最初に一致するケースに従うか、既定値にフォールバックするようにワークフローを構成する
- ターミナル Executor を設定して最終的な出力を生成する
ハンドオフ オーケストレーションは、特殊な AI エージェント間でタスクを動的にルーティングする柔軟な方法を提供し、ワークフローの各部分が最適な専門家によって処理されるようにします。 これは、カスタマー サポートやマルチドメインの問題解決など、複雑で進化するタスクに適しており、会話中に専門知識が必要な場合に変化します。 Microsoft Agent Framework SDK を使用すると、エージェント間でシームレスに制御を転送し、必要に応じて人間の入力を含め、スムーズかつ効率的なタスクの完了を実現する適応可能なシステムを構築できます。