グループ チャット オーケストレーションを使用する

完了

グループ チャット オーケストレーション は、複数の AI エージェントと、必要に応じて人間の参加者間の共同作業をモデル化します。 中央チャット マネージャーがフローを制御し、次に応答するエージェントと、人間の入力を要求するタイミングを決定します。 このパターンは、会議、議論、または共同作業の問題解決をシミュレートするのに役立ちます。

複数のエージェントが管理対象の会話に参加するグループ チャット オーケストレーションを示す図。中央のチャット マネージャーがディスカッション フローを調整します。

グループ チャット パターンは、グループディスカッションや反復的なコラボレーションが意思決定に到達するための鍵となるシナリオに適しています。 自由に流れるイデーションから、ロールと承認ステップが定義された正式なワークフローまで、さまざまな相互作用スタイルがサポートされています。 グループ チャット オーケストレーションは、人間が会話をガイドまたは介入する可能性がある、ループ内の人間のセットアップにも適しています。 通常、このパターンのエージェントは、実行中のシステムを直接変更せず、主に会話に貢献します。

グループ チャット オーケストレーションを使用するタイミング

シナリオで次のような場合は、グループ チャット オーケストレーションの使用を検討してください。

  • エージェント (および場合によっては人間) 間の自発的またはガイド付きコラボレーション
  • エージェントが順番に作成とレビューを行う反復的な作成者チェッカー ループ
  • リアルタイムの人間の監視または参加
  • すべての出力が 1 つのスレッドで収集されるため、透過的で監査可能な会話

一般的なシナリオは次のとおりです。

  • エージェントが互いのアイデアの上に構築する創造的なブレーンストーミング
  • 議論と合意から利益を得る意思決定
  • 学際的な対話が必要な複雑な問題
  • 複数の専門家の視点を必要とする品質管理と検証
  • 作成とレビューを明確に分離したコンテンツ ワークフロー

グループ チャット オーケストレーションを回避するタイミング

次の場合は、このパターンを避けてください。

  • 単純なタスク委任または単純な線形パイプラインで十分です
  • リアルタイムの速度要件によって、議論のオーバーヘッドが実用的ではない
  • 階層型または確定的なワークフローは、ディスカッションなしで必要です
  • チャット マネージャーは、タスクが完了したタイミングを明確に判断できません
  • 会話フローの管理が複雑になりすぎ、特に多くのエージェントで (制御を容易にするために 3 つ以下に制限)

Maker-checker ループ

一般的な特殊なケースは、メーカー チェッカー ループです。 ここでは、あるエージェント (作成者) がコンテンツまたはソリューションを提案し、別のエージェント (チェッカー) がそれらをレビューして批判します。 チェッカーはフィードバックを作成者に送り返すことができ、結果が満足できるまでこのサイクルが繰り返されます。 このプロセスには、チャット マネージャーによって管理されるターンベースのシーケンスが必要です。

グループ チャット オーケストレーションを実装する

Microsoft Agent Framework SDK を使用してグループ チャット オーケストレーション パターンを実装します。

  1. チャット クライアントを作成する
    AI サービス プロバイダーに接続するための適切な資格情報を使用してチャット クライアント ( AzureOpenAIChatClient など) を設定します。

  2. エージェントを定義する
    チャット クライアントの create_agent メソッドを使用してエージェント インスタンスを作成します。 各エージェントには、特定の指示と、その役割と専門知識領域を定義する名前が必要です。

  3. グループ チャット ワークフローを構築する
    GroupChatBuilder クラスを使用して、複数のエージェントを並列で実行できるワークフローを作成します。 participants() メソッドを使用してエージェント インスタンスを参加者として追加し、build()を呼び出してワークフローを作成します。

  4. ワークフローを実行する
    エージェントに作業させたいタスクや入力を渡して、ワークフローのrunメソッドを呼び出します。 ワークフローは、すべてのエージェントを同時に実行し、結果を含むイベントを返します。

  5. 結果を処理する
    get_outputs()を使用してワークフロー イベントから出力を抽出します。 結果には、すべてのエージェントからの会話が結合され、各エージェントの応答が最終的な出力に含まれます。

  6. 集計された応答を処理する
    すべてのエージェントから集計されたメッセージを処理します。 各メッセージには作成者名とコンテンツが含まれており、各応答を提供したエージェントを識別できます。

グループ チャット マネージャーのカスタマイズ

基本 GroupChatManager クラスを拡張することで、カスタム グループ チャット マネージャーを作成できます。 この方法では、次の操作を制御できます。

  • 会話の結果をフィルター処理または要約する方法
  • 次のエージェントの選択方法
  • ユーザー入力を要求するタイミング
  • 会話を終了するタイミング

カスタム マネージャーを使用すると、ユース ケースに合わせて調整された特殊なロジックを実装できます。

グループ チャット マネージャーの通話順序

会話の各ラウンド中に、チャット マネージャーは次の順序でメソッドを呼び出します。

  1. should_request_user_input - 次のエージェントが応答する前に、人間の入力が必要かどうかを確認します。
  2. should_terminate - 会話を終了するかどうかを決定します (たとえば、最大ラウンド数に達した場合など)。
  3. filter_results - 終了する場合は、最終的な会話を要約または処理します。
  4. select_next_agent - 続行する場合は、話す次のエージェントを選択します。

これにより、会話を進める前に、ユーザーの入力と終了の条件が確実に処理されます。 動作を変更するには、カスタム マネージャーでこれらのメソッドをオーバーライドします。

グループ チャット オーケストレーションを使用すると、複数の AI エージェント (必要に応じて人間) が、ガイド付き会話と反復的なフィードバックを通じて共同作業を行うことができます。 多様な専門知識と動的な相互作用の恩恵を受ける複雑なタスクに最適です。 慎重な管理が必要ですが、このパターンは、意思決定と創造的なワークフローの透明性と柔軟性を提供します。 Microsoft Agent Framework SDK を使用すると、ニーズに合わせてグループ チャット オーケストレーションを簡単に実装およびカスタマイズできます。