Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wichtig
In diesem Artikel markierte Elemente (Vorschau) befinden sich derzeit in der öffentlichen Vorschau. Diese Vorschau wird ohne Vereinbarung auf Serviceebene bereitgestellt und wird für Produktionsworkloads nicht empfohlen. Bestimmte Features werden möglicherweise nicht unterstützt oder weisen eingeschränkte Funktionen auf. Weitere Informationen finden Sie unter Supplementale Nutzungsbedingungen für Microsoft Azure Previews.
In diesem Artikel erfahren Sie, wie Sie eine Wissensbasis in Foundry IQ mit einem Agenten im Foundry Agent Service verbinden. Die Verbindung verwendet das Model Context Protocol (MCP), um Toolaufrufe zu erleichtern. Wenn der Agent aufgerufen wird, koordiniert die Knowledge Base die folgenden Vorgänge:
- Plant und dekompiliert eine Benutzerabfrage in Unterabfragen.
- Verarbeitet die Unterabfragen gleichzeitig mithilfe von Schlüsselwort-, Vektor- oder Hybridtechniken.
- Wendet die semantische Umrankung an, um die relevantesten Ergebnisse zu identifizieren.
- Synthetisiert die Ergebnisse in eine einheitliche Antwort mit Quellverweise.
Der Agent verwendet die Antwort, um seine Antworten in Unternehmensdaten oder Webquellen zu finden, um durch die Quellenzuordnung faktenbezogene Genauigkeit und Transparenz sicherzustellen.
Ein End-to-End-Beispiel für die Integration von Azure KI-Suche und Foundry Agent Service für den Wissensabruf finden Sie im agentic-retrieval-pipeline-example Python-Beispiel, das auf GitHub zu finden ist.
Verwendungsunterstützung
| Microsoft Foundry-Unterstützung | Python SDK | C# SDK | JavaScript SDK | Java SDK | REST-API | Grundlegendes Agent-Setup | Standard-Agenten-Einrichtung |
|---|---|---|---|---|---|---|---|
| ✔️ | ✔️ | - | - | - | ✔️ | ✔️ | ✔️ |
Voraussetzungen
Ein Azure KI-Suche-Dienst mit einer Wissensdatenbank, die mindestens eine oder mehrere Wissensquellen enthält.
Ein Microsoft Foundry-Projekt mit einer LLM-Bereitstellung, z. B.
gpt-4.1-mini.Authentifizierung und Berechtigungen für Ihren Suchdienst und Ihr Projekt.
Das neueste Python SDK in der Vorschauversion (Version 2.0.0 oder höher) oder die REST API mit der Version 2025-11-01-preview.
pip install "azure-ai-projects>=2.0.0" requests
Authentifizierung und Berechtigungen
Wir empfehlen eine rollenbasierte Zugriffssteuerung für Produktionsbereitstellungen. Wenn Rollen nicht machbar sind, überspringen Sie diesen Abschnitt, und verwenden Sie stattdessen die schlüsselbasierte Authentifizierung.
In der übergeordneten Ressource Ihres Projekts benötigen Sie die rolle Azure AI User für den Zugriff auf Modellbereitstellungen und zum Erstellen von Agents. Besitzer erhalten diese Rolle automatisch, wenn sie die Ressource erstellen. Andere Benutzer benötigen eine bestimmte Rollenzuweisung. Weitere Informationen finden Sie unter Rollenbasierte Zugriffssteuerung im Foundry-Portal.
Auf der übergeordneten Ressource Ihres Projekts benötigen Sie die Rolle Azure AI Project Manager, um eine Projektverbindung für die MCP-Authentifizierung zu erstellen, und entweder Azure AI User oder Azure AI Project Manager für die Benutzung des MCP-Tools in Agenten.
Erstellen Sie in Ihrem Projekt eine vom System zugewiesene verwaltete Identität für Interaktionen mit Azure KI-Suche.
Erforderliche Werte
Verwenden Sie die folgenden Werte in den Codebeispielen.
| Wert | Wo kann ich es bekommen? | Beispiel |
|---|---|---|
Projektendpunkt (project_endpoint) |
Suchen Sie es in Ihren Projektdetails im Microsoft Foundry-Portal. | https://your-resource.services.ai.azure.com/api/projects/your-project |
Projekt-Ressourcen-ID (project_resource_id) |
Kopieren Sie die ARM-Ressourcen-ID des Projekts aus Azure Portal, oder verwenden Sie Azure CLI, um die Ressourcen-ID abzufragen. | /subscriptions/.../resourceGroups/.../providers/Microsoft.MachineLearningServices/workspaces/.../projects/... |
Azure KI-Suche Endpunkt (search_service_endpoint) |
Suchen Sie ihn auf Ihrer Azure KI-Suche-Dienstseite Overview (die Dienst-URL) im Azure-Portal. | https://your-search-service.search.windows.net |
Wissensdatenbank-Name (knowledge_base_name) |
Verwenden Sie den Knowledge Base-Namen, den Sie in Azure KI-Suche erstellt haben. | hr-policy-kb |
Projektverbindungsname (project_connection_name) |
Wählen Sie einen Namen für die von Ihnen erstellte Projektverbindung aus. | my-kb-mcp-connection |
Agentname (agent_name) |
Wählen Sie einen Namen für die von Ihnen erstellte Agentversion aus. | hr-assistant |
Modellbereitstellungsname (deployed_LLM) |
Suchen Sie sie in Ihren Microsoft Foundry-Projektmodellbereitstellungen. | gpt-4.1-mini |
Tipp
Es wird empfohlen, den Projektendpunkt, den Suchendpunkt und den Knowledge Base-Namen in einer Datei für die .env lokale Entwicklung zu speichern.
Erstellen einer Projektverbindung
Erstellen Sie eine RemoteToolVerbindung für Ihr Microsoft Foundry-Projekt. Diese Verbindung verwendet die verwaltete Identität des Projekts, um den MCP-Endpunkt der Knowledge Base als Ziel zu verwenden, sodass der Agent sicher mit Azure KI-Suche für Abrufvorgänge kommunizieren kann.
Hinweis
Die Kategorie RemoteTool und ProjectManagedIdentity Authentifizierungstyp sind spezifisch für Microsoft Foundry-Projektverbindungen.
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.MachineLearningServices/workspaces/{account_name}/projects/{project_name}
project_connection_name = "{project_connection_name}"
mcp_endpoint = "{search_service_endpoint}/knowledgebases/{knowledge_base_name}/mcp?api-version=2025-11-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.")
Optimieren von Agent-Anweisungen für den Wissensabruf
Um Aufrufe der Wissensbasis zu verbessern und zitatgestützte Antworten zu erstellen, beginnen Sie mit Anweisungen wie den folgenden:
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.
Diese Anweisungsvorlage optimiert für:
- Höhere MCP-Toolaufrufraten: Explizite Direktiven stellen sicher, dass der Agent das Knowledge Base-Tool konsistent aufruft, anstatt sich auf seine Schulungsdaten zu verlassen.
- Klare Quellzuordnung: Zitate vereinfachen die Überprüfung, woher Informationen stammen.
Tipp
Während diese Vorlage eine starke Grundlage bietet, bewerten und verfeinern Sie die Anweisungen anhand Ihres spezifischen Anwendungsfalls und Ihrer Ziele. Testen Sie verschiedene Variationen, um zu ermitteln, was für Ihr Szenario am besten geeignet ist.
Erstellen eines Agents mit dem MCP-Tool
Erstellen Sie einen Agent, der die Wissensbasis als MCP-Tool integriert. Der Agent verwendet eine Systemaufforderung, um anzugeben, wann und wie die Wissensbasis aufgerufen wird. Es folgt Anweisungen zum Beantworten von Fragen und verwaltet automatisch seine Toolkonfiguration und -einstellungen in Unterhaltungssitzungen.
Fügen Sie das Knowledge Base MCP-Tool mit der Projektverbindung hinzu, die Sie zuvor erstellt haben. Dieses Tool koordiniert die Abfrageplanung, -analyse und -abruf über konfigurierte Wissensquellen hinweg. Der Agent verwendet dieses Tool, um Abfragen zu beantworten.
Hinweis
Azure KI-Suche Wissensdatenbanken machen das knowledge_base_retrieve MCP-Tool für die Agentintegration verfügbar. Dies ist das einzige Tool, das derzeit für die Verwendung mit dem Foundry Agent Service unterstützt wird.
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=2025-11-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.")
Herstellen einer Verbindung mit einer Remote-SharePoint Wissensquelle
Wichtig
In dieser Vorschau unterstützt der Foundry Agent Service keine Header pro Anforderung für MCP-Tools. Header, die in Agentdefinitionen festgelegt sind, gelten für alle Aufrufe und können nicht je nach Benutzer oder Anforderung variieren.
Verwenden Sie für die Benutzerautorisierung stattdessen die Azure OpenAI-Antwort-API.
Wenn Ihre Knowledge Base optional eine Remote-SharePoint Wissensquelle enthält, müssen Sie auch den header x-ms-query-source-authorization in die MCP-Toolverbindung einschließen. Weitere Informationen finden Sie unter Erzwingen von Berechtigungen zur Abfragezeit.
from azure.identity import get_bearer_token_provider
# Create MCP tool with SharePoint authorization 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": get_bearer_token_provider(credential, "https://search.azure.com/.default")()
}
)
Aufrufen des Agents mit einer Abfrage
Erstellen Sie eine Unterhaltungssitzung, und senden Sie eine Benutzerabfrage an den Agent. Gegebenenfalls koordiniert der Agent die Aufrufe des MCP-Tools, um relevante Inhalte aus der Wissensbasis abzurufen. Der Agent synthetisiert diesen Inhalt dann in einer natürlichen Sprachantwort, die die Quelldokumente angibt.
Zitat-URLs in Agentantworten variieren je nach Wissensquelle. Beispielsweise geben Blob-Wissensquellen die ursprüngliche Dokument-URL zurück, während Suchindex-Wissensquellen auf den MCP-Endpunkt Ihrer Knowledge Base zurückgreifen.
# 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}")
Die Ausgabe sollte der folgenden ähneln (gekürzt zur Übersichtlichkeit):
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)
Löschen des Agents und der Projektverbindung
# 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.")
Hinweis
Wenn Sie Ihren Agent und Ihre Projektverbindung löschen, werden Ihre Wissensbasis oder ihre Wissensquellen nicht gelöscht. Sie müssen diese Objekte separat in Ihrem Azure KI-Suche-Dienst löschen. Weitere Informationen finden Sie unter "Löschen einer Wissensbasis " und "Löschen einer Wissensquelle".
Problembehandlung
Dieser Abschnitt hilft Ihnen bei der Problembehandlung bei der Verbindung des Foundry-Agentendienstes mit einer Foundry IQ-Wissensdatenbank.
Autorisierungsfehler (401/403)
- Wenn Sie eine 403 von Azure KI-Suche erhalten, bestätigen Sie, dass die verwaltete Identität des Projekts über die Search Index Data Reader Rolle für den Suchdienst verfügt (und Search Index Data Contributor wenn Sie in Indizes schreiben).
- Wenn Sie beim Erstellen oder Löschen der Projektverbindung eine 403 von Azure Resource Manager erhalten, bestätigen Sie, dass Der Benutzer oder Dienstprinzipal über Berechtigungen für die Microsoft Foundry-Ressource und das Projekt verfügt.
- Wenn Sie die schlüssellose Authentifizierung verwenden, bestätigen Sie, dass Ihre Umgebung beim richtigen Mandanten und Abonnement angemeldet ist.
MCP-Endpunktfehler (400/404)
- Bestätigen Sie, dass
search_service_endpointdie Azure KI-Suche Dienst-URL ist, z. B.https://<name>.search.windows.net. - Bestätigen Sie, dass
knowledge_base_namemit der Wissensbasis übereinstimmt, die Sie in Azure KI-Suche erstellt haben. - Bestätigen Sie, dass Sie die
2025-11-01-previewAPI-Version für den Knowledge Base MCP-Endpunkt verwenden.
Der Agent untermauert die Antworten nicht.
- Vergewissern Sie sich, dass der Agent das MCP-Tool konfiguriert und
allowed_toolsenthältknowledge_base_retrieve. - Aktualisieren Sie Ihre Agent-Anweisungen so, dass sie explizit die Knowledge Base verwenden müssen, und um "Ich weiß nicht" zurückzugeben, wenn der Abruf die Antwort nicht enthält.