このクイックスタートでは、Agent 365のツール、通知、可観測性を使用して動作する JavaScript LangChain エージェントを設定し、Agents Playground と Teams でエージェントをテストする手順について説明します。
Prerequisites
- Visual Studio Codeを使用する場合は、.NETがインストールされている必要があります。 (.NET 8.0 をお勧めします)。
- Node.js (バージョン 18 以降)
- LangChain
- エージェントのプレイグラウンド
- Npm (Node パッケージ マネージャー) へのアクセスが NodeJS と共にインストールされている
- GitHubへのアクセス
- 既存の AI エージェント プロジェクト。 このクイック スタートでは、Microsoft 365 エージェント ツールキット VS Code の ATK とも呼ばれるエージェント 365 サンプル エージェントを使用します。
- A365 CLI
- エージェント ID 認証
Microsoft 365 Agents Toolkit から LangChain + Node.js サンプルを設定する
すべてを準備するには、VS Code に Microsoft 365 Agents Toolkit をインストールし、サンプル ギャラリーを開き、LangChain + Node.js サンプルをローカルでスキャフォールディングして、後で構成して実行できるようにします。 以下のスクリーンショットは、操作を進める際に表示される内容の例を示しています。
Visual Studio Code を開いた後、Extensions パネルを Ctrl+Shift+X で開きます。
検索バーに、Agents Toolkit と入力します。
結果が次のスクリーンショットのように表示されます。
Microsoft 365 Agents Toolkit を選択します。
インストールを選択します。
VS Code には、次のような拡張機能の詳細ビューが表示されます。
インストールすると、左側のナビゲーション バーに M365 Agents Toolkit アイコンが表示されます。
これを選択して、ウェルカム エクスペリエンスを開きます。
次に示すように、宣言型エージェントの構築、新しいエージェント/アプリの作成、サンプルの表示などのオプションが表示されます。
サンプルの表示を選択します。
サンプルの一覧で、スクロールして LangChain + Node.js エージェント サンプルを見つけます。
それを選択します。
Create (ローカルでスキャフォールディング) または View on GitHub の 2 つの選択肢があります。
[作成]を選択します。
プロンプトが表示されたら、サンプルを生成するマシン上のフォルダを選択してください。 例えば:
C:\A365-Ignite-Demoツールキットは、LangChain + Node.js サンプルをサブフォルダ (sample_agent など) に展開し、その後自動的に VS Code で開きます。
スキャフォールディングが完了すると、マシンに完全に機能する LangChain + Node.js エージェント プロジェクトが作成されます
必須の Agent 365 パッケージをインストールする
サンプルを実行する前に、プロジェクト内の package.json を開き、必要なすべての Agent 365 と Agent Framework の依存関係が一覧表示されていることを確認します。 Microsoft 365 Agents Toolkit によって生成されたサンプルには、既にこれらのエントリが含まれています。
package.json を確認した後は、次を実行してすべてをインストールします。
npm install
これにより、すべての Agent 365 ライブラリ、Agent Framework の依存関係、ホスティング コンポーネント、およびサンプルで定義されているその他の依存関係がダウンロードされます。 インストール後、開発サーバーを起動して、プロジェクトのビルドと実行を確認します
npm run dev
Microsoft 365 ツールの追加 (MCP サーバー)
CLI の a365 開発コマンドを使用することで、MCP サーバーを探索および管理できます。
Microsoft MCPツールを使うことで、以下のようなことができます:
- 使用可能な MCP サーバーを検出する
- エージェントの構成に 1 つ以上の MCP サーバーを追加する
- 現在構成されている MCP サーバーを確認する
- 不要になった MCP サーバーを削除する
MCP サーバーが追加されると、エージェントのツール マニフェストが拡張され、次のようなエントリが含まれます。
{
"mcpServers": [
{
"mcpServerName": "mcp_MailTools",
"mcpServerUniqueName": "mcp_MailTools",
"scope": "McpServers.Mail.All",
"audience": "api://00001111-aaaa-2222-bbbb-3333cccc4444"
}
]
}
通知サブスクリプションと処理
サンプル エージェントは、onAgentNotification("*") を使用して Agent 365 のすべての通知を購読し、それらを 1 つのハンドラーにルーティングします。 このハンドラーにより、エージェントは直接的なユーザー メッセージだけでなく、バックグラウンドやシステム イベントにも反応できるようになります。
次のコードは、agent.ts ファイルでの通知の構成方法を示しています。
constructor() {
super();
this.onAgentNotification("agents:*", async(context, state, activity) => {
await this.handleAgentNotificationActivity(context, state, activity);
});
}
async handleAgentNotificationActivity(context, state, activity)
{
await context.sendActivity("Received an AgentNotification!");
// Add custom handling here
}
Observability
Important
このサンプルは非推奨のAgent 365 Observability SDKを使用しています。 このパターンは新しいオブザーバビリティ連携には使わないでください。 代わりにMicrosoft OpenTelemetry Distroを使いましょう。
以下のスニペットは、廃止されたAgent 365 Observability SDKを初期化し、各エージェント呼び出しを InferenceScope でラップして、入力、出力、メタデータを自動的にキャプチャできるようにします。
以下のコードは、client.ts ファイルにおける簡素化された可観測性の例を示しています。
const sdk = ObservabilityManager.configure(b =>
b.withService('<service-name>', '<version>')
);
sdk.start();
async invokeAgentWithScope(prompt: string) {
const scope = InferenceScope.start(
{
operationName: InferenceOperationType.CHAT,
model: '<llm-name>'
},
{
agentId: '<agent-id>',
agentName: '<agent-name>',
conversationId: '<conv-id>'
},
{ tenantId: '<tenant-id>' }
);
const response = await this.invokeAgent(prompt);
scope?.recordInputMessages([prompt]);
scope?.recordOutputMessages([response]);
scope?.recordResponseId(`resp-${Date.now()}`);
return response;
}
このスニペットは、Node.js + LangChainサンプルで使用されている廃止されたAgent 365 Observability SDKパターンを示しています。 セットアップおよび移行の完全なガイダンスについては、 廃止されたSDKドキュメントをご覧ください。
エージェントをテストする
必要な環境変数を設定し、認証モードを選択して、エージェントをローカルで起動します。 エージェントを発行して Teams や Outlook などのアプリで使用する場合を除き、Microsoft 365 テナントを必要とせずに、Agents Playground ですべてをエンドツーエンドでテストできます。 詳細な手順については、テストの詳細を参照し、エージェント プレイグラウンドでエージェントのテスト構成を行ってください。
テスト手順の概要
- API キーとモデル設定を
.envファイルに追加し、サンプルが LLM と通信できるようにしてください。 - 認証モードを選択します。 ローカル開発では、サンプルは Agent Blueprint から作成された値を使用したエージェント型認証をサポートします。
- エージェントをローカルで起動し、Agents Playground などのツールに公開します。
- Agents Playground を使用して、テナントの設定や何かを展開することなく、メッセージ、ツール、通知をテストできます。
- 実際の動作の準備ができたら、Microsoft 365 テナントを発行し、Teams、Outlook、またはその他のMicrosoft 365サーフェス内でエージェントをテストします。
エージェントを公開する
エージェントが Teams チャット、Outlook メッセージ、Word @mentions などの実際のMicrosoft 365エクスペリエンスの準備ができたら、Microsoft 365 テナントに発行します。
Agent 365のCLIpublishコマンドはパッケージングを担当します。マニフェストを更新し、すべてをバンドルし、エージェントをMicrosoft管理センターにアップロードします。
公開中に、アップロードを完了する前に、エージェントの名前、説明、アイコン、バージョンを確認してカスタマイズします。 公開されると、エージェントが登録され、テナント内にインストールできるようになります。
Important
エージェントを公開した後は、インスタンスを作成する前にDeveloper Portalでエージェントのブループリントを設定しなければなりません。 Developer Portalでエージェントブループリントの設定方法を学びましょう
公開されたエージェントは、次のページで確認できます: https://admin.cloud.microsoft/#/agents/all