Visão Geral das Ferramentas

O Agent Framework suporta muitos tipos diferentes de ferramentas que estendem as capacidades dos agentes. As ferramentas permitem aos agentes interagir com sistemas externos, executar código, pesquisar dados e muito mais.

Tipos de Ferramentas

Tipo de Ferramenta Description
Ferramentas Funcionais Código personalizado que os agentes podem chamar durante conversas
Intérprete de código Executar código num ambiente sandbox
Pesquisa de Ficheiros Pesquise entre ficheiros carregados
Pesquisa na Web Pesquise na internet para obter informações
Ferramentas MCP Alojadas Servidores MCP invocados pelo tempo de execução do fornecedor
Ferramentas MCP Locais Servidores MCP a correr localmente ou em hosts personalizados
Caixas de Ferramentas da Fundição Pacotes nomeados e versionados de configurações de ferramentas alojadas geridos num projeto Foundry
Tipo de Ferramenta Description
Ferramentas Funcionais Código personalizado que os agentes podem chamar durante conversas
Intérprete de código Executar código num ambiente sandbox
Pesquisa de Ficheiros Pesquise entre ficheiros carregados
Pesquisa na Web Pesquise na internet para obter informações
Ferramentas MCP Alojadas Servidores MCP invocados pelo tempo de execução do fornecedor
Ferramentas MCP Locais Servidores MCP a correr localmente ou em hosts personalizados
Caixas de Ferramentas da Fundição Pacotes nomeados e versionados de configurações de ferramentas alojadas geridos num projeto Foundry
Geração de Imagem Geração de imagens alojadas no runtime Foundry / OpenAI Responses
Shell Execução de shell alojada no runtime OpenAI Responses — diferente das ferramentas integradas de runtime shell/ficheiro/URL do GitHub Copilot CLI
Aterramento do Bing Grounding web através do seu próprio recurso de pesquisa Grounding with Bing — experimental
Pesquisa Personalizada Bing Aterramento do Bing restrito a uma lista de domínios curada — pré-visualização
Pesquisa de IA do Azure Consultar um índice Pesquisa de IA do Azure através de uma ligação Foundry — experimental
SharePoint Respostas no terreno em conteúdo SharePoint — pré-visualização
Microsoft Fabric Consultar um agente de dados Fabric — pré-visualização
Pesquisa de Memória Pesquise numa loja de memória gerida pela Foundry — pré-visualização
Utilização de computadores Conduza um ambiente de ambiente de trabalho ou navegador — pré-visualização
Automação de Navegadores Conduza um navegador via Azure Playwright — pré-visualização
Ferramenta Agent-para-Agente (A2A) Chamar um agente A2A remoto como ferramenta a partir de um agente Foundry — pré-visualização

Observação

As ferramentas marcadas como experimental ou de pré-visualização são documentadas na página do fornecedor relevante e emitem uma ExperimentalWarning primeira vez que são usadas num processo.

Tipo de Ferramenta Pacote Description
Ferramentas Funcionais tool/functool Funções Go Tipadas com esquemas JSON que o agente pode chamar
Agente como Ferramenta de Função tool/agenttool Envolve um agente como um tool.FuncTool para que outro agente possa chamá-lo
Ferramentas MCP Locais tool/mcptool Liga-te a servidores MCP e expõe as suas ferramentas como tool.FuncTool valores
Pesquisa na Web tool/hostedtool.WebSearch Declarar pesquisa web do lado do provedor quando o serviço de apoio a suportar
Pesquisa de Ficheiros tool/hostedtool.FileSearch Declarar ficheiro do lado do fornecedor ou pesquisa vetorial
Intérprete de código tool/hostedtool.CodeInterpreter Declarar execução de código do lado do fornecedor
Ferramentas MCP Alojadas tool/hostedtool.MCPServer Declare um servidor MCP para que o tempo de execução do fornecedor possa chamar
Ferramenta local de concha tool/shelltool Executar comandos locais de shell através de uma ferramenta de função que requer aprovação por defeito

Todas as ferramentas implementam a tool.Tool interface:

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

As ferramentas funcionais implementam tool.FuncTooladicionalmente:

import "context"

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

A maioria das aplicações cria ferramentas funcionais com functool.New ou functool.MustNew em vez de implementarem FuncTool diretamente. A framework utiliza a assinatura da função Go ou tags struct para construir o esquema exposto ao modelo.

Passe ferramentas ao agente através agent.Config.Toolsde:

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

Ou adicionar ferramentas por cada execução:

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

Aprovação de Ferramentas

A Aprovação de Ferramentas é uma funcionalidade de framework que permite bloquear invocações de ferramentas através de uma decisão "human in-the-loop" antes de o modelo receber o resultado. Trabalha com prestadores cujos clientes invocam ferramentas localmente; As ferramentas alojadas do lado do serviço seguem o próprio comportamento de aprovação do fornecedor. Consulte a página de Aprovação de Ferramentas para o padrão completo, incluindo como as aprovações interagem com sessões, streaming e middleware.

Para Go, marque uma ferramenta invocável com tool.ApprovalRequiredFunc ou use uma ferramenta que já implemente tool.ApprovalRequiredTool, como a ferramenta shell local. Os pedidos e respostas de aprovação fluem através do middleware de chamadas automáticas da ferramenta, por isso trabalham com fornecedores que retornam chamadas de função local.

Matriz de Suporte ao Prestador

