Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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_idniet ingesteld om op basis van het mediatype een zoekanalysefunctie voor documenten, audio of video te selecteren. - Instellen
max_wait=Nonewanneer de uitvoering moet wachten tot de analyse is voltooid. - Gebruik
FileSearchConfigvoor tokenefficiënte extractie uit grote geëxtraheerde documenten. - Hergebruik een
AgentSessionom de status van het geanalyseerde document tussen beurten te behouden.
Volgende stappen
Ga dieper in: