Поставщик модели Microsoft Foundry

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,
)

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",
)

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 сервиса для выполнения этих операций.

Дальнейшие действия