Contentbegrip van Azure

ContentUnderstandingContextProvideranalyseert bestandsbijlagen met Azure Content Understanding en injecteert gestructureerde resultaten in de agentcontext. Het ondersteunt documenten, afbeeldingen, audio en video, waaronder OCR, tabellen, gestructureerde velden, transcriptie, diarisatie en segmentoverzichten.

Deze integratie maakt gebruik van het voorverwerkingspatroon: hiermee transformeert u binnenkomende inhoud vóór het aanroepen van het model en kan de verwerkte status behouden voor latere beurten.

Voor grote documenten kan de provider geëxtraheerde markdown uploaden naar een bestandszoekvectorarchief in plaats van het volledige resultaat in de modelcontext te plaatsen.

Prerequisites

  • Een Azure-abonnement.
  • Azure Content Understanding in een ondersteunde regio.
  • De vereiste modelimplementaties van de service.
  • Azure identiteitstoegang tot de resource.

Installeer het pakket

pip install agent-framework-azure-contentunderstanding --pre

Een document analyseren

Voeg een bijlage toe ContentUnderstandingContextProvider aan de agent en verzend een ondersteunde binaire bijlage. De provider verwijdert de binaire invoer na analyse en levert de geëxtraheerde inhoud aan het model.

async def main() -> None:
    credential = AzureCliCredential()

    # Set up Azure Content Understanding context provider
    cu = ContentUnderstandingContextProvider(
        endpoint=os.environ["AZURE_CONTENTUNDERSTANDING_ENDPOINT"],
        credential=credential,
        analyzer_id="prebuilt-documentSearch",  # RAG-optimized document analyzer
        max_wait=None,  # wait until CU analysis finishes (no background deferral)
    )

    # Set up the LLM client
    client = FoundryChatClient(
        project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
        model=os.environ["FOUNDRY_MODEL"],
        credential=credential,
    )

    # Create agent with CU context provider.
    # The provider extracts document content via CU and injects it into the
    # LLM context so the agent can answer questions about the document.
    async with credential, cu:
        agent = Agent(
            client=client,
            name="DocumentQA",
            instructions=(
                "You are a helpful document analyst. Use the analyzed document "
                "content and extracted fields to answer questions precisely."
            ),
            context_providers=[cu],
        )

        # --- Turn 1: Upload PDF and ask a question ---
        # 4. Upload PDF and ask questions
        # The CU provider extracts markdown + fields from the PDF and injects
        # the full content into context so the agent can answer precisely.
        print("--- Upload PDF and ask questions ---")

        pdf_bytes = SAMPLE_PDF_PATH.read_bytes()

        response = await agent.run(
            Message(
                role="user",
                contents=[
                    Content.from_text(
                        "What is this document about? Who is the vendor, and what is the total amount due?"
                    ),
                    Content.from_data(
                        pdf_bytes,
                        "application/pdf",
                        # Always provide filename — used as the document key
                        additional_properties={"filename": SAMPLE_PDF_PATH.name},
                    ),
                ],
            )
        )
        usage = response.usage_details or {}
        print(f"Agent: {response}")
        print(f"  [Input tokens: {usage.get('input_token_count', 'N/A')}]\n")

Verwerkingsopties

  • Laat analyzer_id niet ingesteld om op basis van het mediatype een zoekanalysefunctie voor documenten, audio of video te selecteren.
  • Instellen max_wait=None wanneer de uitvoering moet wachten tot de analyse is voltooid.
  • Gebruik FileSearchConfig voor tokenefficiënte extractie uit grote geëxtraheerde documenten.
  • Hergebruik een AgentSession om de status van het geanalyseerde document tussen beurten te behouden.

Volgende stappen 

Ga dieper in: