Обзор инструментов

Agent Framework поддерживает множество различных типов средств, расширяющих возможности агента. Средства позволяют агентам взаимодействовать с внешними системами, выполнять код, искать данные и многое другое.

Типы инструментов

Тип инструмента Description
Средства функций Пользовательский код, который агенты могут вызывать во время бесед
Интерпретатор кода Выполнение кода в изолированной среде
Поиск файлов Поиск по отправленным файлам
Веб-поиск Поиск сведений в Интернете
Размещенные средства MCP Серверы MCP, вызываемые средой выполнения поставщика
Локальные средства MCP Серверы MCP, работающие локально или на пользовательских узлах
Панели элементов Foundry Именованные пакеты версий конфигураций размещенных инструментов, управляемых в проекте Foundry
Тип инструмента Description
Средства функций Пользовательский код, который агенты могут вызывать во время бесед
Интерпретатор кода Выполнение кода в изолированной среде
Поиск файлов Поиск по отправленным файлам
Веб-поиск Поиск сведений в Интернете
Размещенные средства MCP Серверы MCP, вызываемые средой выполнения поставщика
Локальные средства MCP Серверы MCP, работающие локально или на пользовательских узлах
Панели элементов Foundry Именованные пакеты версий конфигураций размещенных инструментов, управляемых в проекте Foundry
Генерация изображений Создание размещенного образа в среде выполнения Foundry / OpenAI Responses
Shell Выполнение размещенной оболочки в среде выполнения OpenAI Responses — отличается от встроенных средств выполнения оболочки или URL-адреса интерфейса командной строки GitHub Copilot
Заземление Bing Веб-приземление с помощью собственного ресурса Bing Search — экспериментальный
Пользовательский поиск Bing Приземление Bing ограничено списком курируемых доменов — предварительная версия
Поиск с использованием ИИ Azure Запрос индекса Поиск с использованием ИИ Azure через подключение Foundry — экспериментальный
SharePoint Ответы на землю в SharePoint содержимом — предварительная версия
Microsoft Fabric Запрос агента данных Fabric — предварительная версия
Поиск памяти Поиск хранилища памяти, управляемого Foundry, — предварительная версия
Использование компьютера Создание рабочего стола или среды браузера — предварительная версия
Автоматизация браузера Запуск браузера с помощью Azure Playwright — предварительная версия
Средство "Агент — агент" (A2A) Вызов удаленного агента A2A в качестве средства из агента Foundry — предварительная версия

Замечание

Инструменты, помеченные как экспериментальные или предварительные версии , документируются на соответствующей странице поставщика и выдают ExperimentalWarning первый раз, когда они используются в процессе.

Тип инструмента Package Description
Средства функций tool/functool Функции Typed Go с схемами JSON, которые агент может вызывать
Средство агента в качестве функции tool/agenttool Оболочка агента в качестве другого tool.FuncTool агента может вызвать его.
Локальные средства MCP tool/mcptool Подключение к серверам MCP и предоставление их инструментов в качестве tool.FuncTool значений
Веб-поиск tool/hostedtool.WebSearch Объявление веб-поиска на стороне поставщика при поддержке службы поддержки
Поиск файлов tool/hostedtool.FileSearch Объявление файла на стороне поставщика или поиска векторного хранилища
Интерпретатор кода tool/hostedtool.CodeInterpreter Объявление выполнения кода на стороне поставщика
Размещенные средства MCP tool/hostedtool.MCPServer Объявление сервера MCP для среды выполнения поставщика для вызова
Инструмент с локальной оболочкой tool/shelltool Выполнение команд локальной оболочки с помощью средства функции, требующего утверждения по умолчанию

Все средства реализуют tool.Tool интерфейс:

type Tool interface {
    Name() string
    Description() string
}

Дополнительные средства функций реализуют tool.FuncTool:

import "context"

type FuncTool interface {
    Tool
    Schema() any
    ReturnSchema() any
    Call(ctx context.Context, arguments string) (any, error)
}

Большинство приложений создают средства функций с functool.New помощью или functool.MustNew вместо непосредственной реализации FuncTool . Платформа использует сигнатуру функции Go или теги структуры для создания схемы, предоставляемой модели.

Передача средств агенту с помощью 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, calculatorTool},
    },
})

Или добавьте средства для каждого запуска:

resp, err := a.RunText(ctx, "What's the weather?", agent.WithTool(weatherTool)).Collect()

Утверждение инструмента

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

Для Go пометьте неизменяемое средство tool.ApprovalRequiredFunc или используйте средство, которое уже реализует tool.ApprovalRequiredTool, например локальное средство оболочки. Запросы на утверждение и ответы передаются по промежуточному столу средства автоматического вызова, поэтому они работают с поставщиками, возвращающими локальные вызовы функций.

Матрица поддержки поставщиков

Поставщики OpenAI и Azure OpenAI предлагают два типа клиентов — ответы и завершение чата — с разными возможностями инструментов. Клиенты Azure OpenAI отражают эквиваленты OpenAI. Copilot Studio и A2A агенты выполняются в удаленной службе, чтобы их возможности были настроены на удаленном агенте, а не через клиент Agent Framework— они не перечислены в матрице.

Тип инструмента Ответы Завершение чата Foundry Anthropic Ollama GitHub Copilot
Средства функций
Интерпретатор кода
Поиск файлов
Веб-поиск
Размещенные средства MCP
Локальные средства MCP

Замечание

Столбцы Responses и Chat Completion применяются как к OpenAI, так и к Azure OpenAI— Azure варианты отражают ту же поддержку средства, что и их аналоги OpenAI. Устаревший API OpenAI Assistants API больше не документируется; Инструкции по миграции см. в руководстве по миграции Semantic Kernel.

Матрица поддержки поставщиков

Поставщики OpenAI и Azure OpenAI предлагают несколько типов клиентов с разными возможностями инструментов. Клиенты Azure OpenAI отражают эквиваленты OpenAI. Столбец Foundry применяется FoundryChatClient к — для FoundryAgent, средства настраиваются в определении агента Foundry (см. сведения о том, что работает и что не используется FoundryAgent). Copilot Studio и A2A агенты выполняются в удаленной службе, чтобы их возможности были настроены на удаленном агенте, а не через клиент Agent Framework— они не перечислены в матрице.

Тип инструмента Ответы Завершение чата Foundry Anthropic Ollama Литейный локальный GitHub Copilot
Средства функций ⚠️¹ ⚠️¹
Интерпретатор кода
Поиск файлов
Веб-поиск
Генерация изображений
Размещенная оболочка (get_shell_tool)
Встроенная оболочка/ файловая система / получение URL-адреса ✅2
Размещенные средства MCP
Локальные средства MCP
Панели элементов Foundry
Bing Grounding (экспериментальный)
Настраиваемый поиск Bing (предварительная версия)
Поиск с использованием ИИ Azure (экспериментальный)
SharePoint (предварительная версия)
Microsoft Fabric (предварительная версия)
Поиск памяти (предварительная версия)
Использование компьютера (предварительная версия)
Автоматизация браузера (предварительная версия)
Средство "агент — агент" (A2A) ( предварительная версия)

¹ Зависит от выбранной локальной модели, поддерживающей вызов функции. 2. Встроенный в среду выполнения GitHub Copilot CLI, включаемый обработчиком разрешений. Разные поверхности от OpenAI get_shell_tool.

Замечание

Столбцы Responses и Chat Completion применяются как к OpenAI, так и к Azure OpenAI— Azure варианты отражают ту же поддержку средства, что и их аналоги OpenAI. Локальные инструменты MCP работают с любым поставщиком, поддерживающим средства функций.

Матрица поддержки поставщиков

Пакет SDK Go предоставляет Microsoft Foundry через foundryprovider OpenAI/Azure OpenAI.openaiprovider Размещенные средства в tool/hostedtool объявлениях: пакет SDK Go отправляет их поставщику, а поставщик решает, доступна ли размещенная возможность.

Тип инструмента Foundry Ответы Завершение чата Anthropic
Средства функций
Средство агента в качестве функции
Локальные средства MCP
Веб-поиск
Поиск файлов
Интерпретатор кода
Размещенные средства MCP
Инструмент с локальной оболочкой

Замечание

Локальные инструменты MCP и локальное средство оболочки — это инструменты функций с точки зрения поставщика, поэтому они следуют поддержке функций. Размещенные инструменты, такие как hostedtool.FileSearchhostedtool.CodeInterpreter, и hostedtool.MCPServer выполняются службой ИИ, а не процессом Go.

Использование агента в качестве средства функции

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

.AsAIFunction() Вызовите AIAgent для преобразования его в средство функции, которое может быть предоставлено другому агенту:

// Create the inner agent with its own tools
AIAgent weatherAgent = new AIProjectClient(
    new Uri("<your-foundry-project-endpoint>"),
    new DefaultAzureCredential())
     .AsAIAgent(
        model: "gpt-4o-mini",
        instructions: "You answer questions about the weather.",
        name: "WeatherAgent",
        description: "An agent that answers questions about the weather.",
        tools: [AIFunctionFactory.Create(GetWeather)]);

// Create the main agent and provide the inner agent as a function tool
AIAgent agent = new AIProjectClient(
    new Uri("<your-foundry-project-endpoint>"),
    new DefaultAzureCredential())
     .AsAIAgent(
        model: "gpt-4o-mini",
        instructions: "You are a helpful assistant.",
        tools: [weatherAgent.AsAIFunction()]);

// The main agent can now call the weather agent as a tool
Console.WriteLine(await agent.RunAsync("What is the weather like in Amsterdam?"));

Предупреждение

DefaultAzureCredential удобно для разработки, но требует тщательного рассмотрения в рабочей среде. В рабочей среде рекомендуется использовать определенные учетные данные (например, ManagedIdentityCredential), чтобы избежать проблем с задержкой, непреднамеренной проверки данных аутентификации и потенциальных рисков безопасности из-за резервных механизмов.

Вызов .as_tool() агента, чтобы преобразовать его в средство функции, которое может быть предоставлено другому агенту:

import os
from agent_framework.openai import OpenAIChatCompletionClient
from azure.identity import AzureCliCredential

# Create the inner agent with its own tools
weather_agent = OpenAIChatCompletionClient(
    model=os.environ["AZURE_OPENAI_CHAT_COMPLETION_MODEL"],
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
    credential=AzureCliCredential(),
).as_agent(
    name="WeatherAgent",
    description="An agent that answers questions about the weather.",
    instructions="You answer questions about the weather.",
    tools=get_weather
)

# Create the main agent and provide the inner agent as a function tool
main_agent = OpenAIChatCompletionClient(
    model=os.environ["AZURE_OPENAI_CHAT_COMPLETION_MODEL"],
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
    credential=AzureCliCredential(),
).as_agent(
    instructions="You are a helpful assistant.",
    tools=weather_agent.as_tool()
)

# The main agent can now call the weather agent as a tool
result = await main_agent.run("What is the weather like in Amsterdam?")
print(result.text)

Кроме того, можно настроить имя, описание и имя аргумента средства:

weather_tool = weather_agent.as_tool(
    name="WeatherLookup",
    description="Look up weather information for any location",
    arg_name="query",
    arg_description="The weather query or location"
)

Обтекайте агент, agenttool.New чтобы сделать его доступным в качестве другого tool.FuncTool агента:

import (
    "github.com/microsoft/agent-framework-go/agent"
    "github.com/microsoft/agent-framework-go/provider/foundryprovider"
    "github.com/microsoft/agent-framework-go/tool"
    "github.com/microsoft/agent-framework-go/tool/agenttool"
)

weatherAgent := foundryprovider.NewAgent(endpoint, token, foundryprovider.ModelDeployment(model), foundryprovider.AgentConfig{
    Instructions: "You answer questions about the weather.",
    Config: agent.Config{
        Name:        "WeatherAgent",
        Description: "An agent that answers weather questions.",
        Tools:       []tool.Tool{weatherTool},
    },
})

mainAgent := foundryprovider.NewAgent(endpoint, token, foundryprovider.ModelDeployment(model), foundryprovider.AgentConfig{
    Instructions: "You are a helpful assistant.",
    Config: agent.Config{
        Tools: []tool.Tool{agenttool.New(weatherAgent, agenttool.Config{})},
    },
})

resp, err := mainAgent.RunText(ctx, "Should I bring an umbrella to Amsterdam?").Collect()

Вы также можете предоставить один и тот же агент оболочки с помощью MCP mcptool.AddTool, так как agenttool.New возвращает средство функции.

Tip

Ознакомьтесь с примером средства-функции агента и агентом в качестве примера средства MCP , чтобы получить полные примеры запуска.

Дальнейшие шаги