Os fornecedores OpenAI e Azure OpenAI oferecem cada um dois tipos de clientes — Respostas e Conclusão de Chat — com diferentes capacidades de ferramenta. Os clientes Azure OpenAI espelham os seus equivalentes OpenAI. Copilot Studio e A2A funcionam num serviço remoto, pelo que as suas capacidades estão configuradas no agente remoto em vez de através do cliente Agent Framework — não estão listados na matriz.

Tipo de Ferramenta Respostas Conclusão do Chat Fundição Anthropic Ollama Copiloto do GitHub
Ferramentas Funcionais
Intérprete de código
Pesquisa de Ficheiros
Pesquisa na Web
Ferramentas MCP Alojadas
Ferramentas MCP Locais

Observação

As colunas Respostas e Chat Completion aplicam-se tanto ao OpenAI como ao Azure OpenAI — as variantes Azure espelham o mesmo suporte de ferramentas que os seus equivalentes OpenAI. A obsoleta API OpenAI Assistants já não está documentada; Para orientações de migração, consulte o Guia de Migração Kernel Semântico.

Matriz de Suporte ao Prestador

Os fornecedores OpenAI e Azure OpenAI oferecem cada um múltiplos tipos de clientes com diferentes capacidades de ferramenta. Os clientes Azure OpenAI espelham os seus equivalentes OpenAI. A coluna Foundry aplica-se a FoundryChatClient — para FoundryAgent, as ferramentas estão configuradas na definição do agente Foundry ( veja O que funciona e o que não funciona com FoundryAgent). Copilot Studio e A2A funcionam num serviço remoto, pelo que as suas capacidades estão configuradas no agente remoto em vez de através do cliente Agent Framework — não estão listados na matriz.

Tipo de Ferramenta Respostas Conclusão do Chat Fundição Anthropic Ollama Fundição Local Copiloto do GitHub
Ferramentas Funcionais ⚠️¹ ⚠️¹
Intérprete de código
Pesquisa de Ficheiros
Pesquisa na Web
Geração de Imagem
Shell Hospedado (get_shell_tool)
Shell / sistema de ficheiros / busca de URL incorporada ✅²
Ferramentas MCP Alojadas
Ferramentas MCP Locais
Caixas de Ferramentas da Fundição
Bing Grounding (experimental)
Pesquisa Personalizada Bing (pré-visualização)
Pesquisa de IA do Azure (experimental)
SharePoint (pré-visualização)
Microsoft Fabric (pré-visualização)
Pesquisa de Memória (pré-visualização)
Utilização do Computador (pré-visualização)
Automação do Navegador (pré-visualização)
Ferramenta Agent-para-Agente (A2A) (pré-visualização)

¹ Depende do modelo local escolhido que suporta a chamada da função. ² Integrado no runtime CLI do GitHub Copilot, bloqueado por um gestor de permissões. Superfície diferente da do OpenAI get_shell_tool.

Observação

As colunas Respostas e Chat Completion aplicam-se tanto ao OpenAI como ao Azure OpenAI — as variantes Azure espelham o mesmo suporte de ferramentas que os seus equivalentes OpenAI. As ferramentas MCP locais funcionam com qualquer fornecedor que suporte ferramentas funcionais.

Matriz de Suporte ao Prestador

O Go SDK expõe o Microsoft Foundry através foundryprovider de um espaço e o OpenAI OpenAI/Azure através openaiproviderde . As ferramentas alojadas em tool/hostedtool são declarações: o Go SDK envia-as ao fornecedor, e o fornecedor decide se essa capacidade alojada está disponível.

Tipo de Ferramenta Fundição Respostas Conclusão do bate-papo Anthropic
Ferramentas Funcionais
Agente como Ferramenta de Função
Ferramentas MCP Locais
Pesquisa na Web
Pesquisa de Ficheiros
Intérprete de código
Ferramentas MCP Alojadas
Ferramenta local de concha

Observação

As ferramentas MCP locais e a ferramenta local shell são ferramentas funcionais do ponto de vista do fornecedor, pelo que seguem o suporte à ferramenta funcional. Ferramentas alojadas como hostedtool.FileSearch, hostedtool.CodeInterpreter, e hostedtool.MCPServer são executadas pelo serviço de IA, não pelo processo Go.

Utilização de um Agente como Ferramenta Funcional

Pode usar um agente como ferramenta funcional para outro agente, permitindo a composição de agentes e fluxos de trabalho mais avançados. O agente interno é convertido numa ferramenta funcional e fornecido ao agente externo, que pode então chamá-lo conforme necessário.

Chama .AsAIFunction() um AIAgent para o converter numa ferramenta de função que possa ser fornecida a outro agente:

// 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?"));

Advertência

DefaultAzureCredential é conveniente para o desenvolvimento, mas requer uma consideração cuidadosa na produção. Em produção, considere usar uma credencial específica (por exemplo, ManagedIdentityCredential) para evitar problemas de latência, sondagens não intencionais de credenciais e potenciais riscos de segurança provenientes de mecanismos de recurso.

Chamar .as_tool() um agente para o converter numa ferramenta funcional que possa ser fornecida a outro agente:

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)

Também pode personalizar o nome da ferramenta, descrição e nome do argumento:

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

Envolva um agente com agenttool.New para o disponibilizar como tool.FuncTool um para outro agente:

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

Também podes expor o mesmo agente enrolado através do MCP com mcptool.AddTool, porque agenttool.New retorna uma ferramenta de função.

Tip

Veja o agente como exemplo de ferramenta funcional e o agente como exemplo de ferramenta MCP para exemplos completos executáveis.

Próximos passos