Microsoft エージェント フレームワークで Content Understanding を使用する

Microsoft エージェント フレームワークの Foundry Tools の Azure Content Understanding 統合は、添付ファイルのコンテキスト プロバイダーを提供します。 プロバイダーは、エージェント入力でサポートされているドキュメント、画像、オーディオ、ビデオを検出し、ファイルを分析し、Markdown フィールドと抽出されたフィールドをモデル コンテキストに追加します。

前提条件

この統合を使用する理由

  • 添付ファイルの自動処理。 フレームワークは各モデル呼び出しの前にプロバイダーを呼び出すので、アナライザーを直接呼び出すことはありません。
  • マルチモーダル入力。 プロバイダーは、ドキュメント、画像、オーディオ、ビデオを受け入れます。
  • 構造化された出力。 プロバイダーは、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 サービスのクォータと制限に関するページを参照してください。

次のステップ