Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
ContentUnderstandingContextProvideranaliza los datos adjuntos de archivos con Azure Content Understanding e inserta resultados estructurados en el contexto del agente. Admite documentos, imágenes, audio y vídeo, incluidos OCR, tablas, campos estructurados, transcripción, diarización y resúmenes de segmentos.
Esta integración usa el patrón de preprocesamiento: transforma el contenido entrante antes de la invocación del modelo y puede conservar el estado procesado para turnos posteriores.
Para documentos grandes, el proveedor puede cargar el contenido extraído en formato Markdown en un almacén vectorial para la búsqueda de archivos en lugar de incluir todo el resultado en el contexto del modelo.
Prerequisites
- Una suscripción a Azure.
- Azure Content Understanding en una región admitida.
- Implementaciones de modelos necesarias para el servicio.
- Acceso de identidad de Azure al recurso.
Instalar el paquete
pip install agent-framework-azure-contentunderstanding --pre
Análisis de un documento
Adjunte ContentUnderstandingContextProvider al agente y envíe un archivo adjunto binario compatible. El proveedor quita la entrada binaria después del análisis y proporciona el contenido extraído al modelo.
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")
Opciones de procesamiento
- Deje
analyzer_idsin configurar para seleccionar un analizador de búsqueda para documentos, audio o vídeo según el tipo de medio. - Establezca
max_wait=Nonecuando la ejecución debe esperar a que se complete el análisis. - Utilice
FileSearchConfigpara la recuperación con uso eficiente de tokens en documentos extraídos de gran tamaño. - Reutilice un
AgentSessionpara conservar el estado del documento analizado entre turnos.
Pasos siguientes
Vaya más profundamente: