Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Agent Framework unterstützt viele verschiedene Arten von Tools, die Agentfunktionen erweitern. Mit Tools können Agents mit externen Systemen interagieren, Code ausführen, Suchdaten und vieles mehr ausführen.
Tooltypen
| Tooltyp | Description |
|---|---|
| Funktionstools | Benutzerdefinierter Code, den Agents während Unterhaltungen anrufen können |
| Codedolmetscher | Ausführen von Code in einer Sandkastenumgebung |
| Dateisuche | Durchsuchen von hochgeladenen Dateien |
| Websuche | Im Web nach Informationen suchen |
| Gehostete MCP-Tools | MCP-Server, die von der Anbieterlaufzeit aufgerufen werden |
| Lokale MCP-Tools | MCP-Server, die lokal oder auf benutzerdefinierten Hosts ausgeführt werden |
| Foundry Toolboxes | Benannte, versionsgesteuerte Bündel von gehosteten Toolkonfigurationen, die in einem Foundry-Projekt verwaltet werden |
| Tooltyp | Description |
|---|---|
| Funktionstools | Benutzerdefinierter Code, den Agents während Unterhaltungen anrufen können |
| Codedolmetscher | Ausführen von Code in einer Sandkastenumgebung |
| Dateisuche | Durchsuchen von hochgeladenen Dateien |
| Websuche | Im Web nach Informationen suchen |
| Gehostete MCP-Tools | MCP-Server, die von der Anbieterlaufzeit aufgerufen werden |
| Lokale MCP-Tools | MCP-Server, die lokal oder auf benutzerdefinierten Hosts ausgeführt werden |
| Foundry Toolboxes | Benannte, versionsgesteuerte Bündel von gehosteten Toolkonfigurationen, die in einem Foundry-Projekt verwaltet werden |
| Bilderzeugung | Gehostete Bildgenerierung in der Laufzeit der Foundry/OpenAI-Antworten |
| Shell | Ausführung der gehosteten Shell für die OpenAI-Antwortlaufzeit – unterscheidet sich von den integrierten Shell-/Datei-/URL-Laufzeittools der GitHub Copilot CLI |
| Bing Grounding | Web-Grounding über Ihre eigene Grounding mit Bing Search-Ressource – experimentell |
| Benutzerdefinierte Bing-Suche | Bing-Bodenierung auf eine kuratierte Domänenliste beschränkt – Vorschau |
| Azure KI-Suche | Abfragen eines Azure KI-Suche Index über eine Foundry-Verbindung – experimentell |
| SharePoint | Grundantworten in SharePoint Inhalten – Vorschau |
| Microsoft Fabric | Abfragen eines Fabric Daten-Agents – Vorschau |
| Speichersuche | Durchsuchen eines Speichers mit verwaltetem Gießereispeicher – Vorschau |
| Computernutzung | Steuern einer Desktop- oder Browserumgebung – Vorschau |
| Browserautomatisierung | Fahren Sie einen Browser über Azure Playwright – Vorschau |
| Agent-zu-Agent-Tool (A2A) | Aufrufen eines A2A-Remote-Agents als Tool von einem Foundry-Agent – Vorschau |
Hinweis
Tools, die als experimentell gekennzeichnet sind oder eine Vorschau sind, werden auf der entsprechenden Anbieterseite dokumentiert und geben ein ExperimentalWarning , wenn sie zum ersten Mal in einem Prozess verwendet werden.
| Tooltyp | Package | Description |
|---|---|---|
| Funktionstools | tool/functool |
Typierte Go-Funktionen mit JSON-Schemas, die der Agent aufrufen kann |
| Agent als Funktionstool | tool/agenttool |
Umbrechen eines Agents als ein tool.FuncTool anderer Agent |
| Lokale MCP-Tools | tool/mcptool |
Herstellen einer Verbindung mit MCP-Servern und Verfügbarmachen ihrer Tools als tool.FuncTool Werte |
| Websuche | tool/hostedtool.WebSearch |
Deklarieren der anbieterseitigen Websuche, wenn der Sicherungsdienst sie unterstützt |
| Dateisuche | tool/hostedtool.FileSearch |
Deklarieren der anbieterseitigen Datei- oder Vektorspeichersuche |
| Codedolmetscher | tool/hostedtool.CodeInterpreter |
Deklarieren der anbieterseitigen Codeausführung |
| Gehostete MCP-Tools | tool/hostedtool.MCPServer |
Deklarieren eines MCP-Servers für den Aufruf der Anbieterlaufzeit |
| Lokales Schalenwerkzeug | tool/shelltool |
Ausführen von lokalen Shellbefehlen über ein Funktionstool, das standardmäßig eine Genehmigung erfordert |
Alle Tools implementieren die tool.Tool Schnittstelle:
type Tool interface {
Name() string
Description() string
}
Zusätzliche Implementierung tool.FuncToolvon Funktionstools:
import "context"
type FuncTool interface {
Tool
Schema() any
ReturnSchema() any
Call(ctx context.Context, arguments string) (any, error)
}
Die meisten Anwendungen erstellen Funktionstools mit functool.New oder functool.MustNew anstatt direkt zu implementieren FuncTool . Das Framework verwendet die Go-Funktionssignatur oder Strukturtags, um das Schema zu erstellen, das für das Modell verfügbar gemacht wird.
Übergeben Sie Tools an den Agenten über 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},
},
})
Oder fügen Sie Tools pro Ausführung hinzu:
resp, err := a.RunText(ctx, "What's the weather?", agent.WithTool(weatherTool)).Collect()
Toolgenehmigung
Die Toolgenehmigung ist ein Framework-Feature, mit dem Sie Toolaufrufe durch eine Entscheidung zwischen Menschen und In-the-Schleifen absperren können, bevor das Modell das Ergebnis erhält. Es funktioniert mit Anbietern, deren Clients Tools lokal aufrufen; Dienstseitige gehostete Tools folgen dem eigenen Genehmigungsverhalten des Anbieters. Auf der Seite " Toolgenehmigung" finden Sie das vollständige Muster, einschließlich der Interaktion von Genehmigungen mit Sitzungen, Streaming und Middleware.
Markieren Sie für "Gehe gehe" ein aufrufbares tool.ApprovalRequiredToolTool mit tool.ApprovalRequiredFunc oder verwenden Sie ein Tool, das bereits implementiert wird, z. B. das lokale Shelltool. Genehmigungsanforderungen und -antworten fließen über die automatische Aufruf-Middleware des Tools, sodass sie mit Anbietern arbeiten, die lokale Funktionsaufrufe zurückgeben.
Anbieterunterstützungsmatrix
Die OpenAI- und Azure OpenAI-Anbieter bieten jeweils zwei Clienttypen – Antworten und Chatabschluss – mit unterschiedlichen Toolfunktionen. Azure OpenAI-Clients spiegeln ihre OpenAI-Entsprechungen wieder. Copilot Studio und A2A Agents werden auf einem Remotedienst ausgeführt, sodass ihre Funktionen auf dem Remote-Agent und nicht über den Agent Framework-Client konfiguriert sind – sie sind nicht in der Matrix aufgeführt.
| Tooltyp | Antworten | Chatabschluss | Foundry | Anthropic | Ollama | GitHub Copilot |
|---|---|---|---|---|---|---|
| Funktionstools | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Codedolmetscher | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Dateisuche | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Websuche | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Gehostete MCP-Tools | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ |
| Lokale MCP-Tools | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Hinweis
Die Spalten Responses und Chat Completion gelten sowohl für OpenAI als auch für Azure OpenAI– die Azure Varianten spiegeln die gleiche Toolunterstützung wie ihre OpenAI-Entsprechungen wider. Die veraltete OpenAI Assistants-API ist nicht mehr dokumentiert; Anleitungen zur Migration finden Sie im Migrationshandbuch Semantischer Kernel.
Anbieterunterstützungsmatrix
Die OpenAI- und Azure OpenAI-Anbieter bieten jeweils mehrere Clienttypen mit unterschiedlichen Toolfunktionen. Azure OpenAI-Clients spiegeln ihre OpenAI-Entsprechungen wieder. Die Spalte "Foundry" gilt für FoundryChatClient – für - für FoundryAgent, die Tools werden in der Definition des Foundry-Agents konfiguriert (siehe Was funktioniert und was nicht mit FoundryAgent).
Copilot Studio und A2A Agents werden auf einem Remotedienst ausgeführt, sodass ihre Funktionen auf dem Remote-Agent und nicht über den Agent Framework-Client konfiguriert sind – sie sind nicht in der Matrix aufgeführt.
| Tooltyp | Antworten | Chatabschluss | Foundry | Anthropic | Ollama | Foundry Local | GitHub Copilot |
|---|---|---|---|---|---|---|---|
| Funktionstools | ✅ | ✅ | ✅ | ✅ | ⚠️¹ | ⚠️¹ | ✅ |
| Codedolmetscher | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Dateisuche | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Websuche | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Bilderzeugung | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
Gehostete Shell (get_shell_tool) |
✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Integrierte Shell / Dateisystem / URL Fetch | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅² |
| Gehostete MCP-Tools | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ |
| Lokale MCP-Tools | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Foundry Toolboxes | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Bing Grounding (experimentell) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Benutzerdefinierte Bing-Suche (Vorschau) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Azure KI-Suche (experimentell) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| SharePoint (Vorschau) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Microsoft Fabric (Vorschau) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Speichersuche (Vorschau) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Computerverwendung (Vorschau) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Browserautomatisierung (Vorschau) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Agent-zu-Agent-Tool (A2A) (Vorschau) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
¹ Hängt vom gewählten lokalen Modell ab, das Funktionsaufrufe unterstützt.
² Integriert in die GitHub Copilot CLI-Laufzeit, gated by a permission handler. Unterschiedliche Oberfläche von OpenAI es get_shell_tool.
Hinweis
Die Spalten Responses und Chat Completion gelten sowohl für OpenAI als auch für Azure OpenAI– die Azure Varianten spiegeln die gleiche Toolunterstützung wie ihre OpenAI-Entsprechungen wider. Lokale MCP-Tools funktionieren mit jedem Anbieter, der Funktionstools unterstützt.
Anbieterunterstützungsmatrix
Das Go SDK macht Microsoft Foundry durch foundryprovider und OpenAI/Azure OpenAI durch openaiprovider. Gehostete Tools sind tool/hostedtool Deklarationen: Das Go SDK sendet sie an den Anbieter, und der Anbieter entscheidet, ob diese gehostete Funktion verfügbar ist.
| Tooltyp | Foundry | Antworten | Chat-Vervollständigungen | Anthropic |
|---|---|---|---|---|
| Funktionstools | ✅ | ✅ | ✅ | ✅ |
| Agent als Funktionstool | ✅ | ✅ | ✅ | ✅ |
| Lokale MCP-Tools | ✅ | ✅ | ✅ | ✅ |
| Websuche | ✅ | ✅ | ✅ | ❌ |
| Dateisuche | ❌ | ✅ | ❌ | ❌ |
| Codedolmetscher | ✅ | ✅ | ❌ | ❌ |
| Gehostete MCP-Tools | ❌ | ✅ | ❌ | ❌ |
| Lokales Schalenwerkzeug | ✅ | ✅ | ✅ | ✅ |
Hinweis
Lokale MCP-Tools und das lokale Shell-Tool sind Funktionstools aus sicht des Anbieters, sodass sie die Unterstützung von Funktionstools befolgen. Gehostete Tools wie hostedtool.FileSearch, hostedtool.CodeInterpreterund hostedtool.MCPServer werden vom KI-Dienst ausgeführt, nicht vom Go-Prozess.
Verwenden eines Agents als Funktionstool
Sie können einen Agent als Funktionstool für einen anderen Agent verwenden, wodurch die Agentkomposition und erweiterte Workflows aktiviert werden. Der innere Agent wird in ein Funktionstool konvertiert und an den äußeren Agent bereitgestellt, der ihn dann nach Bedarf aufrufen kann.
Rufen Sie .AsAIFunction() eine AIAgent Funktion auf, um sie in ein Funktionstool zu konvertieren, das einem anderen Agent zur Verfügung gestellt werden kann:
// 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?"));
Warnung
DefaultAzureCredential ist praktisch für die Entwicklung, erfordert aber sorgfältige Überlegungen in der Produktion. Berücksichtigen Sie in der Produktion die Verwendung bestimmter Anmeldeinformationen (z. B. ManagedIdentityCredential), um Latenzprobleme, unbeabsichtigte Abfragen von Anmeldeinformationen und potenzielle Sicherheitsrisiken durch Ausweichmechanismen zu vermeiden.
Rufen Sie .as_tool() einen Agent auf, um ihn in ein Funktionstool zu konvertieren, das einem anderen Agent zur Verfügung gestellt werden kann:
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)
Sie können auch den Toolnamen, die Beschreibung und den Argumentnamen anpassen:
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"
)
Umschließen Sie einen Agent, agenttool.New um ihn als tool.FuncTool einen anderen Agent zur Verfügung zu stellen:
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()
Sie können auch denselben umschlossenen Agent über MCP mit mcptool.AddToolverfügbar machen, da agenttool.New ein Funktionstool zurückgegeben wird.
Tipp
Sehen Sie sich das Beispiel für das Agent als Funktionstoolbeispiel und den Agent als MCP-Toolbeispiel an, um vollständige Runnable-Beispiele zu finden.