Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Microsoft Agent Framework поддерживает прямое вывод модели из конечных точек проекта Foundry Microsoft, а приложение владеет определением агента, инструментами и оркестрацией.
Сведения об управляемых службами запросах и размещенных агентах см. в Microsoft службе агента Foundry.
Getting Started
Добавьте необходимые пакеты NuGet в проект.
dotnet add package Azure.Identity
dotnet add package Microsoft.Agents.AI.Foundry --prerelease
Два шаблона интеграции
Интеграция Microsoft Foundry предоставляет два различных шаблона использования:
| Pattern | Созданный тип | Description | Используйте, если |
|---|---|---|---|
| Агент ответов | ChatClientAgent |
Приложение программно предоставляет модель, инструкции и средства во время выполнения AIProjectClient.AsAIAgent(...). Ресурс агента на стороне сервера не создается. |
Вы владеете определением агента и хотите простой гибкой настройки. Это шаблон, используемый в большинстве примеров. |
| Агент Foundry (запрос или размещение) | FoundryAgent |
Управляемые сервером — агенты запроса называются и версиями; Размещенные агенты развертываются через конечную точку для конкретного агента. | Foundry владеет определением агента или размещенной средой выполнения. См. Microsoft службу агента Foundry. |
Агент откликов (прямое заключение)
Используйте AsAIAgent на AIProjectClient непосредственно с моделью и инструкциями. Это рекомендуемая отправная точка для большинства сценариев.
using Azure.AI.Projects;
using Azure.Identity;
using Microsoft.Agents.AI;
AIAgent agent = new AIProjectClient(
new Uri("<your-foundry-project-endpoint>"),
new DefaultAzureCredential())
.AsAIAgent(
model: "gpt-4o-mini",
name: "Joker",
instructions: "You are good at telling jokes.");
Console.WriteLine(await agent.RunAsync("Tell me a joke about a pirate."));
Предупреждение
DefaultAzureCredential удобно для разработки, но требует тщательного рассмотрения в рабочей среде. В рабочей среде рекомендуется использовать определенные учетные данные (например, ManagedIdentityCredential), чтобы избежать проблем с задержкой, непреднамеренной проверки данных аутентификации и потенциальных рисков безопасности из-за резервных механизмов.
Этот путь ориентирован на изначальное использование кода и не создает ресурс агента, под управлением сервера.
Использование агента
Агент responses — это стандартный AIAgent и поддерживает сеансы, инструменты, ПО промежуточного слоя и потоковую передачу.
AgentSession session = await agent.CreateSessionAsync();
Console.WriteLine(await agent.RunAsync("Tell me a joke.", session));
Console.WriteLine(await agent.RunAsync("Now make it funnier.", session));
Дополнительные сведения о запуске и взаимодействии с агентами см. в руководствах по началу работы агента.
Tools
Агенты foundry Responses, созданные из AIProjectClient.AsAIAgent(...) поддержки стандартной области инструментов Agent Framework. Ознакомьтесь с обзором инструментов для полной матрицы функций.
| инструмент | Примечания |
|---|---|
| Средства функций | Supported. |
| Утверждение инструмента | Supported. Предоставляется клиентом чата, вызывающим функцию платформы. |
| Интерпретатор кода | Supported. |
| Поиск файлов | Supported. |
| Размещенные средства MCP | Supported. |
| Локальные средства MCP | Supported. |
| панель элементов Microsoft Foundry | Supported. |
Проект Foundry на Python
В Python все клиенты, относящиеся к Foundry, теперь живут под agent_framework.foundry.
-
agent-framework-foundryпредоставляет облачные соединители Foundry:FoundryChatClient,FoundryAgent,FoundryEmbeddingClientиFoundryMemoryProvider. -
agent-framework-foundry-localобеспечиваетFoundryLocalClientвыполнение модели на локальном уровне.
Important
На этой странице рассматриваются Microsoft конечных точек проекта и моделей Foundry. Сведения о службе агента Foundry см. в разделе Microsoft Службе агента Foundry. Если у вас есть автономная конечная точка ресурса Azure OpenAI (https://<your-resource>.openai.azure.com), используйте руководство по Python на странице поставщика OpenAI. Если вы хотите локально запускать поддерживаемые модели, см. страницу "Локальный поставщик Foundry".
Шаблоны чата и агента Foundry в Python
| Сценарий | Фигура Python | Используйте, если |
|---|---|---|
| Простое вывод с конечной точкой "Ответы Foundry" | Agent(client=FoundryChatClient(...)) |
Ваше приложение владеет определением агента, инструментами и циклом беседы, и вам нужна модель, развернутая в проекте Foundry. |
| Управляемые службой агенты в службе агента Foundry | FoundryAgent(...) |
Вы хотите подключиться к объекту PromptAgent или HostedAgent, который создается и настраивается на портале Foundry или через API службы. |
Installation
pip install agent-framework-foundry
Тот же agent-framework-foundry пакет также включает в себя FoundryEmbeddingClient встраивания моделей Foundry для конечных точек.
Configuration
FoundryChatClient
FOUNDRY_PROJECT_ENDPOINT="https://<your-project>.services.ai.azure.com"
FOUNDRY_MODEL="gpt-4o-mini"
FoundryEmbeddingClient
FOUNDRY_MODELS_ENDPOINT="https://<apim-instance>.azure-api.net/<foundry-instance>/models"
FOUNDRY_MODELS_API_KEY="<api-key>"
FOUNDRY_EMBEDDING_MODEL="text-embedding-3-small"
FOUNDRY_IMAGE_EMBEDDING_MODEL="Cohere-embed-v3-english" # optional
FoundryChatClient использует конечную точку проекта.
FoundryEmbeddingClient использует отдельную конечную точку моделей.
Выберите нужный клиент Python
| Сценарий | Предпочтительный клиент | Примечания |
|---|---|---|
| Ресурс Azure OpenAI | OpenAIChatCompletionClient / OpenAIChatClient |
Используйте страницу поставщика OpenAI. |
| Вывод проекта Microsoft Foundry | Agent(client=FoundryChatClient(...)) |
Использует конечную точку "Foundry Responses". |
| Агент, управляемый службой Microsoft Foundry | FoundryAgent |
Рекомендуется для оперативных агентов и хостед-агентов. |
| Внедрение моделей Microsoft Foundry для конечных точек | FoundryEmbeddingClient |
Использует FOUNDRY_MODELS_ENDPOINT плюс FOUNDRY_EMBEDDING_MODEL / FOUNDRY_IMAGE_EMBEDDING_MODEL. |
| Локальная среда выполнения Foundry | Agent(client=FoundryLocalClient(...)) |
См. Foundry Local. |
Создание агента с помощью FoundryChatClient
FoundryChatClient подключается к развернутой модели в проекте Foundry и использует конечную точку ответов. Совместите его со стандартом Agent, когда приложение должно полностью управлять инструкциями, средствами и сессиями.
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential
agent = Agent(
client=FoundryChatClient(
project_endpoint="https://your-project.services.ai.azure.com",
model="gpt-4o-mini",
credential=AzureCliCredential(),
),
name="FoundryWeatherAgent",
instructions="You are a helpful assistant.",
)
FoundryChatClient — это путь Python Foundry-first для прямого вывода и поддерживает средства, структурированные выходные данные и потоковую передачу.
Tools
FoundryChatClient включает статические фабричные методы для каждого размещённого инструмента Foundry. Фабрики возвращают объекты инструментов SDK, которые вы передаёте в tools= на Agent или напрямую в client.get_response(..., tools=[...]). Средства агента, управляемые службой, см. в разделе Microsoft Служба агента Foundry.
Фабричные методы — это методы класса, поэтому для создания инструмента экземпляр не нужен:
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential
agent = Agent(
client=FoundryChatClient(credential=AzureCliCredential()),
instructions="You can search the web and run code.",
tools=[
FoundryChatClient.get_web_search_tool(),
FoundryChatClient.get_code_interpreter_tool(),
],
)
Поддержка инструментов
В таблице ниже перечислены все инструменты, которые предоставляет Python FoundryChatClient, на сегодняшний день.
| инструмент | Фабрика в FoundryChatClient |
Статус | Detail |
|---|---|---|---|
| Средства функций | n/a — передайте любой вызываемый объект Python или @ai_function |
GA | Вызывается локально в процессе Python. |
| Утверждение инструмента | n/a — оборачивает существующие инструменты | GA | Работает с размещёнными средствами MCP и инструментами функций. |
| Интерпретатор кода | get_code_interpreter_tool |
GA | Изолированное выполнение кода в Foundry. |
| Поиск файлов | get_file_search_tool |
GA | Поиск отправленных файлов через хранилища векторов Foundry. |
| Поиск в Интернете | get_web_search_tool |
GA | Привязка к веб-данным на базе Bing под управлением Microsoft. Только модели Azure OpenAI. |
| Генерация изображений | get_image_generation_tool |
GA | Генерация изображений на платформе Foundry. |
| MCP на хостинге | get_mcp_tool |
GA | Удаленный сервер MCP, вызываемый Foundry. |
| Локальный MCP | n/a — используйте MCPStreamableHTTPTool / MCPStdioTool |
GA | Работает в вашем процессе; совместим с любым клиентом. |
| панель элементов Microsoft Foundry |
MCPStreamableHTTPTool или FoundryToolbox |
Бета-версия | Используется через MCP из FoundryChatClient; подключается на стороне сервера в FoundryAgent. |
| Заземление Bing | get_bing_grounding_tool |
Experimental | Приведите собственный заземление с помощью ресурса Bing Search. |
| Пользовательский поиск Bing | get_bing_custom_search_tool |
Preview | Bing заземление ограничено списком курируемых доменов. |
| Поиск с использованием ИИ Azure | get_azure_ai_search_tool |
Experimental | Выполните поиск по индексу Поиск с использованием ИИ Azure через подключение Foundry. |
| SharePoint | get_sharepoint_tool |
Preview | Основывайте ответы на контенте SharePoint. |
| Microsoft Fabric | get_fabric_tool |
Preview | Запросить данные у агента данных Fabric. |
| Поиск памяти | get_memory_search_tool |
Preview | Выполните поиск в хранилище памяти, управляемом Foundry. |
| Использование компьютера | get_computer_use_tool |
Preview | Разрешите агенту работать в среде рабочего стола или браузера. |
| Автоматизация браузера | get_browser_automation_tool |
Preview | Управляйте браузером через подключение к Azure Playwright. |
| Агент — агент (A2A) | get_a2a_tool |
Preview | Вызов другого A2A-агента как инструмента. |
Замечание
Экспериментальные фабрики служат обёртками для типов SDK GA Foundry, но сами эти обёртки могут измениться до выхода общедоступной версии.
Фабрики предварительной версии инкапсулируют типы SDK Foundry, чья базовая функциональность находится на стадии предварительной версии и может измениться или быть удалена. Оба выдают ExperimentalWarning первый раз, когда они используются в процессе.
Варианты поиска в Интернете
Foundry предоставляет три варианта заземления с поддержкой Bing. Выберите тот, который соответствует вашему сценарию:
-
get_web_search_tool(GA) — вариант по умолчанию, не требующий настройки; ресурс Bing, управляемый Microsoft. Только модели Azure OpenAI. Ограниченоuser_locationиsearch_context_size. -
get_bing_grounding_tool(экспериментальная) — используйте собственный ресурс Azure Bing Search для Grounding. Поддерживаетcount,freshness,market,set_langи модели, не относящиеся к OpenAI Foundry. -
get_bing_custom_search_tool(предварительная версия) — используйте свой экземпляр Bing Custom Search, чтобы ограничить использование данных заранее отобранным набором доменов.
Все три отправляют данные поиска за пределами границы соответствия Azure. Ознакомьтесь с обзором функции web grounding, чтобы увидеть полное сравнение.
client = FoundryChatClient(credential=AzureCliCredential())
# Default (GA): minimal configuration
web_search = client.get_web_search_tool(
user_location={"city": "Amsterdam", "country": "NL"},
search_context_size="medium",
)
Генерирование изображений
get_image_generation_tool настраивает размещённый инструмент Foundry для генерации изображений. Модель создает изображение прямо в ответе — никакими дополнительными файлами не нужно управлять.
image_gen = FoundryChatClient.get_image_generation_tool(
model="gpt-image-1",
size="1024x1024",
output_format="png",
quality="high",
)
Обоснование с помощью Bing
get_bing_grounding_tool является оболочкой для средства Grounding with Bing Search Foundry. Вы самостоятельно создаёте ресурс Grounding with Bing Search и добавляете его как подключение проекта Foundry, а затем передаёте идентификатор подключения.
bing = FoundryChatClient.get_bing_grounding_tool(
connection_id="/subscriptions/.../connections/my-bing",
market="en-US",
freshness="Day",
count=10,
)
Пользовательский поиск Bing
get_bing_custom_search_tool ограничивает привязку к данным списком разрешённых источников, определённым в ресурсе Bing Custom Search.
bing_custom = FoundryChatClient.get_bing_custom_search_tool(
connection_id="/subscriptions/.../connections/my-bing-custom",
instance_name="docs-only",
market="en-US",
)
Поиск с использованием ИИ Azure
get_azure_ai_search_tool позволяет агенту запрашивать индекс Поиск с использованием ИИ Azure через подключение проекта Foundry.
ai_search = FoundryChatClient.get_azure_ai_search_tool(
index_connection_id="/subscriptions/.../connections/my-search",
index_name="product-docs",
query_type="vector_semantic_hybrid",
top_k=5,
)
SharePoint
get_sharepoint_tool основывает ответы на содержимом SharePoint, доступном через подключение Foundry к SharePoint.
sharepoint = FoundryChatClient.get_sharepoint_tool(
connection_id="/subscriptions/.../connections/my-sharepoint",
)
Microsoft Fabric
get_fabric_tool подключает агента к агенту данных Microsoft Fabric через подключение Foundry, чтобы агент мог отвечать на вопросы о данных Fabric.
fabric = FoundryChatClient.get_fabric_tool(
connection_id="/subscriptions/.../connections/my-fabric",
)
Поиск памяти
get_memory_search_tool позволяет агенту выполнять поиск в хранилище памяти, управляемом Foundry, при необходимости ограничивая поиск областью пользователя или арендатора.
memory = FoundryChatClient.get_memory_search_tool(
memory_store_name="user-preferences",
scope="{{$userId}}",
)
Использование компьютера
get_computer_use_tool настраивает инструмент предварительного доступа Computer Use — модель может управлять средой рабочего стола или браузера посредством команд указателя и клавиатуры.
computer = FoundryChatClient.get_computer_use_tool(
environment="browser",
display_width=1280,
display_height=800,
)
Браузерная автоматизация
get_browser_automation_tool подключает агент к ресурсу Azure Playwright Testing с помощью подключения Foundry. Агент может управлять реальным браузером через Playwright.
browser = FoundryChatClient.get_browser_automation_tool(
connection_id="/subscriptions/.../connections/my-playwright",
)
Агент — агент (A2A)
get_a2a_tool предоставляет доступ к удалённому агенту A2A как к инструменту, чтобы агент Foundry мог обращаться к нему. Укажите либо base_url (и, при необходимости, agent_card_path), либо project_connection_id для сохранённого подключения A2A.
a2a = FoundryChatClient.get_a2a_tool(
base_url="https://remote-agent.example.com",
agent_card_path="/.well-known/agent-card.json",
)
Общие рекомендации по обнаружению, сеансам и потоковой передаче A2A см. в службе агента A2A.
Создание внедренных модулей с помощью FoundryEmbeddingClient
Используйте FoundryEmbeddingClient, когда требуется встраивание текста или изображения из конечной точки Foundry models.
from agent_framework.foundry import FoundryEmbeddingClient
async with FoundryEmbeddingClient() as client:
result = await client.get_embeddings(["hello from Agent Framework"])
print(result[0].dimensions)
Использование агента
FoundryChatClientинтегрируется со стандартным интерфейсом PythonAgent, включая вызовы инструментов, сеансы и ответы потоковой передачи. Для локальных сред выполнения используйте отдельную страницу локального поставщика Foundry.
Именованные пакеты конфигураций размещенных инструментов см. в разделе Microsoft панели элементов Foundry.
Литейные в Go
SDK для Go предоставляет доступ к агентам Microsoft Foundry через github.com/microsoft/agent-framework-go/provider/foundryprovider.
Примеры Foundry Go см. в примерах прямого вывода, функций, размещенных инструментов, MCP и сервера-агента.
Пакет поддерживает два целевых объекта агента:
| Target | Перейти к фигуре | Используйте, если |
|---|---|---|
| Развертывание модели с привязкой к проекту | foundryprovider.ModelDeployment("gpt-4o-mini") |
Ваше приложение определяет инструкции, инструменты и ход диалога. |
| Существующий серверный агент Foundry | foundryprovider.ServerAgent("my-agent") |
Определение агента уже настроено в Foundry. |
Configuration
Укажите конечную точку проекта Foundry и развертывание модели:
FOUNDRY_PROJECT_ENDPOINT="https://<your-project>.services.ai.azure.com/api/projects/<project-id>"
FOUNDRY_MODEL="gpt-4o-mini"
агент Foundry, поддерживаемый проектом
Используйте ModelDeployment, если хотите создать в коде агент Agent Framework и передать инструкции, инструменты, промежуточное ПО и поставщиков контекста из вашего Go-приложения.
import (
"context"
"os"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/microsoft/agent-framework-go/agent"
"github.com/microsoft/agent-framework-go/provider/foundryprovider"
)
endpoint := os.Getenv("FOUNDRY_PROJECT_ENDPOINT")
model := os.Getenv("FOUNDRY_MODEL")
token, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
panic(err)
}
a := foundryprovider.NewAgent(
endpoint,
token,
foundryprovider.ModelDeployment(model),
foundryprovider.AgentConfig{
Instructions: "You are good at telling jokes.",
Config: agent.Config{
Name: "Joker",
},
},
)
resp, err := a.RunText(context.Background(), "Tell me a joke about a pirate.").Collect()
Существующий серверный агент Foundry
Используйте ServerAgent , когда вы хотите вызвать агент, уже настроенный в Foundry. Агент на стороне сервера владеет своими инструкциями и инструментами, поэтому AgentConfig.Instructions игнорируется для этого целевого объекта.
a := foundryprovider.NewAgent(
endpoint,
token,
foundryprovider.ServerAgent("my-agent"),
foundryprovider.AgentConfig{
Config: agent.Config{
Name: "my-agent",
},
},
)
resp, err := a.RunText(ctx, "Summarize the current project status.").Collect()
Tools
Агенты Foundry, поддерживаемые проектом, поддерживают стандартный интерфейс инструментов Go Agent Framework для локальных инструментов и объявлений поддерживаемых размещённых инструментов.
| инструмент | Статус | Примечания |
|---|---|---|
| Средства функций | Поддерживается | Функции выполняются в процессе Go. |
| Утверждение инструмента | Поддерживается | Работает с инструментами локальных функций через цикл автоматического вызова инструментов. |
| Интерпретатор кода | Поддерживается | Используйте &hostedtool.CodeInterpreter{}. |
| Поиск в Интернете | Поддерживается | Используйте &hostedtool.WebSearch{}. |
| Локальные средства MCP | Поддерживается | Используйте tool/mcptool, чтобы подключиться к серверу MCP и сделать его инструменты доступными локально. |
| Размещенные средства MCP | В настоящее время это не задокументировано для Go Foundry | Используйте локальные средства MCP, если вам нужны серверы MCP с агентами Go Foundry. |
| панель элементов Microsoft Foundry | В настоящее время это недоступно через вспомогательную функцию Go. |
Для инструментов локальных функций добавьте значения tool.Tool через agent.Config.Tools:
a := foundryprovider.NewAgent(
endpoint,
token,
foundryprovider.ModelDeployment(model),
foundryprovider.AgentConfig{
Instructions: "You are a helpful assistant.",
Config: agent.Config{
Tools: []tool.Tool{weatherTool},
},
},
)
Для выполнения размещённого кода передайте описание размещённого инструмента:
a := foundryprovider.NewAgent(
endpoint,
token,
foundryprovider.ModelDeployment(model),
foundryprovider.AgentConfig{
Instructions: "You solve problems with code.",
Config: agent.Config{
Tools: []tool.Tool{&hostedtool.CodeInterpreter{}},
},
},
)
Заголовки клиента и предоставляемая модель
Foundry принимает x-client-* заголовки для каждого запуска. Добавьте их с помощью foundryprovider.WithClientHeader или foundryprovider.WithClientHeaders:
resp, err := a.RunText(
ctx,
"Hello!",
foundryprovider.WithClientHeader("x-client-scenario", "docs"),
).Collect()
Когда Foundry возвращает заголовок ответа x-ms-served-model, провайдер Go добавляет его в response/update additional properties как ServedModel.
if servedModel, ok := resp.AdditionalProperties["ServedModel"].(string); ok {
fmt.Println(servedModel)
}
Поставщик памяти Foundry
Используйте foundryprovider.NewMemoryProvider, если нужно, чтобы агент Agent Framework при каждом запуске извлекал данные из хранилища памяти под управлением Foundry и обновлял его.
import (
"log/slog"
"github.com/microsoft/agent-framework-go/agent"
"github.com/microsoft/agent-framework-go/provider/foundryprovider"
)
memoryProvider := foundryprovider.NewMemoryProvider(
endpoint,
tokenCredential,
"memory-store-sample",
func(*agent.Session) string { return "user-123" },
foundryprovider.MemoryProviderConfig{
Logger: slog.Default(),
},
)
a := foundryprovider.NewAgent(
endpoint,
tokenCredential,
foundryprovider.ModelDeployment(model),
foundryprovider.AgentConfig{
Instructions: "Use known memories about the user when responding.",
Config: agent.Config{
Name: "FoundryMemoryAgent",
ContextProviders: []agent.ContextProvider{memoryProvider},
},
},
)
Конечная точка должна быть конечной точкой Microsoft Foundry уровня проекта, а хранилище памяти уже должно существовать в этом проекте. Функция обратного вызова области видимости должна возвращать стабильный ключ секционирования для пользователя, арендатора или беседы.
Tip
См. образец Go для памяти Foundry для полного рабочего примера.
Текущие пробелы Go
Поддержка Go в настоящее время не включает размещенные в Foundry развертывания и жизненного цикла или API администрирования, клиенты внедрения или вспомогательные средства для Microsoft панели элементов Foundry. Используйте портал Foundry или пакеты SDK сервиса для выполнения этих операций.