Přehled nástrojů

Agent Framework podporuje mnoho různých typů nástrojů, které rozšiřují možnosti agenta. Nástroje umožňují agentům pracovat s externími systémy, spouštět kód, prohledávat data a provádět další možnosti.

Typy nástrojů

Typ nástroje Description
Nástroje funkcí Vlastní kód, který můžou agenti volat během konverzací
interpretu kódu Spuštění kódu v prostředí s izolovaným prostorem (sandbox)
hledání souborů Hledání prostřednictvím nahraných souborů
Vyhledávání na webu Vyhledání informací na webu
Hostované nástroje MCP Servery MCP vyvolané modulem runtime poskytovatele
Místní nástroje MCP Servery MCP spuštěné místně nebo na vlastních hostitelích
Sady nástrojů Foundry Pojmenované sady verzí hostovaných konfigurací nástrojů spravovaných v projektu Foundry
Typ nástroje Description
Nástroje funkcí Vlastní kód, který můžou agenti volat během konverzací
interpretu kódu Spuštění kódu v prostředí s izolovaným prostorem (sandbox)
hledání souborů Hledání prostřednictvím nahraných souborů
Vyhledávání na webu Vyhledání informací na webu
Hostované nástroje MCP Servery MCP vyvolané modulem runtime poskytovatele
Místní nástroje MCP Servery MCP spuštěné místně nebo na vlastních hostitelích
Sady nástrojů Foundry Pojmenované sady verzí hostovaných konfigurací nástrojů spravovaných v projektu Foundry
Generování obrazu Generování hostované image v modulu runtime Foundry / OpenAI Odpovědi
Shell Spouštění hostovaného prostředí v modulu runtime Odpovědí OpenAI – liší se od integrovaných nástrojů příkazového řádku GitHub Copilot CLI/ file/URL runtime
Zemnění Bingu Webové uzemnění prostřednictvím vlastního uzemnění s využitím prostředku Vyhledávání Bingu – experimentální
Vlastní vyhledávání Bingu Uzemnění Bingu omezené na kurátorovaný seznam domén – Preview
Azure AI Vyhledávač Dotazování Azure AI Vyhledávač indexu prostřednictvím připojení Foundry – experimentální
SharePoint Základní odpovědi v obsahu SharePoint – náhled
Microsoft Fabric Dotazování Fabric datového agenta – Preview
Hledání paměti Vyhledávání úložiště paměti spravovaného foundry – Preview
Použití počítačů Řízení desktopového prostředí nebo prostředí prohlížeče – Preview
Automatizace prohlížeče Ovládání prohlížeče přes Azure Playwright – preview
Nástroj Agent-to-Agent (A2A) Volání vzdáleného agenta A2A jako nástroje z agenta Foundry – Preview

Poznámka:

Nástroje označené jako experimentální nebo náhled jsou zdokumentované na stránce příslušného ExperimentalWarning poskytovatele a vygenerují se při prvním použití v procesu.

Typ nástroje Package Description
Nástroje funkcí tool/functool Funkce Typed Go se schématy JSON, které může agent volat
Agent as Function Tool tool/agenttool Zabalení agenta jako tool.FuncTool agenta tak, aby ho mohl volat jiný agent
Místní nástroje MCP tool/mcptool Připojení k serverům MCP a zveřejnění jejich nástrojů jako tool.FuncTool hodnot
Vyhledávání na webu tool/hostedtool.WebSearch Deklarace webového vyhledávání na straně poskytovatele, když ji backingová služba podporuje
hledání souborů tool/hostedtool.FileSearch Deklarace hledání na straně zprostředkovatele nebo vektorového úložiště
interpretu kódu tool/hostedtool.CodeInterpreter Deklarace spouštění kódu na straně zprostředkovatele
Hostované nástroje MCP tool/hostedtool.MCPServer Deklarace serveru MCP pro modul runtime poskytovatele, který se má volat
Lokální nástroj shell tool/shelltool Spouštění příkazů místního prostředí prostřednictvím nástroje funkcí, který ve výchozím nastavení vyžaduje schválení

Všechny nástroje implementují tool.Tool rozhraní:

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

Nástroje funkcí navíc implementují tool.FuncTool:

import "context"

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

Většina aplikací vytváří nástroje funkcí s functool.New přímou implementací nebo functool.MustNew nikoli přímo FuncTool . Architektura používá podpis funkce Go nebo značky struktury k sestavení schématu vystaveného modelu.

Předat nástroje agentu prostřednictvím 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},
    },
})

Nebo přidejte nástroje pro jednotlivé spuštění:

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

Schválení nástroje

Schválení nástroje je funkce architektury, která umožňuje vrátení nástrojů prostřednictvím rozhodnutí člověka ve smyčce před tím, než model obdrží výsledek. Funguje s poskytovateli, jejichž klienti volají nástroje místně; Hostované nástroje na straně služby se řídí vlastním chováním poskytovatele schválení. Na stránce Schválení nástrojů najdete úplný vzor, včetně toho, jak schválení komunikují s relacemi, streamováním a middlewarem.

Pro Go označte vyvoláný nástroj nebo tool.ApprovalRequiredFunc použijte nástroj, který už implementuje tool.ApprovalRequiredTool, například místní nástroj shellu. Žádosti o schválení a odpovědi procházejí middlewarem automatického volání nástroje, takže pracují s poskytovateli, kteří vracejí volání místních funkcí.

Matice podpory zprostředkovatele

