セマンティック カーネル エージェントオーケストレーション

Von Bedeutung

エージェント フレームワークのエージェント オーケストレーション機能は、試験段階にあります。 これらはアクティブな開発中であり、プレビューまたはリリース候補ステージに進む前に大幅に変更される可能性があります。

セマンティック カーネルのエージェント オーケストレーション フレームワークを使用すると、開発者は複雑なエージェント ワークフローを簡単に構築、管理、スケーリングできます。

マルチエージェント オーケストレーションの理由

従来の単一エージェント システムでは、複雑な多面的なタスクを処理する機能が制限されています。 それぞれが特殊なスキルまたは役割を持つ複数のエージェントを調整することで、より堅牢で適応性があり、現実世界の問題を共同で解決できるシステムを作成できます。 セマンティック カーネルでのマルチエージェント オーケストレーションは、このようなシステムを構築するための柔軟な基盤を提供し、さまざまな調整パターンをサポートします。

オーケストレーション パターン

よく知られているクラウド設計パターンと同様に、エージェント オーケストレーション パターンは、共通の目標に向けて連携するように複数のエージェントを調整するためのテクノロジに依存しないアプローチです。 パターン自体の詳細については、 AI エージェントオーケストレーション パターン のドキュメントを参照してください。

セマンティック カーネルでサポートされているオーケストレーション パターン

セマンティック カーネルでは、これらのオーケストレーション パターンを SDK に直接実装することでサポートされます。 これらのパターンはフレームワークの一部として使用でき、エージェントのコラボレーション シナリオを調整できるように簡単に拡張またはカスタマイズできます。

パターン 説明 一般的なユース ケース
同時 タスクをすべてのエージェントにブロードキャストし、結果を個別に収集します。 並列分析、独立したサブタスク、アンサンブルの意思決定。
順次 定義された順序で、1 つのエージェントから次のエージェントに結果を渡します。 ステップ バイ ステップのワークフロー、パイプライン、マルチステージ処理。
ハンドオフ の コンテキストまたはルールに基づいてエージェント間で制御を動的に渡します。 動的ワークフロー、エスカレーション、フォールバック、またはエキスパートハンドオフのシナリオ。
グループ チャット すべてのエージェントは、グループ マネージャーによって調整されたグループ会話に参加します。 ブレーンストーミング、協調的な問題解決、コンセンサス構築。
マゼンティック MagenticOne から着想を得たグループ チャットのようなオーケストレーション。 複雑で一般化されたマルチエージェントコラボレーション。

シンプルで開発者に優しい

すべてのオーケストレーション パターンは、構築と呼び出しのための統合インターフェイスを共有します。 どのオーケストレーションを選択しても、次の手順を実行できます。

  • エージェントとその機能を定義する方法については、「セマンティック カーネル エージェント」を参照してください。
  • エージェント (および必要に応じてマネージャー) を渡してオーケストレーションを作成します。
  • 必要に応じて、カスタムの入力/出力処理用のコールバックまたは変換を提供します。
  • ランタイムを開始し、タスクを使用してオーケストレーションを呼び出します。
  • 一貫性のある非同期的な方法で結果を待機します。

この統合アプローチにより、新しい API を学習したり、エージェント ロジックを書き換えたりすることなく、オーケストレーション パターンを簡単に切り替えることができます。 このフレームワークは、エージェントの通信、調整、結果の集計の複雑さを取り除き、アプリケーションの目標に集中できます。

// Choose an orchestration pattern with your agents
SequentialOrchestration orchestration = new(agentA, agentB)
{
    LoggerFactory = this.LoggerFactory
};  // or ConcurrentOrchestration, GroupChatOrchestration, HandoffOrchestration, MagenticOrchestration, ...

// Start the runtime
InProcessRuntime runtime = new();
await runtime.StartAsync();

// Invoke the orchestration and get the result
OrchestrationResult<string> result = await orchestration.InvokeAsync(task, runtime);
string text = await result.GetValueAsync();

await runtime.RunUntilIdleAsync();
# Choose an orchestration pattern with your agents
orchestration = SequentialOrchestration(members=[agent_a, agent_b])
# or ConcurrentOrchestration, GroupChatOrchestration, HandoffOrchestration, MagenticOrchestration, ...

# Start the runtime
runtime = InProcessRuntime()
runtime.start()

# Invoke the orchestration
result = await orchestration.invoke(task="Your task here", runtime=runtime)

# Get the result
final_output = await result.get()

await runtime.stop_when_idle()

注

エージェント オーケストレーションは、Java SDK ではまだ使用できません。

開発環境の準備

先に進む前に、次のパッケージをプロジェクトに追加します。

dotnet add package Microsoft.SemanticKernel.Agents.Orchestration --prerelease
dotnet add package Microsoft.SemanticKernel.Agents.Runtime.InProcess --prerelease

使用するエージェントの種類によっては、エージェントのそれぞれのパッケージを追加する必要がある場合もあります。 詳細については、 エージェントの概要 を参照してください。

次のステップ