Подключение базы знаний Foundry IQ к службе агента Foundry

Важно

Элементы, помеченные (предварительная версия) в этой статье, в настоящее время находятся в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или могут иметь ограниченные возможности. Дополнительные сведения см. в разделе Supplemental Terms of Use for Microsoft Azure Previews.

Из этой статьи вы ознакомитесь с тем, как подключить базу знаний в Foundry IQ к Службе Агента Foundry. Подключение использует протокол Model Context Protocol (MCP) для упрощения вызовов инструментов. При вызове агента база знаний управляет следующими операциями:

  • Планирует и разбивает запрос пользователя на подзапросы.
  • Обрабатывает вложенные запросы одновременно с помощью ключевых слов, векторов или гибридных методов.
  • Применяет семантическое ранжирование для выявления наиболее релевантных результатов.
  • Синтезирует результаты в унифицированный ответ с исходными ссылками.

Агент использует ответ для основания своих ответов в корпоративных данных или веб-источниках, обеспечивая фактическую точность и прозрачность через указание источника.

Полный пример интеграции Поиск с использованием ИИ Azure и службы агента Foundry для получения знаний см. в примере agentic-retrieval-pipeline-example Python на GitHub.

Поддержка использования

поддержка Microsoft Foundry пакет SDK Python C# SDK JavaScript SDK пакет SDK Java REST API Базовая настройка агента Настройка стандартного агента
✔️ ✔️ - - - ✔️ ✔️ ✔️

Необходимые условия

Проверка подлинности и разрешения

Мы рекомендуем контроль доступа на основе ролей для развертываний в производственной среде. Если роли не являются возможными, пропустите этот раздел и используйте проверку подлинности на основе ключей.

  • Для родительского ресурса вашего проекта вам потребуется роль Azure AI User для доступа к развертываниям моделей и создания агентов. Владельцы автоматически получают эту роль при создании ресурса. Другие пользователи нуждаются в назначении определенной роли. Дополнительные сведения см. в разделе "Управление доступом на основе ролей" на портале Foundry.

  • На родительском ресурсе вашего проекта вам нужна роль Azure AI Project Manager для создания подключения проекта для аутентификации MCP и Azure AI User или Azure AI Project Manager для использования средства MCP в агентах.

  • В проекте создайте управляемое удостоверение, назначаемое системой, для взаимодействия с Поиск с использованием ИИ Azure.

Обязательные значения

Используйте следующие значения в примерах кода.

Значение Где получить его Пример
конечная точка проекта (project_endpoint) Найдите его в сведениях о проекте на портале Microsoft Foundry. https://your-resource.services.ai.azure.com/api/projects/your-project
идентификатор ресурса Project (project_resource_id) Скопируйте идентификатор ресурса ARM проекта на портале Azure или используйте Azure CLI для запроса идентификатора ресурса. /subscriptions/.../resourceGroups/.../providers/Microsoft.MachineLearningServices/workspaces/.../projects/...
конечная точка Поиск с использованием ИИ Azure (search_service_endpoint) Найдите его на странице Поиск с использованием ИИ Azure службы Overview (URL-адрес службы) на портале Azure. https://your-search-service.search.windows.net
Имя базы знаний (knowledge_base_name) Используйте имя базы знаний, созданное в Поиск с использованием ИИ Azure. hr-policy-kb
имя подключения проекта (project_connection_name) Выберите имя создаваемого соединения проекта. my-kb-mcp-connection
Имя агента (agent_name) Выберите имя создаваемой версии агента. hr-assistant
Название развертывания модели (deployed_LLM) Найдите это в развертываниях модели проекта Microsoft Foundry. gpt-4.1-mini

Совет

Рекомендуется хранить конечную точку проекта, конечную точку поиска и имя базы знаний в файле для локальной .env разработки.

Создание подключения к проекту

Создайте подключение RemoteTool в проекте Microsoft Foundry. Это подключение использует управляемое удостоверение проекта для доступа к конечной точке MCP базы знаний, позволяя агенту безопасно взаимодействовать с Поиск с использованием ИИ Azure для операций извлечения.

Примечание

Категория RemoteTool и тип проверки подлинности ProjectManagedIdentity относятся к подключениям проекта 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.")

Оптимизация инструкций агента для получения знаний

Чтобы улучшить вызовы базы знаний и создать ответы, поддерживаемые ссылкой, начните с инструкций, как показано ниже:

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.

