Översikt över verktyg

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.

Nästa steg