Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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.