Этот шаблон инструкции оптимизируется для:

  • Более высокие показатели вызова средства MCP: явные директивы гарантируют, что агент последовательно вызывает средство базы знаний, а не полагается на данные обучения.
  • Четкое определение источника: ссылки упрощают проверку того, откуда поступила информация.

Совет

Хотя этот шаблон обеспечивает надежную основу, оцените и внесите изменения в руководства на основе конкретного варианта использования и целей. Проверьте различные варианты, чтобы найти наиболее подходящие варианты для вашего сценария.

Создание агента с помощью средства MCP

Создайте агент, который интегрирует базу знаний в качестве средства MCP. Агент использует системный запрос, чтобы указать, когда и как вызвать базу знаний. В нем приведены инструкции по ответу на вопросы и автоматически поддерживает конфигурацию и настройки инструмента в сеансах общения.

Добавьте инструмент MCP базы знаний с подключением к проекту, который вы ранее создали. Это средство управляет планированием запросов, декомпозицией и извлечением в настроенных источниках знаний. Агент использует это средство для ответа на запросы.

Примечание

Поиск с использованием ИИ Azure базы знаний предоставляют средство knowledge_base_retrieve MCP для интеграции агента. Это единственный инструмент, поддерживаемый в настоящее время для использования со службой агента 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=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.")

Подключение к удаленному источнику знаний SharePoint

Важно

В этой предварительной версии служба агента Foundry не поддерживает заголовки каждого запроса для средств MCP. Заголовки, заданные в определениях агента, применяются ко всем вызовам и не могут отличаться от пользователя или запроса.

Для авторизации для каждого пользователя используйте API ответов Azure OpenAI.

При необходимости, если база знаний включает удаленный источник знаний SharePoint, необходимо также включить заголовок x-ms-query-source-authorization в подключение к средству MCP. Дополнительные сведения см. в разделе "Принудительное применение разрешений во время запроса".

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")()
    }
)

Вызов агента с помощью запроса

Создайте сеанс беседы и отправьте запрос пользователя агенту. При необходимости агент управляет вызовом средства MCP для получения соответствующего содержимого из базы знаний. Затем агент синтезирует это содержимое в ответ естественного языка, который ссылается на исходные документы.

URL-адреса ссылок в ответах агента зависят от источника знаний. Например, источники знаний BLOB-объектов возвращают исходный URL-адрес документа, а источники знаний индекса поиска возвращаются к конечной точке MCP базы знаний.

# 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}")

Выходные данные должны быть похожи на следующие (усеченные для краткости):

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)

Удалите подключение агента и проекта

# 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.")

Примечание

Удаление агента и подключения к проекту не удаляет базу знаний или ее источники знаний. Эти объекты необходимо удалить отдельно в службе Поиск с использованием ИИ Azure. Дополнительные сведения см. в разделе "Удаление базы знаний " и "Удаление источника знаний".

Устранение неполадок

В этом разделе описаны распространенные проблемы при подключении службы агента Foundry к базе знаний Foundry IQ.

Сбои авторизации (401/403)

  • Если вы получите 403 в Поиск с использованием ИИ Azure, убедитесь, что управляемое удостоверение проекта имеет роль Читатель данных индекса поиска в службе поиска (и роль Соавтор данных индекса поиска, если вы записываете данные в индексы).
  • Если вы получаете 403 из Azure Resource Manager при создании или удалении подключения к проекту, убедитесь, что у пользователя или сервисного главного есть разрешения на ресурс Microsoft Foundry и проект.
  • Если вы используете аутентификацию без ключа, убедитесь, что ваша среда вошла в систему с правильным тенантом и подпиской.

Ошибки конечной точки MCP (400/404)

  • Убедитесь, что search_service_endpoint является URL-адресом службы Поиск с использованием ИИ Azure, например https://<name>.search.windows.net.
  • Убедитесь, что knowledge_base_name соответствует базе знаний, созданной в Поиск с использованием ИИ Azure.
  • Убедитесь, что вы используете 2025-11-01-preview версию API для конечной точки MCP базы знаний.

Агент не обосновывает ответы

  • Убедитесь, что агент настроен и allowed_tools включает knowledge_base_retrieveсредство MCP.
  • Обновите инструкции агента, чтобы явно требовать использования базы знаний и возвращать "Я не знаю", когда извлечение не содержит ответ.