Microsoft 365 エージェント SDK は、対話型エージェントを構築するための開発フレームワークです。 会話型エージェントは、ユーザーからのメッセージを受け取り、処理し、応答できるソフトウェアです。 これは、ユーザーがメッセージを送信する(Teams、ウェブサイト、Slackなど)と、そのメッセージに応答するために構築したロジックの間にある中間層と考えてください。
SDKは、異なるチャネル間でのメッセージの送受信の仕組みを処理するため、開発者は低レベルの通信プロトコルではなく、エージェントが実際に何を行うかに集中できます。
サポートされている言語
エージェントSDKは以下をサポートしています:
- .NET 8.0 SDK を使用した C#
- JavaScript(Node.js バージョン18以降に対応)
- Python(バージョン3.9~3.11に対応)
Agents SDKが解決する3つの問題
エージェントは複数の場所で動作する必要があります。 ユーザー全員が同じチャネルでやりとりしているわけではありません。 Microsoft TeamsやMicrosoft 365 Copilot、会社のウェブサイト、またはSlackやFacebook Messengerなどの非Microsoft製ツールを利用しているユーザーもいます。 フレームワークがない場合、開発者はそれぞれのチャネルごとに、独自のメッセージ形式、認証方式、接続プロトコルを持つ個別の統合コードを書く必要があります。
SDKはチャネル抽象化層を提供します。 エージェントのロジックを一度記述すれば、SDKが各チャネルのフォーマットに合わせて入出力メッセージを変換します。 新しいチャネルを追加しても、エージェントのコア機能を書き直す必要はありません。
単一のAIサービスに縛られたくありません。 どのAIサービス(Azure AI Foundry、OpenAI、Semantic Kernel、またはその他)がエージェントを動かすかという選択は、環境の変化や新たなユースケースの登場により頻繁に変わります。 特定のAIプロバイダーを組み込むエージェントフレームワークでは、その選択が変わった場合、コードの大部分を書き直さなければなりません。
SDKはAIに依存しない設計です。 メッセージの受信、状態管理、イベントのルーティングのための基盤を提供しますが、どのAIサービスやオーケストレーションライブラリが応答を生成するかについては一切想定していません。 開発者は、好きなAIサービスやオーケストレーションライブラリを自由に組み込むことができます。 SDKはその選択に干渉しません。
会話状態の管理は難しいです。 会話はステートレスではありません。 ユーザーは追加の質問をしたり、2ターン前の発言を参照したり、会話を中断して後で再開したりすることがあります。 そのコンテキストの管理、つまり何が起こったのか、どこに保存されているのか、メッセージ間でどのように流れるのかを追跡することは、ゼロから構築すると手間がかかり、エラーが発生しやすい作業です。
SDKは組み込みの状態管理およびストレージ管理を提供します。 SDKは、ターン(会話中の単一の作業単位)という概念を導入し、開発者が独自の永続性レイヤーを構築することなく、ターン間の状態を追跡します。 つまり、定型コードが減り、会話フローロジックのバグも減ります。
組み合わせる方法
SDKの基本機能は、メッセージ受信時に次の3つの処理を行います。
Teams、ウェブチャット、Slackなど、どのチャネルから送信されたメッセージでも受信し、それを
Activityと呼ばれる共通フォーマットに正規化します。アクティビティをエージェントコード内の適切なハンドラーにルーティングします。 例えば、メッセージアクティビティが1つのハンドラーをトリガーし、ユーザーが会話に参加すると別のハンドラーがトリガーされます。
応答を同じチャネルを通じて送り、そのチャネルが期待するフォーマットに変換します。
開発者は、関心のあるアクティビティタイプごとにハンドラーを作成します。 SDKは認証、メッセージフォーマット変換、チャネル接続など、その他すべてを処理します。
エージェント SDK に該当しないこと
このエージェント SDK は、AIモデルでも、オーケストレーションエンジンでも、ノーコードビルダーでもありません。 エージェント SDK は、エージェントの発言内容を決定するものではありません。 これらの機能は、開発者がエージェントに組み込む AI サービスやビジネスロジックが担当します。 エージェント SDK は、複数のチャネルを通じて、会話状態を保持したまま、そのロジックとのメッセージの送受信を確実に行うフレームワークです。