Microsoft Agent Framework を使用して Azure AI エージェントを作成する

完了

Tip

詳細については、「 テキストと画像 」タブを参照してください。

Foundry Agent Service は、Microsoft Agent Framework を使用して構築された運用環境に推奨されるプロバイダーです。 サービス側で永続的な会話履歴を処理し、コード実行やファイル検索などの組み込みツールをサポートし、Azure ID 管理とシームレスに統合します。 これらの機能を使用すると、インフラストラクチャのオーバーヘッドではなく、エージェントの動作に集中できます。

Foundry エージェントの設定

Foundry エージェントの作成と操作は、一貫した一連の手順に従います。

1. Foundry プロジェクトを設定する

コードを記述する前に、デプロイされたモデルを含む Microsoft Foundry プロジェクトが必要です。 次の 2 つの情報を使用してプロジェクトに接続します。

  • Projectエンドポイント- Foundry projectの URL。
  • モデル デプロイ名—エージェントで使用するモデル デプロイの名前。

2. 認証を構成する

Agent Framework は、Azure資格情報を使用して Foundry プロジェクトに接続します。 ほとんどのシナリオでは、DefaultAzureCredentialは環境 (開発中はAzure CLI、運用環境ではマネージド ID) に基づいて適切な資格情報を自動的に解決します。 接続文字列や API キーをハードコーディングする必要はありません。

3. Foundry チャット クライアントを初期化する

資格情報、プロジェクト エンドポイント、モデル名を指定して Foundry チャット クライアントを作成します。 このクライアントは、アプリケーションと Foundry Agent Service の間のブリッジです。 認証、要求ルーティング、およびサービス側セッション管理を処理します。

4. エージェントを作成する

チャット クライアントを使用して、その動作を定義する一連の命令を提供してエージェントを作成します。

  • 指示 — エージェントの役割、目標、制約を定義するシステム プロンプト
  • ツール(省略可能) - エージェントが呼び出してアクションを実行したり、情報を取得したりできるカスタム関数

フレームワークでは、指定したツールが登録され、スキーマが自動的に生成されるため、モデルはそれらを呼び出すタイミングと方法を認識します。

5. セッションを確立してエージェントを実行する

対話を開始するには、エージェント インスタンスを介して セッション を開きます。 セッションは、会話状態のコンテナーとして機能します。 セッションの実行メソッドにユーザー メッセージを送信すると、プロンプトが処理され、必要なツール呼び出しが調整され、モデルの応答が返されます。

複数ターンの会話

エージェントの実行メソッドを 1 回呼び出すと、1 つの交換 (1 つのユーザー メッセージ、1 つの応答) が処理されます。 実際の会話の場合、エージェントは前のターンで何が言われたかを覚えている必要があります。 これが セッション の目的です。

Foundry プロバイダーの場合、セッションは サービス側ストレージによってサポートされます。会話履歴は、アプリケーションのメモリではなく Foundry Agent Service に存在します。

  • 永続的な履歴 - 状態はサービス側に存在するため、アプリケーションが再起動したり、複数のインスタンスにスケールアウトされたりした場合でも、ユーザーの会話は複数の要求にわたって続行できます。

  • ローカル履歴 - サービス側の履歴をサポートしていないプロバイダーの場合、フレームワークはセッション オブジェクト内のメモリ内の会話状態を維持します。 ローカル履歴は、有効期間が短いアプリケーションやステートレス なアプリケーションには適していますが、プロセスの再起動後も保持されません。

非ストリーミング応答とストリーミング応答

Agent Framework では、次の 2 つの応答モードがサポートされています。

  • 非ストリーミング (同期) - 実行メソッドは、エージェントの処理が完了するのを待機し、完全な応答オブジェクトを返します。 非ストリーミングは最も単純なパターンであり、出力を段階的に表示する必要がない場合に適切に機能します。

  • ストリーミング (非同期) - 実行メソッドは、非同期的に反復処理する応答ストリームを返し、モデルによって生成される部分更新を受け取ります。 ストリーミングは、出力を表示するとエクスペリエンスが徐々に向上するユーザー向けインターフェイスに適しています。

どちらの場合も、応答はエージェントの出力からすべてのテキスト コンテンツを集計する text プロパティを公開するため、使用するモードに関係なく最終的な回答を簡単に抽出できます。