Microsoft エージェント フレームワークの Foundry Tools の Azure Content Understanding 統合は、添付ファイルのコンテキスト プロバイダーを提供します。 プロバイダーは、エージェント入力でサポートされているドキュメント、画像、オーディオ、ビデオを検出し、ファイルを分析し、Markdown フィールドと抽出されたフィールドをモデル コンテキストに追加します。
前提条件
- Azure サブスクリプション。 無料のAzure サブスクリプションを作成できます。
- Content Understanding が構成されたMicrosoft Foundry リソース。 セットアップ手順については、「Microsoft Foundry リソースの作成を参照してください。 リソースがサポートされているリージョン内にあるかどうかを確認します。
- リソース用に構成された既定のモデル デプロイ。 Foundry モデルのデプロイを参照してください。
- Python 3.10 以降。
- サンプルが
AzureCliCredentialで認証できるように、Azure CLI (az login) でサインインします。
この統合を使用する理由
- 添付ファイルの自動処理。 フレームワークは各モデル呼び出しの前にプロバイダーを呼び出すので、アナライザーを直接呼び出すことはありません。
- マルチモーダル入力。 プロバイダーは、ドキュメント、画像、オーディオ、ビデオを受け入れます。
- 構造化された出力。 プロバイダーは、Markdown フィールドと抽出されたフィールドをモデル コンテキストに追加できます。
- 遅延処理。 構成可能な待機時間により、実行時間の長い分析をバックグラウンドで続行できます。 オプションのファイル検索では、抽出された Markdown を取得拡張生成 (RAG) 用のベクター ストアにアップロードできます。
パッケージをインストールする
Microsoft Agent Framework の Content Understanding 統合パッケージをインストールします。 統合は、PyPI でも利用できる agent-framework-azure-contentunderstanding パッケージに付属しています。
pip install agent-framework-azure-contentunderstanding --pre
Note
--pre フラグは、パッケージの現在のプレリリース ビルドをインストールします。
Content Understanding をコンテキスト プロバイダーとして登録する
ContentUnderstandingContextProviderを作成し、context_providers パラメーターを使用してエージェントに渡し、プロバイダーの async with ブロック内でエージェントを実行します。 次の例では、添付ドキュメントに関する質問に回答します。
import asyncio
from agent_framework import Agent, AgentSession, Message, Content
from agent_framework.foundry import FoundryChatClient
from agent_framework.foundry import ContentUnderstandingContextProvider
from azure.identity import AzureCliCredential
credential = AzureCliCredential()
cu = ContentUnderstandingContextProvider(
endpoint="https://my-resource.cognitiveservices.azure.com/",
credential=credential,
# Block until analysis completes before sending to the model.
max_wait=None,
)
client = FoundryChatClient(
project_endpoint="https://your-project.services.ai.azure.com",
model="gpt-5.2",
credential=credential,
)
async def main():
async with cu:
agent = Agent(
client=client,
name="DocumentQA",
instructions="You are a helpful document analyst.",
context_providers=[cu],
)
session = AgentSession()
response = await agent.run(
Message(role="user", contents=[
Content.from_text("What's on this invoice?"),
Content.from_uri(
"https://raw.githubusercontent.com/Azure-Samples/"
"azure-ai-content-understanding-assets/main/"
"document/invoice.pdf",
media_type="application/pdf",
additional_properties={"filename": "invoice.pdf"},
),
]),
session=session,
)
print(response.text)
asyncio.run(main())
各モデル呼び出しの前に、フレームワークはプロバイダーを呼び出します。 プロバイダーは、サポートされている添付ファイルを検出して分析するため、アナライザーを直接呼び出すことはありません。
プロバイダーの設定
追加のパラメーターを渡してアナライザーを選択し、プロバイダーが返すコンテンツの量を制御します。
| パラメーター | Purpose |
|---|---|
endpoint |
Microsoft Foundry リソースのエンドポイント。 省略した場合、プロバイダーは AZURE_CONTENTUNDERSTANDING_ENDPOINT 環境変数から読み取ります。 |
credential |
MICROSOFT ENTRA ID認証用の API キー認証のAzureKeyCredential、またはAzureCliCredentialやDefaultAzureCredentialなどのAzure ID 資格情報。 |
analyzer_id |
事前構築済みまたはカスタム アナライザー ID。 このパラメーターを省略すると、プロバイダーはドキュメントと画像の prebuilt-documentSearch 、オーディオの prebuilt-audioSearch 、ビデオの prebuilt-videoSearch を選択します。 |
max_wait |
分析をバックグラウンドに遅延するまでに待機する秒数。 既定値は 5 秒です。 分析が完了するまで待機するには、 None に設定します。 |
output_sections |
モデル コンテキストに追加する結果セクション。 既定のセクションは Markdown とフィールドです。 |
file_search |
モデル コンテキストに完全なコンテンツを追加するのではなく、抽出された Markdown をベクター ストアにアップロードするためのオプションの構成。 |
Tip
ドメイン固有の抽出の場合は、 analyzer_id を事前構築済みまたはカスタム アナライザー ID に設定します。 プロバイダーは次に、アナライザーのフィールドをモデル コンテキストに追加します。
サポートされているファイルの種類
プロバイダーは、ドキュメント、画像、オーディオ、ビデオを受け入れます。 サポートされている形式とサイズの制限の完全な一覧については、 Content Understanding サービスのクォータと制限に関するページを参照してください。