Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Nota
Alcune funzionalità di recupero agentico sono disponibili a livello generale nell'API REST 2026-04-01. Tuttavia, questo articolo usa la versione 2026-08-01-preview per illustrare il set di funzionalità completo, incluse le funzionalità che rimangono in anteprima. Le funzionalità di anteprima vengono fornite senza un contratto di servizio e non sono consigliate per i carichi di lavoro di produzione. Per ulteriori informazioni, consultare Condizioni aggiuntive per l'utilizzo di Microsoft Azure per le anteprime.
Importante
Queste funzionalità e funzionalità fanno parte dell'API REST 2026-08-01-preview. L'anteprima 2026-08-01-preview viene concessa in licenza all'utente come parte della sottoscrizione di Azure ed è soggetta alle condizioni applicabili alle "Anteprime" nei Microsoft Product Terms, nel Microsoft Products and Services Data Protection Addendum ("DPA") e nelle Condizioni d'uso supplementari per le anteprime di Microsoft Azure.
La versione 2026-08-01-preview supporta le connessioni ad altri servizi di servizi Microsoft e di terze parti. L'utilizzo di questi servizi è soggetto alle rispettive condizioni e potrebbe comportare l'elaborazione o l'archiviazione dei dati al di fuori del limite di conformità Azure, nonché il flusso dei dati nel limite di conformità Azure.
È tua responsabilità gestire l'eventuale trasferimento dei tuoi dati al di fuori dei confini di conformità e geografici della tua organizzazione e le relative implicazioni, nonché garantire che siano predisposte le autorizzazioni, i limiti e le approvazioni appropriati.
Le implementazioni MCP sono soggette a rischi, ad esempio attacchi, errori a catena e perdita di supervisione umana. È possibile attenuare questi rischi controllando i server MCP per la sicurezza e l'affidabilità, seguendo le procedure consigliate di Microsoft e industry e implementando meccanismi di approvazione e monitoraggio dei comportamenti a catena.
L'utente è responsabile di esaminare e testare attentamente le applicazioni compilate nel contesto dei casi d'uso specifici e di prendere tutte le decisioni e le personalizzazioni appropriate. Ciò include l'implementazione di mitigazioni di intelligenza artificiale responsabili, ad esempio metaprompt, filtri di contenuto o altri sistemi di sicurezza, e garantire che le applicazioni soddisfino gli standard di qualità, affidabilità, sicurezza e attendibilità appropriati. Per altre informazioni, vedere la nota sulla trasparenza Azure AI Search.
Questo articolo illustra come connettere una Knowledge Base in Foundry IQ a un agente nel servizio Foundry Agent. La connessione usa il protocollo MCP (Model Context Protocol) per facilitare le chiamate agli strumenti. Quando viene richiamato dall'agente, la Knowledge Base orchestra le operazioni seguenti:
- Pianifica una query utente e la scompone in sottoquery.
- Elabora le sottoquery contemporaneamente usando le tecniche di parola chiave, vettore o ibrido.
- Applica il reranking semantico per identificare i risultati più rilevanti.
- Sintetizza i risultati in una risposta unificata con riferimenti all'origine.
L'agente utilizza la risposta per fondare le sue risposte sui dati aziendali o sui fonti Web, garantendo precisione e trasparenza fattuali tramite l'attribuzione delle fonti.
Per un esempio end-to-end dell'integrazione di Azure AI Search e del servizio agente Foundry per il recupero delle informazioni, vedere l'esempio agentic-retrieval-pipeline-example Python su GitHub.
Supporto per l'utilizzo
| supporto Microsoft Foundry | PYTHON SDK | SDK di C# | JavaScript SDK | JAVA SDK | REST API | Configurazione dell'agente di base | Configurazione dell'agente standard |
|---|---|---|---|---|---|---|---|
| ✔️ | ✔️ | - | - | - | ✔️ | ✔️ | ✔️ |
Prerequisiti
Un servizio Azure AI Search con una base di conoscenza contenente una o più fonti di conoscenza.
Un progetto Foundry di Microsoft con una distribuzione LLM, ad esempio
gpt-4.1-mini. I progetti basati su hub non sono supportati.Autenticazione e autorizzazioni per il servizio di ricerca e il progetto.
La versione di anteprima più recente dell'SDK Python (versione 2.0.0 o successiva) o la versione 2026-08-01-preview dell'API REST.
pip install "azure-ai-projects>=2.0.0" requests
Autenticazione e autorizzazioni
È consigliabile controllare l'accesso in base al ruolo per le distribuzioni di produzione. Per assegnare i ruoli in questa sezione, è necessario il ruolo Proprietario o Amministratore accesso utenti in entrambe le risorse o un altro ruolo che concede Microsoft.Authorization/roleAssignments/write. Se i ruoli non sono fattibili, ignorare questa sezione e usare invece l'autenticazione basata su chiave.
Nella risorsa padre del progetto, è necessario il ruolo Utente Foundry per accedere alle distribuzioni dei modelli e creare agenti. I proprietari ottengono automaticamente questo ruolo quando creano la risorsa. Altri utenti necessitano di un'assegnazione di ruolo specifica. Per altre informazioni, vedere Controllo degli accessi in base al ruolo nel portale di Foundry.
Importante
I ruoli di Controllo degli accessi in base al ruolo di Foundry sono stati recentemente rinominati. Foundry User, Foundry Owner, Foundry Account Owner e Foundry Project Manager erano precedentemente denominati Azure AI User, Azure AI Owner, Azure AI Account Owner e Azure AI Project Manager. È possibile che i nomi precedenti vengano visualizzati in alcune posizioni durante l'esecuzione della ridenominazione. Gli ID ruolo e le autorizzazioni di base sono invariati dalla ridenominazione.
Nella risorsa padre del progetto, è necessario il ruolo Foundry Project Manager per creare una connessione di progetto per l'autenticazione MCP e il ruolo Foundry User oppure Foundry Project Manager per usare lo strumento MCP negli agenti.
(Facoltativo) Nella risorsa padre del tuo progetto, assegna il ruolo Utente di Servizi cognitivi all'identità gestita assegnata dal sistema del tuo servizio di ricerca. Questo passaggio è obbligatorio solo se la Knowledge Base specifica un LLM. A seconda della configurazione, la Knowledge Base usa questa identità per chiamare LLM per la pianificazione delle query, la sintesi delle risposte o entrambi. Per altre informazioni, vedere Connettersi a Azure AI Search usando un'identità gestita.
Nel progetto creare un'identità gestita assegnata dal sistema per le interazioni con Azure AI Search.
Valori obbligatori
Usare i valori seguenti negli esempi di codice.
| Valore | Dove ottenerlo | Esempio |
|---|---|---|
endpoint del progetto (project_endpoint) |
Trovarlo nei dettagli del progetto nel portale di Microsoft Foundry. | https://your-resource.services.ai.azure.com/api/projects/your-project |
ID risorsa del progetto (project_resource_id) |
Copiare l'ID risorsa arm del progetto dal portale di Azure oppure usare interfaccia della riga di comando di Azure per eseguire query sull'ID risorsa. Il progetto Microsoft Foundry deve avere il namespace Microsoft.CognitiveServices/accounts. |
/subscriptions/.../resourceGroups/.../providers/Microsoft.CognitiveServices/accounts/.../projects/... |
Endpoint di Azure AI Search (search_service_endpoint) |
Trovarlo nella pagina del servizio Azure AI Search Overview (URL del servizio) nel portale di Azure. | https://your-search-service.search.windows.net |
Nome della Knowledge Base (knowledge_base_name) |
Usare il nome della Knowledge Base creata in Azure AI Search. | hr-policy-kb |
Nome connessione progetto (project_connection_name) |
Scegliere un nome per la connessione al progetto creata. | my-kb-mcp-connection |
Nome agente (agent_name) |
Scegliere un nome per la versione dell'agente creata. | hr-assistant |
Nome distribuzione del modello (deployed_LLM) |
Trovalo nelle distribuzioni del modello di progetto di Microsoft Foundry. | gpt-4.1-mini |
Suggerimento
È consigliabile archiviare l'endpoint del progetto, l'endpoint di ricerca e il nome della Knowledge Base in un .env file per lo sviluppo locale.
Creare una connessione al progetto
Creare una connessione RemoteTool nel progetto Foundry Microsoft. Questa connessione usa l'identità gestita del progetto per indirizzare l'endpoint MCP della Knowledge Base, consentendo all'agente di comunicare in modo sicuro con Azure AI Search per le operazioni di recupero.
Nota
La categoria />
import requests
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
# Provide connection details
credential = DefaultAzureCredential()
project_resource_id = "{project_resource_id}" # e.g. /subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.CognitiveServices/accounts/{account_name}/projects/{project_name}
project_connection_name = "{project_connection_name}"
mcp_endpoint = "{search_service_endpoint}/knowledgebases/{knowledge_base_name}/mcp?api-version=2026-08-01-preview" # This endpoint enables the MCP connection between the agent and knowledge base
# Get bearer token for authentication
bearer_token_provider = get_bearer_token_provider(credential, "https://management.azure.com/.default")
headers = {
"Authorization": f"Bearer {bearer_token_provider()}",
}
# Create project connection
response = requests.put(
f"https://management.azure.com{project_resource_id}/connections/{project_connection_name}?api-version=2025-10-01-preview",
headers = headers,
json = {
"name": project_connection_name,
"type": "Microsoft.MachineLearningServices/workspaces/connections",
"properties": {
"authType": "ProjectManagedIdentity",
"category": "RemoteTool",
"target": mcp_endpoint,
"isSharedToAll": True,
"audience": "https://search.azure.com/",
"metadata": { "ApiType": "Azure" }
}
}
)
response.raise_for_status()
print(f"Connection '{project_connection_name}' created or updated successfully.")
Ottimizzare le istruzioni dell'agente per il recupero delle informazioni
Per migliorare le chiamate della Knowledge Base e produrre risposte basate su citazione, iniziare con istruzioni simili alle seguenti:
You are a helpful assistant.
Use the knowledge base tool to answer user questions.
If the knowledge base doesn't contain the answer, respond with "I don't know".
When you use information from the knowledge base, include citations to the retrieved sources.
Questo modello di istruzione è ottimizzato per:
- Tassi di chiamata allo strumento MCP più elevati: le direttive esplicite assicurano che l'agente chiami costantemente lo strumento della Knowledge Base anziché basarsi sui dati di training.
- Attribuzione chiara dell'origine: le citazioni semplificano la convalida della provenienza delle informazioni.
Suggerimento
Anche se questo modello fornisce una base solida, valuta e iterare sulle istruzioni sulla base del tuo caso d'uso e dei tuoi obiettivi specifici. Testare diverse varianti per trovare le migliori prestazioni per lo scenario in uso.
Creare un agente con lo strumento MCP
Creare un agente che integra la Knowledge Base come strumento MCP. L'agente usa un prompt di sistema per indicare quando e come chiamare la Knowledge Base. Segue le istruzioni su come rispondere alle domande e gestisce automaticamente la configurazione e le impostazioni degli strumenti nelle sessioni di conversazione.
Aggiungere lo strumento MCP della Knowledge Base con la connessione al progetto creata in precedenza. Questo strumento orchestra la pianificazione, la scomposizione e il recupero delle query tra le fonti di conoscenza configurate. L'agente usa questo strumento per rispondere alle query.
Nota
Le knowledge base di Azure AI Search rendono disponibile lo strumento MCP knowledge_base_retrieve per l'integrazione dell'agente. Questo è l'unico strumento attualmente supportato per l'uso con il servizio agente Foundry.
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import PromptAgentDefinition, MCPTool
from azure.identity import DefaultAzureCredential
# Provide agent configuration details
credential = DefaultAzureCredential()
mcp_endpoint = "{search_service_endpoint}/knowledgebases/{knowledge_base_name}/mcp?api-version=2026-08-01-preview"
project_endpoint = "{project_endpoint}" # e.g. https://your-foundry-resource.services.ai.azure.com/api/projects/your-foundry-project
project_connection_name = "{project_connection_name}"
agent_name = "{agent_name}"
agent_model = "{deployed_LLM}" # e.g. gpt-4.1-mini
# Create project client
project_client = AIProjectClient(endpoint = project_endpoint, credential = credential)
# Define agent instructions (see "Optimize agent instructions" section for guidance)
instructions = """
You are a helpful assistant that must use the knowledge base to answer all the questions from user. You must never answer from your own knowledge under any circumstances.
Every answer must always provide annotations for using the MCP knowledge base tool and render them as: `【message_idx:search_idx†source_name】`
If you cannot find the answer in the provided knowledge base you must respond with "I don't know".
"""
# Create MCP tool with knowledge base connection
mcp_kb_tool = MCPTool(
server_label = "knowledge-base",
server_url = mcp_endpoint,
require_approval = "never",
allowed_tools = ["knowledge_base_retrieve"],
project_connection_id = project_connection_name
)
# Create agent with MCP tool
agent = project_client.agents.create_version(
agent_name = agent_name,
definition = PromptAgentDefinition(
model = agent_model,
instructions = instructions,
tools = [mcp_kb_tool]
)
)
print(f"Agent '{agent_name}' created or updated successfully.")
(Facoltativo) Applicare le autorizzazioni con intestazioni per richiesta
Se una delle origini conoscenze contiene contenuto protetto da autorizzazioni, il motore di recupero può filtrare i risultati in modo che ogni utente veda solo i documenti a cui è autorizzato ad accedere. Per abilitare questo filtro, inoltrare il token di identità dell'utente connesso nell'intestazione x-ms-query-source-authorization della connessione dello strumento MCP. Senza il token, le fonti abilitate dalle autorizzazioni restituiscono risultati senza filtro. Per altre informazioni, vedere Applicare le autorizzazioni in fase di query (anteprima).
Per variare le intestazioni MCP per ogni richiesta, ad esempio per passare il token di un utente diverso a ogni chiamata, dichiara un input strutturato nella definizione dell'agente e facci riferimento come headers nel {{placeholder}} dello strumento. Il chiamante fornisce il valore per ogni chiamata. Questo approccio funziona per gli strumenti MCP associati a una connessione di progetto.
Per l'autorizzazione per utente su un server MCP, è anche possibile usare il pass-through dell'identità OAuth.
Aggiornare l'agente dal passaggio precedente in modo che lo strumento MCP legga l'intestazione di autorizzazione da un input strutturato:
from azure.ai.projects.models import StructuredInputDefinition
# Reference the token as a placeholder in the header
mcp_kb_tool = MCPTool(
server_label = "knowledge-base",
server_url = mcp_endpoint,
require_approval = "never",
allowed_tools = ["knowledge_base_retrieve"],
project_connection_id = project_connection_name,
headers = {
"x-ms-query-source-authorization": "{{search_auth_token}}"
}
)
# Declare the structured input so the caller can supply the token per request
agent = project_client.agents.create_version(
agent_name = agent_name,
definition = PromptAgentDefinition(
model = agent_model,
instructions = instructions,
tools = [mcp_kb_tool],
structured_inputs = {
"search_auth_token": StructuredInputDefinition(
description = "Per-user Azure AI Search bearer token",
required = True,
schema = {"type": "string"},
)
}
)
)
print(f"Agent '{agent_name}' created or updated successfully.")
Quando si richiama l'agente, specificare un token Azure AI Search in structured_inputs. Questo esempio risolve un token a partire dall'elemento corrente credential. Per un'app multiutente, passare invece il token di ogni utente connesso. Ad esempio, utilizza un token ottenuto tramite un flusso on-behalf-of in modo che il motore di recupero dati possa filtrare i risultati per quell’utente.
# Resolve an Azure AI Search token from the current credential (use a per-user token in production)
from azure.identity import get_bearer_token_provider
search_token = get_bearer_token_provider(credential, "https://search.azure.com/.default")()
openai_client = project_client.get_openai_client()
conversation = openai_client.conversations.create()
response = openai_client.responses.create(
conversation = conversation.id,
input = "{user_query}",
extra_body = {
"agent_reference": {"name": agent.name, "type": "agent_reference"},
"structured_inputs": {"search_auth_token": search_token},
},
)
Richiamare l'agente con un'interrogazione
Creare una sessione di conversazione e inviare una query utente all'agente. Se appropriato, l'agente orchestra le chiamate allo strumento MCP per recuperare il contenuto pertinente dalla Knowledge Base. L'agente sintetizza quindi questo contenuto in una risposta in linguaggio naturale che cita i documenti di origine.
Gli URL di citazione nelle risposte dell'agente variano in base all'origine delle informazioni. Ad esempio, le fonti di conoscenza BLOB restituiscono l'URL del documento originale, mentre le fonti di conoscenza dell'indice di ricerca utilizzano come fallback l'endpoint MCP della tua knowledge base.
# Get the OpenAI client for responses and conversations
openai_client = project_client.get_openai_client()
# Create conversation
conversation = openai_client.conversations.create()
# Send request to trigger the MCP tool
response = openai_client.responses.create(
conversation = conversation.id,
input = """
Why do suburban belts display larger December brightening than urban cores even though absolute light levels are higher downtown?
Why is the Phoenix nighttime street grid is so sharply visible from space, whereas large stretches of the interstate between midwestern cities remain comparatively dim?
""",
extra_body = {"agent_reference": {"name": agent.name, "type": "agent_reference"}},
)
print(f"Response: {response.output_text}")
L'output dovrebbe essere simile al seguente (troncato per brevità):
Response: Suburban belts display larger December brightening than urban cores, even
though absolute light levels are higher downtown, primarily because holiday lights
increase most dramatically in the suburbs and outskirts of major cities. This is due
to more yard space and a prevalence of single-family homes in suburban areas...
The Phoenix nighttime street grid is sharply visible from space due to the city's
layout along a regular grid of city blocks and streets with extensive street lighting...
References:
- earth_at_night_508_page_174, earth_at_night_508_page_176 (Holiday lighting)
- earth_at_night_508_page_104, earth_at_night_508_page_105 (Phoenix grid visibility)
Eliminare l'agente e la connessione al progetto
# Delete the agent
project_client.agents.delete_version(agent_name=agent.name, agent_version=agent.version)
print(f"Agent '{agent.name}' version '{agent.version}' deleted successfully.")
# Delete the project connection (Azure Resource Manager)
import requests
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
credential = DefaultAzureCredential()
project_resource_id = "{project_resource_id}"
project_connection_name = "{project_connection_name}"
bearer_token_provider = get_bearer_token_provider(credential, "https://management.azure.com/.default")
headers = {"Authorization": f"Bearer {bearer_token_provider()}"}
response = requests.delete(
f"https://management.azure.com{project_resource_id}/connections/{project_connection_name}?api-version=2025-10-01-preview",
headers=headers,
)
response.raise_for_status()
print(f"Project connection '{project_connection_name}' deleted successfully.")
Nota
L'eliminazione dell'agente e della connessione al progetto non comporta l'eliminazione della Knowledge Base o delle relative origini conoscenze. È necessario eliminare questi oggetti separatamente nel servizio Azure AI Search. Per altre informazioni, vedere Eliminare una knowledge base ed Eliminare una fonte di conoscenza.
Risoluzione dei problemi
Questa sezione consente di risolvere i problemi comuni relativi alla connessione del servizio Foundry Agent a una Knowledge Base di IQ Foundry.
Errori di autorizzazione (401/403)
- Se si riceve un errore 403 da Azure AI Search, assicurarsi che l'identità gestita del progetto disponga del ruolo Lettore dati indice di ricerca per il servizio di ricerca (e Collaboratore dati indice di ricerca se si scrive negli indici).
- Se si ottiene un valore 403 da Azure Resource Manager quando si crea o si elimina la connessione al progetto, verificare che l'utente o l'entità servizio disponga delle autorizzazioni per la risorsa e il progetto di Microsoft Foundry.
- Se si usa l'autenticazione senza chiave, verificare che l'ambiente sia connesso al tenant e alla sottoscrizione corretti.
Errori degli endpoint MCP (400/404)
- Verificare che
search_service_endpointsia l'URL del servizio Azure AI Search, ad esempiohttps://<name>.search.windows.net. - Verificare che
knowledge_base_namecorrisponda alla knowledge base creata in Azure AI Search. - Verificare di usare la versione dell'API
2026-08-01-previewper l'endpoint MCP della Knowledge Base.
L'agente non contestualizza le risposte
- Verificare che l'agente abbia configurato lo strumento MCP e
allowed_toolsincludaknowledge_base_retrieve. - Aggiornare le istruzioni dell'agente per richiedere in modo esplicito l'uso della Knowledge Base e per restituire "Non so" quando il recupero non contiene la risposta.