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
Przybornik Microsoft Foundry Nazwane i wersjonowane pakiety hostowanych konfiguracji narzędzi zarządzane w projekcie Foundry
Narzędzia powłoki Lokalne i konteneryzowane wykonywanie powłoki z sondowaniem środowiska i kontrolkami zasad
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
Przybornik Microsoft Foundry Nazwane i wersjonowane pakiety hostowanych konfiguracji narzędzi zarządzane w projekcie Foundry
Narzędzia powłoki Lokalne i konteneryzowane wykonywanie powłoki z sondowaniem środowiska i kontrolkami zasad
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 ✅ ✅ ✅ ✅ ✅ ✅ ✅
Przybornik Microsoft Foundry ❌ ❌ ✅ ❌ ❌ ❌ ❌
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?"));

Warning

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.

Tip

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.

Następne kroki