Poskytovatelé OpenAI a Azure OpenAI nabízejí dva typy klientů – Odpovědi a dokončování chatu – s různými možnostmi nástrojů. Klienti Azure OpenAI zrcadlí své ekvivalenty OpenAI. Copilot Studio a A2A agenti běží ve vzdálené službě, aby jejich schopnosti byly nakonfigurované na vzdáleném agentovi, ne prostřednictvím klienta agenta Framework – nejsou uvedené v matici.

Typ nástroje Reakce Dokončení chatu Slévárna Anthropic Ollama GitHub Copilot
Nástroje funkcí
interpretu kódu
hledání souborů
Vyhledávání na webu
Hostované nástroje MCP
Místní nástroje MCP

Poznámka:

Sloupce Responses a Chat Completion platí pro OpenAI i Azure OpenAI – varianty Azure zrcadlí stejnou podporu nástroje jako jejich protějšky OpenAI. Zastaralé rozhraní OpenAI Assistants API už není zdokumentované; Pokyny k migraci najdete v průvodci migrací Sémantické jádro.

Matice podpory zprostředkovatele

Poskytovatelé OpenAI a Azure OpenAI nabízejí různé typy klientů s různými možnostmi nástrojů. Klienti Azure OpenAI zrcadlí své ekvivalenty OpenAI. Sloupec Foundry platí FoundryChatClient pro – pro FoundryAgent, nástroje jsou nakonfigurovány v definici agenta Foundry (viz Co funguje a co není s FoundryAgent). Copilot Studio a A2A agenti běží ve vzdálené službě, aby jejich schopnosti byly nakonfigurované na vzdáleném agentovi, ne prostřednictvím klienta agenta Framework – nejsou uvedené v matici.

Typ nástroje Reakce Dokončení chatu Slévárna Anthropic Ollama Místní prostředí Foundry GitHub Copilot
Nástroje funkcí ⚠️¹ ⚠️¹
interpretu kódu
hledání souborů
Vyhledávání na webu
Generování obrazu
Hostované prostředí (get_shell_tool)
Integrované prostředí / systém souborů / načtení adresy URL ✅²
Hostované nástroje MCP
Místní nástroje MCP
Sady nástrojů Foundry
Zemnění Bingu (experimentální)
Vlastní vyhledávání Bingu (Preview)
Azure AI Vyhledávač (experimentální)
SharePoint (Preview)
Microsoft Fabric (Preview)
Vyhledávání paměti (Preview)
Použití počítače (Preview)
Automatizace prohlížeče (Preview)
Nástroj Agent-to-Agent (A2A) ( Preview)

¹ Závisí na zvoleném místním modelu podporujícím volání funkcí. ² Integrovaný do modulu runtime rozhraní příkazového řádku GitHub Copilot, který je bránou obslužnou rutinou oprávnění. Jiný povrch než OpenAI get_shell_tool.

Poznámka:

Sloupce Responses a Chat Completion platí pro OpenAI i Azure OpenAI – varianty Azure zrcadlí stejnou podporu nástroje jako jejich protějšky OpenAI. Místní nástroje MCP fungují s libovolným poskytovatelem, který podporuje nástroje funkcí.

Matice podpory zprostředkovatele

Sada Go SDK zveřejňuje Microsoft Foundry prostřednictvím foundryprovider OpenAI/Azure OpenAI prostřednictvím openaiprovider. Hostované nástroje jsou tool/hostedtool deklarace: Go SDK je odešle poskytovateli a poskytovatel rozhodne, jestli je tato hostovaná funkce dostupná.

Typ nástroje Slévárna Reakce Dokončení chatu Anthropic
Nástroje funkcí
Agent as Function Tool
Místní nástroje MCP
Vyhledávání na webu
hledání souborů
interpretu kódu
Hostované nástroje MCP
Lokální nástroj shell

Poznámka:

Místní nástroje MCP a místní nástroj prostředí jsou nástroje funkcí z pohledu poskytovatele, takže sledují podporu nástrojů funkcí. Hostované nástroje, jako hostedtool.FileSearchje například , hostedtool.CodeInterpretera hostedtool.MCPServer jsou spouštěné službou AI, nikoli procesem Go.

Použití agenta jako nástroje funkce

Agenta můžete použít jako nástroj funkce pro jiného agenta, který umožňuje složení agenta a pokročilejší pracovní postupy. Vnitřní agent se převede na nástroj funkce a poskytne se vnějšímu agentu, který ho pak může podle potřeby volat.

Voláním .AsAIFunction()AIAgent funkce ji převeďte na nástroj funkce, který je možné poskytnout jinému agentu:

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

Výstraha

DefaultAzureCredential je vhodný pro vývoj, ale vyžaduje pečlivé zvážení v produkčním prostředí. V produkčním prostředí zvažte použití konkrétních přihlašovacích údajů (např ManagedIdentityCredential. ) k zabránění problémům s latencí, neúmyslnému testování přihlašovacích údajů a potenciálním bezpečnostním rizikům z náhradních mechanismů.

Volání .as_tool() agenta, který ho převede na nástroj funkce, který je možné poskytnout jinému agentu:

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)

Můžete také přizpůsobit název nástroje, popis a název argumentu:

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

Zabalte agenta tak agenttool.New , aby byl dostupný jako tool.FuncTool jiný 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()

Můžete také vystavit stejného zabaleného agenta prostřednictvím MCP s mcptool.AddTool, protože agenttool.New vrací nástroj funkce.

Tip

Kompletní příklady spustitelných příkladů najdete v ukázce nástroje funkcí agenta jako ukázku nástroje MCP .

Další kroky