Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
ContentUnderstandingContextProvideranalizuje załączniki plików za pomocą Azure Content Understanding i wprowadza wyniki ustrukturyzowane do kontekstu agenta. Obsługuje dokumenty, obrazy, dźwięk i wideo, w tym OCR, tabele, pola strukturalne, transkrypcję, diaryzacja i podsumowania segmentów.
Ta integracja wykorzystuje wzorzec wstępnego przetwarzania: przekształca przychodzące treści przed wywołaniem modelu i może zachować przetworzony stan na potrzeby kolejnych tur.
W przypadku dużych dokumentów dostawca może przesłać wyodrębnioną treść w formacie Markdown do wektorowego magazynu danych funkcji File Search zamiast umieszczać cały wynik w kontekście modelu.
Wymagania wstępne
- Subskrypcja platformy Azure.
- Azure Content Understanding w obsługiwanym regionie.
- Wymagane wdrożenia modelu usługi.
- Dostęp tożsamości platformy Azure do zasobu.
Instalowanie pakietu
pip install agent-framework-azure-contentunderstanding --pre
Analizowanie dokumentu
Dołącz ContentUnderstandingContextProvider do agenta i wyślij obsługiwany załącznik binarny. Dostawca usuwa dane wejściowe binarne po analizie i dostarcza wyodrębnionej zawartości do modelu.
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")
Opcje przetwarzania
- Pozostaw
analyzer_idopcję niezastawioną, aby wybrać analizator wyszukiwania dokumentów, dźwięku lub wideo z typu nośnika. - Ustaw
max_wait=None, gdy uruchomienie musi czekać na ukończenie analizy. - Użyj
FileSearchConfig, aby efektywnie pod względem tokenów wyszukiwać w dużych wyodrębnionych dokumentach. Określ zakres magazynu wektorów i odpowiedniego narzędziafile_searchdla docelowego użytkownika, dzierżawcy lub grupy udostępniania. - Użyj ponownie elementu
AgentSession, aby zachować stan analizowanego dokumentu między turami. Sesja nie izoluje pobierania z udostępnionego magazynu wektorów.
Następne kroki
Głębiej: