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.
Ważne
Elementy oznaczone (wersja zapoznawcza) w tym artykule są obecnie dostępne w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą nie być obsługiwane lub mogą mieć ograniczone możliwości. Aby uzyskać więcej informacji, zobacz Wygólne warunki użytkowania Microsoft Azure Previews.
W tym artykule dowiesz się, jak połączyć bazę wiedzy w Foundry IQ do agenta w Foundry Agent Service. Połączenie używa protokołu MCP (Model Context Protocol), aby ułatwić wywołania narzędzi. Po wywołaniu przez agenta baza wiedzy organizuje następujące operacje:
- Planuje i rozkłada zapytanie użytkownika na podzapytania.
- Przetwarza podzapytania jednocześnie przy użyciu słów kluczowych, wektorów lub technik hybrydowych.
- Stosuje semantyczne rerankingowanie w celu zidentyfikowania najbardziej istotnych wyników.
- Syntetyzuje wyniki w ujednoliconą odpowiedź z odwołaniami źródłowymi.
Agent używa odpowiedzi, aby oprzeć je w danych przedsiębiorstwa lub źródłach internetowych, zapewniając zgodność z faktami i przejrzystość poprzez podanie źródła.
Aby zapoznać się z kompleksowym przykładem integrowania usługi Wyszukiwanie AI platformy Azure i usługi Foundry Agent do wyszukiwania wiedzy, zobacz przykład agentic-retrieval-pipeline-example Python na GitHubie.
Wsparcie użytkowania
| Obsługa Microsoft Foundry | zestaw SDK Python | C# SDK | JavaScript SDK | zestaw SDK Java | interfejs API REST | Konfiguracja agenta podstawowego | Konfiguracja agenta standardowego |
|---|---|---|---|---|---|---|---|
| ✔️ | ✔️ | - | - | - | ✔️ | ✔️ | ✔️ |
Wymagania wstępne
Usługa Wyszukiwanie AI platformy Azure z bazą wiedzy zawierającą co najmniej jedno źródło wiedzy.
Projekt Microsoft Foundry z wdrożeniem LLM, takim jak
gpt-4.1-mini.Uwierzytelnianie i uprawnienia w usłudze wyszukiwania i projekcie.
Najnowsza wersja przedpremierowa Python SDK (wersja 2.0.0 lub nowsza) lub 2025-11-01-preview interfejsu API REST.
pip install "azure-ai-projects>=2.0.0" requests
Uwierzytelnianie i uprawnienia
Zalecamy kontrolę dostępu opartą na rolach dla wdrożeń produkcyjnych. Jeśli role nie są wykonalne, pomiń tę sekcję i zamiast tego użyj uwierzytelniania opartego na kluczach.
W zasobie nadrzędnym projektu potrzebna jest rola Azure AI User, aby uzyskać dostęp do wdrożeń modelu i tworzyć agentów. Właściciele automatycznie uzyskują tę rolę podczas tworzenia zasobu. Inni użytkownicy potrzebują określonego przypisania roli. Aby uzyskać więcej informacji, zobacz Kontrola dostępu oparta na rolach w portalu Foundry.
Na zasobie nadrzędnym swojego projektu potrzebujesz roli Azure AI Project Manager, aby utworzyć połączenie projektu na potrzeby uwierzytelniania MCP, oraz roli Azure AI User lub Azure AI Project Manager, aby używać narzędzia MCP w agentach.
W projekcie utwórz tożsamość zarządzaną przypisaną przez system na potrzeby interakcji z Wyszukiwanie AI platformy Azure.
Wymagane wartości
Użyj poniższych wartości w przykładach kodu.
| Wartość | Gdzie to zrobić | Przykład |
|---|---|---|
punkt końcowy Projektu (project_endpoint) |
Znajdź go w szczegółach projektu w portalu Microsoft Foundry. | https://your-resource.services.ai.azure.com/api/projects/your-project |
identyfikator zasobu Project (project_resource_id) |
Skopiuj identyfikator zasobu usługi ARM projektu z portalu Azure lub użyj Azure CLI, aby wysłać zapytanie do identyfikatora zasobu. | /subscriptions/.../resourceGroups/.../providers/Microsoft.MachineLearningServices/workspaces/.../projects/... |
punkt końcowy Wyszukiwanie AI platformy Azure (search_service_endpoint) |
Znajdź ją na stronie usługi Wyszukiwanie AI platformy Azure Overview (adres URL usługi) w portalu Azure. | https://your-search-service.search.windows.net |
Nazwa bazy wiedzy (knowledge_base_name) |
Użyj nazwy bazy wiedzy utworzonej w Wyszukiwanie AI platformy Azure. | hr-policy-kb |
Nazwa połączenia projektu (project_connection_name) |
Wybierz nazwę utworzonego połączenia projektu. | my-kb-mcp-connection |
Nazwa agenta (agent_name) |
Wybierz nazwę utworzonej wersji agenta. | hr-assistant |
Nazwa wdrożenia modelu (deployed_LLM) |
Znajdź go we wdrożeniach modelu projektu Microsoft Foundry. | gpt-4.1-mini |
Wskazówka
Zalecamy przechowywanie punktu końcowego projektu, punktu końcowego wyszukiwania i nazwy bazy wiedzy w pliku na potrzeby programowania lokalnego .env .
Utwórz połączenie projektu
Utwórz połączenie RemoteTool w projekcie Microsoft Foundry. To połączenie używa tożsamości zarządzanej projektu do określania docelowego punktu końcowego MCP bazy wiedzy, dzięki czemu agent może bezpiecznie komunikować się z Wyszukiwanie AI platformy Azure na potrzeby operacji pobierania.
Uwaga
Kategoria RemoteTool i typ uwierzytelniania ProjectManagedIdentity są specyficzne dla połączeń projektu Microsoft Foundry.
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.")
Optymalizowanie instrukcji agenta na potrzeby pobierania wiedzy
Aby poprawić wywołania bazy wiedzy i utworzyć odpowiedzi oparte na cytatach, zacznij od instrukcji, takich jak:
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.
Ten szablon instrukcji jest zoptymalizowany pod kątem:
- Wyższe wskaźniki wywołań narzędzi MCP: Dyrektywy jawne zapewniają, że agent konsekwentnie wywołuje narzędzie bazy wiedzy, a nie polega na danych treningowych.
- Wyczyść przypisanie źródła: cytaty ułatwiają weryfikowanie miejsca, z którego pochodzą informacje.
Wskazówka
Chociaż ten szablon stanowi silną podstawę, oceń i iteruj instrukcje na podstawie konkretnego przypadku użycia i celów. Przetestuj różne odmiany, aby dowiedzieć się, co jest najlepsze dla danego scenariusza.
Tworzenie agenta za pomocą narzędzia MCP
Utwórz agenta, który integruje bazę wiedzy jako narzędzie MCP. Agent używa monitu systemowego, aby poinstruować, kiedy i jak wywołać bazę wiedzy. Postępuje zgodnie z instrukcjami dotyczącymi odpowiadania na pytania i automatycznego utrzymywania konfiguracji i ustawień narzędzi między sesjami konwersacji.
Dodaj narzędzie MCP z bazy wiedzy za pomocą połączenia projektu, które utworzyłeś wcześniej. To narzędzie organizuje planowanie zapytań, dekompozycję i pobieranie w skonfigurowanych źródłach wiedzy. Agent używa tego narzędzia do odpowiadania na zapytania.
Uwaga
Wyszukiwanie AI platformy Azure bazy wiedzy uwidaczniają narzędzie knowledge_base_retrieve MCP na potrzeby integracji agenta. Jest to jedyne narzędzie, które jest obecnie obsługiwane do współpracy z Foundry Agent Service.
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.")
Nawiązywanie połączenia ze zdalnym źródłem wiedzy SharePoint
Ważne
W tej wersji zapoznawczej usługa Foundry Agent Service nie obsługuje nagłówków przypisanych do poszczególnych żądań dla narzędzi MCP. Nagłówki ustawione w definicjach agenta mają zastosowanie do wszystkich wywołań i nie mogą się różnić w zależności od użytkownika ani żądania.
W przypadku autoryzacji dla poszczególnych użytkowników użyj zamiast tego interfejsu API Azure OpenAI Responses API.
Opcjonalnie, jeśli twoja baza wiedzy zawiera zdalne źródło wiedzy SharePoint, należy również dołączyć nagłówek x-ms-query-source-authorization w połączeniu narzędzia MCP. Aby uzyskać więcej informacji, zobacz Wymuszanie uprawnień w czasie wykonywania zapytania.
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")()
}
)
Wywoływanie agenta za pomocą zapytania
Utwórz sesję konwersacji i wyślij zapytanie użytkownika do agenta. W razie potrzeby agent organizuje wywołania narzędzia MCP w celu pobrania odpowiedniej zawartości z bazy wiedzy. Następnie agent syntetyzuje tę zawartość w odpowiedzi języka naturalnego, która przytacza dokumenty źródłowe.
Adresy URL cytatów w odpowiedziach agenta różnią się w zależności od źródła wiedzy. Na przykład źródła wiedzy obiektów blob zwracają oryginalny adres URL dokumentu, podczas gdy źródła wiedzy indeksu wyszukiwania wracają do punktu końcowego MCP bazy wiedzy.
# 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}")
Dane wyjściowe powinny być podobne do następujących (obcięte w celu zwięzłości):
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)
Usuń agenta i połączenie projektu
# 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.")
Uwaga
Usunięcie agenta i połączenia projektu nie powoduje usunięcia bazy wiedzy ani jej źródeł wiedzy. Te obiekty należy usunąć oddzielnie w usłudze Wyszukiwanie AI platformy Azure. Aby uzyskać więcej informacji, zobacz Usuwanie bazy wiedzy i Usuwanie źródła wiedzy.
Rozwiązywanie problemów
Ta sekcja ułatwia rozwiązywanie typowych problemów podczas łączenia usługi agenta Foundry z bazą wiedzy Foundry IQ.
Błędy autoryzacji (401/403)
- Jeśli otrzymasz kod błędu 403 z Wyszukiwanie AI platformy Azure, upewnij się, że zarządzana tożsamość projektu ma przypisaną rolę Search Index Data Reader w usłudze wyszukiwania (oraz Search Index Data Contributor jeśli zapisujesz do indeksów).
- Jeśli otrzymasz wartość 403 z Azure Resource Manager podczas tworzenia lub usuwania połączenia projektu, upewnij się, że użytkownik lub jednostka usługi ma uprawnienia do zasobu i projektu Microsoft Foundry.
- Jeśli używasz uwierzytelniania bez klucza, upewnij się, że środowisko jest połączone z odpowiednią dzierżawą i subskrypcją.
Błędy punktu końcowego MCP (400/404)
- Upewnij się, że
search_service_endpointjest adresem URL usługi Wyszukiwanie AI platformy Azure, takim jakhttps://<name>.search.windows.net. - Upewnij się, że
knowledge_base_namepasuje do bazy wiedzy utworzonej w Wyszukiwanie AI platformy Azure. - Upewnij się, że używasz wersji interfejsu API
2025-11-01-previewdla punktu końcowego bazy wiedzy MCP.
Agent nie opiera odpowiedzi
- Upewnij się, że agent ma skonfigurowane narzędzie MCP i
allowed_toolszawieraknowledge_base_retrieveelement. - Zaktualizuj instrukcje agenta, aby jawnie wymagać użycia bazy wiedzy i zwrócić "Nie wiem", gdy pobieranie nie zawiera odpowiedzi.