Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Agent Framework stöder många olika typer av verktyg som utökar agentfunktionerna. Med verktyg kan agenter interagera med externa system, köra kod, söka efter data med mera.
Verktygstyper
| Verktygstyp | Description |
|---|---|
| Funktionsverktyg | Anpassad kod som agenter kan anropa under konversationer |
| Kodtolkare | Köra kod i en miljö med begränsat läge |
| Filsökning | Sök igenom uppladdade filer |
| Webbsökning | Sök på webben efter information |
| Värdbaserade MCP-verktyg | MCP-servrar som anropas av providerkörningen |
| Lokala MCP-verktyg | MCP-servrar som körs lokalt eller på anpassade värdar |
| Verktygslådor för gjutning | Namngivna versionspaket med värdbaserade verktygskonfigurationer som hanteras i ett Foundry-projekt |
| Verktygstyp | Description |
|---|---|
| Funktionsverktyg | Anpassad kod som agenter kan anropa under konversationer |
| Kodtolkare | Köra kod i en miljö med begränsat läge |
| Filsökning | Sök igenom uppladdade filer |
| Webbsökning | Sök på webben efter information |
| Värdbaserade MCP-verktyg | MCP-servrar som anropas av providerkörningen |
| Lokala MCP-verktyg | MCP-servrar som körs lokalt eller på anpassade värdar |
| Verktygslådor för gjutning | Namngivna versionspaket med värdbaserade verktygskonfigurationer som hanteras i ett Foundry-projekt |
| Bildgenerering | Värdbaserad avbildningsgenerering på Runtime för Foundry/OpenAI-svar |
| Shell | Körning av värdbaserat gränssnitt på OpenAI-svarskörningen – skiljer sig från GitHub Copilot CLI:s inbyggda gränssnitt/fil-/URL-körningsverktyg |
| Grundläggning i Bing | Web grounding via din egen grounding med Bing Search-resurs – experimentell |
| Bing anpassad sökning | Grunderna i Bing är begränsade till en lista över granskade domäner – förhandsversion |
| Azure AI-sökning | Köra frågor mot ett Azure AI-sökning index via en Foundry-anslutning – experimentell |
| SharePoint | Grundsvar i SharePoint innehåll – förhandsversion |
| Microsoft Fabric | Fråga en Fabric dataagent – förhandsversion |
| Minnessökning | Sök i ett Foundry-hanterat minneslager – förhandsversion |
| Datoranvändning | Köra en skrivbords- eller webbläsarmiljö – förhandsversion |
| Webbläsarautomatisering | Kör en webbläsare via Azure Playwright – förhandsversion |
| A2A-verktyg (Agent-till-Agent) | Anropa en fjärransluten A2A-agent som ett verktyg från en Foundry-agent – förhandsversion |
Anmärkning
Verktyg som markerats som experimentella eller förhandsversioner dokumenteras på den relevanta providersidan och genererar en ExperimentalWarning första gång de används i en process.
| Verktygstyp | Package | Description |
|---|---|---|
| Funktionsverktyg | tool/functool |
Typade Go-funktioner med JSON-scheman som agenten kan anropa |
| Agent som funktionsverktyg | tool/agenttool |
Omsluta en agent som en så att en tool.FuncTool annan agent kan anropa den |
| Lokala MCP-verktyg | tool/mcptool |
Ansluta till MCP-servrar och exponera deras verktyg som tool.FuncTool värden |
| Webbsökning | tool/hostedtool.WebSearch |
Deklarera webbsökning på providersidan när säkerhetskopieringstjänsten stöder den |
| Filsökning | tool/hostedtool.FileSearch |
Deklarera sökning på providersidan eller vektorarkiv |
| Kodtolkare | tool/hostedtool.CodeInterpreter |
Deklarera kodkörning på providersidan |
| Värdbaserade MCP-verktyg | tool/hostedtool.MCPServer |
Deklarera en MCP-server för providerkörningen att anropa |
| Lokalt skalverktyg | tool/shelltool |
Kör lokala gränssnittskommandon via ett funktionsverktyg som kräver godkännande som standard |
Alla verktyg implementerar tool.Tool gränssnittet:
type Tool interface {
Name() string
Description() string
}
Funktionsverktyg implementerar tool.FuncTooldessutom :
import "context"
type FuncTool interface {
Tool
Schema() any
ReturnSchema() any
Call(ctx context.Context, arguments string) (any, error)
}
De flesta program skapar funktionsverktyg med functool.New eller functool.MustNew i stället för att implementera FuncTool direkt. Ramverket använder go-funktionssignaturen eller structtaggar för att skapa schemat som exponeras för modellen.
Skicka verktyg till agenten via 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},
},
})
Eller lägg till verktyg per körning:
resp, err := a.RunText(ctx, "What's the weather?", agent.WithTool(weatherTool)).Collect()
Godkännande av verktyg
Godkännande av verktyg är en ramverksfunktion som gör att du kan använda gate-verktygsanrop genom ett mänskligt beslut i loopen innan modellen får resultatet. Den fungerar med leverantörer vars klienter anropar verktyg lokalt. Värdbaserade verktyg på tjänstsidan följer leverantörens eget godkännandebeteende. Se sidan Godkännande av verktyg för det fullständiga mönstret, inklusive hur godkännanden interagerar med sessioner, strömning och mellanprogram.
För Go markerar du ett anropbart verktyg med tool.ApprovalRequiredFunc eller använder ett verktyg som redan implementerar tool.ApprovalRequiredTool, till exempel det lokala gränssnittet. Begäranden och svar om godkännande flödar genom verktygets automatiska anrop av mellanprogram, så att de fungerar med leverantörer som returnerar lokala funktionsanrop.
Providersupportmatris
OpenAI- och Azure OpenAI-leverantörerna erbjuder båda två klienttyper – svar och chattavslut – med olika verktygsfunktioner. Azure OpenAI-klienter speglar sina OpenAI-motsvarigheter. Copilot Studio- och A2A-agenter körs på en fjärrtjänst så att deras funktioner konfigureras på fjärragenten i stället för via Agent Framework-klienten – de visas inte i matrisen.
| Verktygstyp | Svaren | Chatten har slutförts | Gjuteri | Anthropic | Ollama | GitHub Copilot |
|---|---|---|---|---|---|---|
| Funktionsverktyg | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Kodtolkare | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Filsökning | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Webbsökning | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Värdbaserade MCP-verktyg | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ |
| Lokala MCP-verktyg | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Anmärkning
Kolumnerna Svar och Chattkomplettering gäller för både OpenAI och Azure OpenAI – Azure varianter speglar samma verktygsstöd som deras OpenAI-motsvarigheter. Det inaktuella API:et för OpenAI Assistants är inte längre dokumenterat. Vägledning för migrering finns i migreringsguiden för Semantic Kernel.
Providersupportmatris
OpenAI- och Azure OpenAI-leverantörerna erbjuder var och en flera klienttyper med olika verktygsfunktioner. Azure OpenAI-klienter speglar sina OpenAI-motsvarigheter. Kolumnen Foundry gäller för FoundryChatClient – för FoundryAgent, verktygen är konfigurerade för foundry-agentdefinitionen (se Vad fungerar och vad som inte fungerar med FoundryAgent).
Copilot Studio- och A2A-agenter körs på en fjärrtjänst så att deras funktioner konfigureras på fjärragenten i stället för via Agent Framework-klienten – de visas inte i matrisen.
| Verktygstyp | Svaren | Chatten har slutförts | Gjuteri | Anthropic | Ollama | Foundry Local | GitHub Copilot |
|---|---|---|---|---|---|---|---|
| Funktionsverktyg | ✅ | ✅ | ✅ | ✅ | ⚠️¹ | ⚠️¹ | ✅ |
| Kodtolkare | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Filsökning | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Webbsökning | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Bildgenerering | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
Värdbaserat gränssnitt (get_shell_tool) |
✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Inbyggt gränssnitt/filsystem/URL-hämtning | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅² |
| Värdbaserade MCP-verktyg | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ |
| Lokala MCP-verktyg | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Verktygslådor för gjutning | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Grundläggning i Bing (experimentell) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Anpassad Bing-sökning (förhandsversion) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Azure AI-sökning (experimentell) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| SharePoint (förhandsversion) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Microsoft Fabric (förhandsversion) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Minnessökning (förhandsversion) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Datoranvändning (förhandsversion) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Webbläsarautomatisering (förhandsversion) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| A2A-verktyg (agent-till-agent) (förhandsversion) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
¹ Beror på vilken lokal modell som stöder funktionsanrop.
² Inbyggd i GitHub Copilot CLI-körning, gated av en behörighetshanterare. Annan yta än OpenAI:s get_shell_tool.
Anmärkning
Kolumnerna Svar och Chattkomplettering gäller för både OpenAI och Azure OpenAI – Azure varianter speglar samma verktygsstöd som deras OpenAI-motsvarigheter. Lokala MCP-verktyg fungerar med alla leverantörer som stöder funktionsverktyg.
Providersupportmatris
Go SDK exponerar Microsoft Foundry via foundryprovider och OpenAI/Azure OpenAI via openaiprovider. Värdbaserade verktyg i tool/hostedtool är deklarationer: Go SDK skickar dem till providern och providern bestämmer om den värdbaserade funktionen är tillgänglig.
| Verktygstyp | Gjuteri | Svaren | Chatten har slutförts | Anthropic |
|---|---|---|---|---|
| Funktionsverktyg | ✅ | ✅ | ✅ | ✅ |
| Agent som funktionsverktyg | ✅ | ✅ | ✅ | ✅ |
| Lokala MCP-verktyg | ✅ | ✅ | ✅ | ✅ |
| Webbsökning | ✅ | ✅ | ✅ | ❌ |
| Filsökning | ❌ | ✅ | ❌ | ❌ |
| Kodtolkare | ✅ | ✅ | ❌ | ❌ |
| Värdbaserade MCP-verktyg | ❌ | ✅ | ❌ | ❌ |
| Lokalt skalverktyg | ✅ | ✅ | ✅ | ✅ |
Anmärkning
Lokala MCP-verktyg och det lokala gränssnittsverktyget är funktionsverktyg ur leverantörens synvinkel, så de följer funktionsverktygets stöd. Värdbaserade verktyg som hostedtool.FileSearch, hostedtool.CodeInterpreteroch hostedtool.MCPServer körs av AI-tjänsten, inte av Go-processen.
Använda en agent som ett funktionsverktyg
Du kan använda en agent som ett funktionsverktyg för en annan agent, vilket möjliggör agentsammansättning och mer avancerade arbetsflöden. Den inre agenten konverteras till ett funktionsverktyg och tillhandahålls till den yttre agenten, som sedan kan anropa den efter behov.
Anropa .AsAIFunction() en AIAgent för att konvertera den till ett funktionsverktyg som kan tillhandahållas till en annan agent:
// 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?"));
Varning
DefaultAzureCredential är praktiskt för utveckling men kräver noggrant övervägande i produktion. I produktion bör du överväga att använda en specifik autentiseringsuppgift (t.ex. ManagedIdentityCredential) för att undvika problem med svarstid, oavsiktlig avsökning av autentiseringsuppgifter och potentiella säkerhetsrisker från reservmekanismer.
Anropa .as_tool() en agent för att konvertera den till ett funktionsverktyg som kan tillhandahållas till en annan agent:
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)
Du kan också anpassa verktygets namn, beskrivning och argumentnamn:
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"
)
Omslut en agent med agenttool.New för att göra den tillgänglig som en för en tool.FuncTool annan agent:
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()
Du kan också exponera samma omslutna agent via MCP med mcptool.AddTool, eftersom agenttool.New returnerar ett funktionsverktyg.
Tip
Se exemplet på agenten som funktionsverktyg och agenten som MCP-verktygsexempel för fullständiga körbara exempel.