Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
Warning
Volání a argumenty nástroje jsou generovány modelem. Ověřte je a autorizujete před provedením vedlejších účinků kódu aplikace. Pro vysoce rizikové nástroje používejte schvalování a spouštění s nejnižšími oprávněními.
Typy nástrojů
| Typ nástroje | Description |
|---|---|
| Funkční nástroje | Vlastní kód, který můžou agenti volat během konverzací |
| Interpretér 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 |
| Sada nástrojů Microsoft Foundry | Pojmenované sady verzí hostovaných konfigurací nástrojů spravovaných v projektu Foundry |
| Nástroje prostředí | Místní a kontejnerizované spouštění prostředí s kontrolou prostředí a ovládacími prvky zásad |
| Typ nástroje | Description |
|---|---|
| Funkční nástroje | Vlastní kód, který můžou agenti volat během konverzací |
| Interpretér 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 |
| Sada nástrojů Microsoft Foundry | Pojmenované sady verzí hostovaných konfigurací nástrojů spravovaných v projektu Foundry |
| Nástroje prostředí | Místní a kontejnerizované spouštění prostředí s kontrolou prostředí a ovládacími prvky zásad |
| Generování obrazu | Generování hostované image v modulu runtime Foundry / OpenAI Odpovědi |
| Použití nativního počítače | Provedení akcí požadovaných poskytovatelem pro stolní počítače nebo prohlížeče a vrácení snímků obrazovky |
| 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če ve verzi Preview | Řízení desktopového prostředí nebo prostředí prohlížeče prostřednictvím samostatného rozhraní API Foundry 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 |
|---|---|---|
| Funkční nástroje | 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ě |
| Interpretér 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 | Platforma Foundry | Anthropic | Ollama | GitHub Copilot |
|---|---|---|---|---|---|---|
| Funkční nástroje | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Interpretér 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 | Platforma Foundry | Anthropic | Ollama | Místní prostředí Foundry | GitHub Copilot |
|---|---|---|---|---|---|---|---|
| Funkční nástroje | ✅ | ✅ | ✅ | ✅ | ⚠️¹ | ⚠️¹ | ✅ |
| Interpretér kódu | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Hledání souborů | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Vyhledávání na webu | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Generování obrazu | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Použití nativního počítače | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
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 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Sada nástrojů Microsoft 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 ve verzi 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 , Anthropic prostřednictvím openaiprovideranthropicprovidera Gemini prostřednictvím geminiprovider. 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 | Platforma Foundry | Reakce | Dokončení chatu | Anthropic | Gemini |
|---|---|---|---|---|---|
| Funkční nástroje | ✅ | ✅ | ✅ | ✅ | ✅ |
| Agent as Function Tool | ✅ | ✅ | ✅ | ✅ | ✅ |
| Místní nástroje MCP | ✅ | ✅ | ✅ | ✅ | ✅ |
| Vyhledávání na webu | ✅ | ✅ | ✅ | ❌ | ✅ |
| Hledání souborů | ✅ | ✅ | ❌ | ❌ | ✅ |
| Interpretér 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.
Dostupnost hostovaného nástroje také závisí na vybraném modelu, nasazení a rozhraní API. Pro vyhledávání souborů Gemini zadejte názvy úložiště pro vyhledávání souborů Gemini místo ID vektorového úložiště OpenAI.
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?"));
Warning
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 .