Microsoft 365 エージェント SDKは、会話エージェントを構築するための開発フレームワークです。 会話エージェントは、ユーザーからメッセージを受信し、処理し、応答できるソフトウェアです。 これは、メッセージを送信するユーザー (Teams、Web サイト、Slack など) と、そのメッセージに応答するために構築したロジックの間の配管レイヤーと考えてください。
SDK は、異なるサーフェス間でのメッセージの受信と送信の仕組みを処理するため、開発者は低レベルの通信プロトコルではなく、エージェントが実際に行うことに集中できます。
サポートされている言語
Agents SDK では、次の機能がサポートされます。
- .NET 8.0 SDK を使用した C#
- Node.js バージョン 18 以降を使用する JavaScript
- バージョン 3.9 から 3.11 を使用するPython
Agents SDK で解決される 3 つの問題
エージェントは複数の場所で作業する必要があります。 ユーザー全員が同じチャネルを介して通信するわけではありません。 Microsoft Teamsを使用する場合もあれば、Microsoft 365 Copilotを使用する場合もあれば、会社の Web サイトを使用する場合もあれば、Slack や Facebook Messenger などのMicrosoft以外のツールを使用するものもあります。 フレームワークがない場合、開発者は、それぞれのサーフェスに対して個別の統合コードを記述し、それぞれに独自のメッセージ形式、認証スキーム、接続プロトコルを記述する必要があります。
SDK には、チャネル抽象化レイヤーが用意されています。 エージェント ロジックを 1 回記述すると、SDK は受信メッセージと送信メッセージを各チャネルが想定する形式で変換します。 新しいチャネルを追加する場合、エージェントのコア動作を書き換える必要はありません。
1 つの AI サービスにロックされたくありません。 エージェントの機能を提供する AI サービスの選択は、Azure AI Foundry、OpenAI、Semantic Kernel、その他の何かなど、状況の変化やユース ケースの変化に応じて頻繁に変化します。 特定の AI プロバイダーでベイクするエージェント フレームワークでは、その選択が変更されたときに、開発者はコードの大部分を書き換える必要があります。
SDK は設計上 AI に依存しません。 メッセージの受信、状態の管理、およびルーティング イベントのスキャフォールディングを提供しますが、応答の生成内容については想定しません。 開発者は、好きな AI サービスまたはオーケストレーション ライブラリをプラグインします。 SDK はその選択の邪魔になりません。
会話状態の処理は困難です。 会話はステートレスではありません。 ユーザーがフォローアップの質問をしたり、2 ターン前に言ったことを参照したり、会話を破棄して後で再開したりする場合があります。 何が起こったか、どこに格納されているか、メッセージ間をどのように流れるかを追跡するなど、そのコンテキストを管理することは面倒で、エラーが発生しやすく、ゼロから構築しやすくなります。
SDK には、状態とストレージの管理が組み込まれています。 ターンの概念 (会話内の 1 つの作業単位) を紹介し、開発者が独自の永続化レイヤーを結び付けなくても、ターン間で状態を追跡します。 つまり、定型コードが少なく、会話フロー ロジックのバグも少なくなります。
組み合わせる方法
その中核となる SDK は、メッセージが到着したときに次の 3 つの処理を行います。
送信したチャネル (Teams、Web チャット、Slack など) からメッセージを受信し、
Activityと呼ばれる共通の形式に正規化します。エージェント コード内の適切なハンドラーにアクティビティをルーティングします。 たとえば、メッセージ アクティビティは 1 つのハンドラーをトリガーし、会話に参加しているユーザーは別のハンドラーをトリガーします。
同じチャネルを介して応答を返送し、応答をチャネルが想定する形式に変換します。
開発者は、関心のあるアクティビティの種類のハンドラーを記述します。 SDK は、認証、メッセージ形式の変換、チャネル接続など、他のすべての処理を行います。
Agents SDK にはないもの
Agents SDK は、AI モデル、オーケストレーション エンジン、またはコードなしビルダーではありません。 エージェント SDK は、エージェントが話す内容を決定しません。 これらの要素は、開発者がエージェントに接続する AI サービスまたはビジネス ロジックのジョブです。 Agents SDK は、会話の状態を保ちながら、確実にチャネル間でそのロジックとの間でメッセージの送受信を行うフレームワークです。