Omówienie narzędzi

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.

Dalsze kroki