Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Struktura agentów obsługuje wiele różnych typów narzędzi, które rozszerzają możliwości agenta. Narzędzia umożliwiają agentom interakcję z systemami zewnętrznymi, wykonywanie kodu, wyszukiwanie danych i nie tylko.
Typy narzędzi
| Typ narzędzia | Opis |
|---|---|
| Narzędzia funkcji | Kod niestandardowy, który agenci mogą wywoływać podczas konwersacji |
| Interpreter kodów | Wykonywanie kodu w środowisku w trybie piaskownicy |
| wyszukiwanie plików | Wyszukiwanie przekazanych plików |
| Wyszukiwanie w Sieci Web | Wyszukaj informacje w Internecie |
| Hostowane narzędzia MCP | Serwery MCP wywoływane przez środowisko uruchomieniowe dostawcy |
| Lokalne narzędzia MCP | Serwery MCP uruchomione lokalnie lub na hostach niestandardowych |
| Przybornika znaleziono | Nazwane, wersjonowane pakiety hostowanych konfiguracji narzędzi zarządzanych w projekcie Foundry |
| Typ narzędzia | Opis |
|---|---|
| Narzędzia funkcji | Kod niestandardowy, który agenci mogą wywoływać podczas konwersacji |
| Interpreter kodów | Wykonywanie kodu w środowisku w trybie piaskownicy |
| wyszukiwanie plików | Wyszukiwanie przekazanych plików |
| Wyszukiwanie w Sieci Web | Wyszukaj informacje w Internecie |
| Hostowane narzędzia MCP | Serwery MCP wywoływane przez środowisko uruchomieniowe dostawcy |
| Lokalne narzędzia MCP | Serwery MCP uruchomione lokalnie lub na hostach niestandardowych |
| Przybornika znaleziono | Nazwane, wersjonowane pakiety hostowanych konfiguracji narzędzi zarządzanych w projekcie Foundry |
| Generowanie obrazów | Generowanie hostowanego obrazu w środowisku uruchomieniowym rozwiązania Foundry/OpenAI Responses |
| Shell | Wykonywanie hostowanej powłoki w środowisku uruchomieniowym odpowiedzi OpenAI — różni się od wbudowanych narzędzi środowiska uruchomieniowego interfejsu wiersza polecenia platformy GitHub Copilot |
| Podstawy Binga | Uziemienie sieci Web za pomocą własnego zasobu grounding z wyszukiwaniem Bing — eksperymentalne |
| Wyszukiwanie niestandardowe Bing | Uziemienie Bing ograniczone do wyselekcjonowanych list domen — wersja zapoznawcza |
| Wyszukiwanie AI platformy Azure | Wykonywanie zapytań względem indeksu Wyszukiwanie AI platformy Azure za pośrednictwem połączenia z usługą Foundry — eksperymentalne |
| SharePoint | Podstawowe odpowiedzi w zawartości SharePoint — wersja zapoznawcza |
| Microsoft Fabric | Wykonywanie zapytań względem agenta danych Fabric — wersja zapoznawcza |
| Wyszukiwanie pamięci | Wyszukiwanie magazynu pamięci zarządzanej przez program Foundry — wersja zapoznawcza |
| Wykorzystanie komputerów | Dysk środowiska pulpitu lub przeglądarki — wersja zapoznawcza |
| Automatyzacja przeglądarki | Prowadzenie przeglądarki za pośrednictwem Azure Playwright — wersja zapoznawcza |
| Narzędzie Agent-to-Agent (A2A) | Wywoływanie zdalnego agenta A2A jako narzędzia z agenta usługi Foundry — wersja zapoznawcza |
Uwaga / Notatka
Narzędzia oznaczone jako eksperymentalne lub zapoznawcza są udokumentowane na odpowiedniej stronie dostawcy i emitują ExperimentalWarning pierwszy raz, gdy są one używane w procesie.
| Typ narzędzia | Package | Opis |
|---|---|---|
| Narzędzia funkcji | tool/functool |
Wpisane funkcje języka Go ze schematami JSON, które agent może wywołać |
| Narzędzie agenta jako funkcji | tool/agenttool |
Zawijanie agenta jako agenta tool.FuncTool , aby inny agent mógł go wywołać |
| Lokalne narzędzia MCP | tool/mcptool |
Nawiązywanie połączenia z serwerami MCP i uwidacznianie ich narzędzi jako tool.FuncTool wartości |
| Wyszukiwanie w Sieci Web | tool/hostedtool.WebSearch |
Deklarowanie wyszukiwania w sieci Web po stronie dostawcy, gdy usługa zapasowa ją obsługuje |
| wyszukiwanie plików | tool/hostedtool.FileSearch |
Deklarowanie pliku po stronie dostawcy lub wyszukiwania wektorów |
| Interpreter kodów | tool/hostedtool.CodeInterpreter |
Deklarowanie wykonania kodu po stronie dostawcy |
| Hostowane narzędzia MCP | tool/hostedtool.MCPServer |
Deklarowanie serwera MCP dla środowiska uruchomieniowego dostawcy w celu wywołania |
| Narzędzie lokalnej powłoki | tool/shelltool |
Uruchamianie poleceń powłoki lokalnej za pomocą narzędzia funkcji, które domyślnie wymaga zatwierdzenia |
Wszystkie narzędzia implementują tool.Tool interfejs:
type Tool interface {
Name() string
Description() string
}
Narzędzia funkcji dodatkowo implementują :tool.FuncTool
import "context"
type FuncTool interface {
Tool
Schema() any
ReturnSchema() any
Call(ctx context.Context, arguments string) (any, error)
}
Większość aplikacji tworzy narzędzia funkcji z functool.New lub functool.MustNew zamiast implementować FuncTool bezpośrednio. Struktura używa sygnatury funkcji języka Go lub tagów struktury do kompilowania schematu uwidocznioowanego dla modelu.
Przekazywanie narzędzi do agenta za pośrednictwem polecenia 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},
},
})
Możesz też dodać narzędzia na przebieg:
resp, err := a.RunText(ctx, "What's the weather?", agent.WithTool(weatherTool)).Collect()
Zatwierdzanie narzędzi
Zatwierdzanie narzędzi to funkcja struktury umożliwiająca wywoływanie narzędzi przez człowieka w pętli, zanim model otrzyma wynik. Współpracuje ona z dostawcami, których klienci wywołują narzędzia lokalnie; Narzędzia hostowane po stronie usługi są zgodne z zachowaniem zatwierdzania przez dostawcę. Zobacz stronę Zatwierdzenie narzędzia , aby uzyskać pełny wzorzec, w tym sposób interakcji zatwierdzeń z sesjami, przesyłaniem strumieniowym i oprogramowaniem pośredniczącym.
W przypadku języka Go oznacz narzędzie do wywołania za pomocą tool.ApprovalRequiredFunc narzędzia lub użyj narzędzia, które już implementuje tool.ApprovalRequiredToolmetodę , taką jak lokalne narzędzie powłoki. Żądania zatwierdzenia i odpowiedzi przepływają przez oprogramowanie pośredniczące automatycznego wywoływania narzędzia, aby współpracować z dostawcami, którzy zwracają lokalne wywołania funkcji.
Macierz obsługi dostawcy
Dostawcy openAI i Azure OpenAI oferują dwa typy klientów — odpowiedzi i uzupełnianie czatu — z różnymi możliwościami narzędzi. Klienci usługi Azure OpenAI dublują swoje odpowiedniki openAI. Copilot Studio i A2A agenci są uruchamiani w usłudze zdalnej, aby ich możliwości były konfigurowane na agencie zdalnym, a nie za pośrednictwem klienta platformy Agent — nie są one wymienione w macierzy.
| Typ narzędzia | Odpowiedzi | Uzupełnianie czatu | Odlewnia | Antropiczny | Ollama | GitHub Copilot |
|---|---|---|---|---|---|---|
| Narzędzia funkcji | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Interpreter kodów | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| wyszukiwanie plików | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Wyszukiwanie w Sieci Web | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Hostowane narzędzia MCP | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ |
| Lokalne narzędzia MCP | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Uwaga / Notatka
Kolumny Responses i Chat Completion dotyczą zarówno interfejsu OpenAI, jak i Azure OpenAI — warianty Azure dublują tę samą obsługę narzędzia co ich odpowiedniki OpenAI. Przestarzały interfejs API OpenAI Assistants nie jest już udokumentowany; Aby uzyskać wskazówki dotyczące migracji, zobacz przewodnik migracji Semantic Kernel.
Macierz obsługi dostawcy
Dostawcy openAI i Azure OpenAI oferują wiele typów klientów z różnymi możliwościami narzędzi. Klienci usługi Azure OpenAI dublują swoje odpowiedniki openAI. Kolumna Foundry ma zastosowanie do FoundryChatClient — dla FoundryAgentprogramu narzędzia są konfigurowane w definicji agenta foundry (zobacz Co działa i czego nie ma w programie FoundryAgent).
Copilot Studio i A2A agenci są uruchamiani w usłudze zdalnej, aby ich możliwości były konfigurowane na agencie zdalnym, a nie za pośrednictwem klienta platformy Agent — nie są one wymienione w macierzy.
| Typ narzędzia | Odpowiedzi | Uzupełnianie czatu | Odlewnia | Antropiczny | Ollama | Znaleziono lokalnie | GitHub Copilot |
|---|---|---|---|---|---|---|---|
| Narzędzia funkcji | ✅ | ✅ | ✅ | ✅ | ⚠️¹ | ⚠️¹ | ✅ |
| Interpreter kodów | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
| wyszukiwanie plików | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Wyszukiwanie w Sieci Web | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Generowanie obrazów | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
Hostowana powłoka (get_shell_tool) |
✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Wbudowana powłoka/system plików/pobieranie adresów URL | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅² |
| Hostowane narzędzia MCP | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ |
| Lokalne narzędzia MCP | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Przybornika znaleziono | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Uziemienie Bing (eksperymentalne) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Wyszukiwanie niestandardowe Bing (wersja zapoznawcza) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Wyszukiwanie AI platformy Azure (eksperymentalna) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| SharePoint (wersja zapoznawcza) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Microsoft Fabric (wersja zapoznawcza) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Wyszukiwanie pamięci (wersja zapoznawcza) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Korzystanie z komputera (wersja zapoznawcza) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Automatyzacja przeglądarki (wersja zapoznawcza) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Narzędzie Agent-to-Agent (A2A) ( wersja zapoznawcza) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
¹ Zależy od wybranego modelu lokalnego obsługującego wywoływanie funkcji.
² Wbudowane w środowisko uruchomieniowe interfejsu wiersza polecenia GitHub Copilot obsługiwane przez program obsługi uprawnień. Inna powierzchnia od platformy OpenAI.get_shell_tool
Uwaga / Notatka
Kolumny Responses i Chat Completion dotyczą zarówno interfejsu OpenAI, jak i Azure OpenAI — warianty Azure dublują tę samą obsługę narzędzia co ich odpowiedniki OpenAI. Lokalne narzędzia MCP współpracują z dowolnym dostawcą, który obsługuje narzędzia funkcji.
Macierz obsługi dostawcy
Zestaw SDK języka Go uwidacznia Microsoft Foundry za pomocą biblioteki foundryprovider i interfejsu OpenAI/Azure OpenAI za pośrednictwem usługi openaiprovider. Hostowane narzędzia w programie tool/hostedtool to deklaracje: zestaw GO SDK wysyła je do dostawcy, a dostawca decyduje, czy ta hostowana funkcja jest dostępna.
| Typ narzędzia | Odlewnia | Odpowiedzi | Ukończenie czatu | Antropiczny |
|---|---|---|---|---|
| Narzędzia funkcji | ✅ | ✅ | ✅ | ✅ |
| Narzędzie agenta jako funkcji | ✅ | ✅ | ✅ | ✅ |
| Lokalne narzędzia MCP | ✅ | ✅ | ✅ | ✅ |
| Wyszukiwanie w Sieci Web | ✅ | ✅ | ✅ | ❌ |
| wyszukiwanie plików | ❌ | ✅ | ❌ | ❌ |
| Interpreter kodów | ✅ | ✅ | ❌ | ❌ |
| Hostowane narzędzia MCP | ❌ | ✅ | ❌ | ❌ |
| Narzędzie lokalnej powłoki | ✅ | ✅ | ✅ | ✅ |
Uwaga / Notatka
Lokalne narzędzia MCP i lokalne narzędzie powłoki są narzędziami funkcji z punktu widzenia dostawcy, dlatego są zgodne z obsługą narzędzi funkcji. Hostowane narzędzia, takie jak hostedtool.FileSearch, hostedtool.CodeInterpreteri hostedtool.MCPServer są wykonywane przez usługę sztucznej inteligencji, a nie przez proces Języka Go.
Używanie agenta jako narzędzia funkcji
Agent można użyć jako narzędzia funkcji dla innego agenta, umożliwiając kompozycję agenta i bardziej zaawansowane przepływy pracy. Agent wewnętrzny jest konwertowany na narzędzie funkcji i dostarczany do agenta zewnętrznego, który może następnie wywołać go w razie potrzeby.
Wywołaj .AsAIFunction() metodę AIAgent , aby przekonwertować ją na narzędzie funkcji, które można udostępnić innemu agentowi:
// 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?"));
Ostrzeżenie
DefaultAzureCredential jest wygodne do programowania, ale wymaga starannego rozważenia w środowisku produkcyjnym. W środowisku produkcyjnym rozważ użycie określonego poświadczenia (np. ManagedIdentityCredential), aby uniknąć problemów z opóźnieniami, niezamierzonego sondowania poświadczeń i potencjalnych zagrożeń bezpieczeństwa wynikających z mechanizmów awaryjnych.
Wywołaj .as_tool() agenta, aby przekonwertować go na narzędzie funkcji, które można udostępnić innemu agentowi:
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)
Możesz również dostosować nazwę narzędzia, opis i nazwę 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"
)
Zawijaj agenta agenttool.New za pomocą polecenia , aby udostępnić go jako tool.FuncTool agentowi innemu:
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()
Możesz również uwidocznić tego samego opakowanego agenta za pomocą programu mcptool.AddTool, ponieważ agenttool.New zwraca narzędzie funkcji.
Wskazówka
Zobacz przykładowe narzędzie agenta jako funkcji i agenta jako przykład narzędzia MCP , aby zapoznać się z kompletnymi przykładami z możliwością uruchamiania.