Eszközök áttekintése

Az Agent Framework számos különböző típusú eszközt támogat, amelyek kibővítik az ügynök képességeit. Az eszközök lehetővé teszik az ügynökök számára a külső rendszerekkel való interakciót, a kód végrehajtását, a keresési adatokat és egyebeket.

Eszköztípusok

Eszköz típusa Description
Függvényeszközök Egyéni kód, amelyet az ügynökök beszélgetések során hívhatnak meg
Kódértelmező Kód végrehajtása tesztkörnyezetben
fájlkeresés Keresés feltöltött fájlokon keresztül
Webes keresés Információk keresése a weben
Üzemeltetett MCP-eszközök A szolgáltatói futtatókörnyezet által meghívott MCP-kiszolgálók
Helyi MCP-eszközök Helyileg vagy egyéni gazdagépeken futó MCP-kiszolgálók
Öntödei eszközkészletek Egy Foundry-projektben felügyelt üzemeltetett eszközkonfigurációk nevesített, verziószámozott csomagjai
Eszköz típusa Description
Függvényeszközök Egyéni kód, amelyet az ügynökök beszélgetések során hívhatnak meg
Kódértelmező Kód végrehajtása tesztkörnyezetben
fájlkeresés Keresés feltöltött fájlokon keresztül
Webes keresés Információk keresése a weben
Üzemeltetett MCP-eszközök A szolgáltatói futtatókörnyezet által meghívott MCP-kiszolgálók
Helyi MCP-eszközök Helyileg vagy egyéni gazdagépeken futó MCP-kiszolgálók
Öntödei eszközkészletek Egy Foundry-projektben felügyelt üzemeltetett eszközkonfigurációk nevesített, verziószámozott csomagjai
Képgenerálás Üzemeltetett rendszerkép létrehozása az Foundry /OpenAI-válaszok futtatókörnyezetben
Shell Üzemeltetett rendszerhéj végrehajtása az OpenAI-válaszok futtatókörnyezetében – eltér a GitHub Copilot parancssori felület beépített rendszerhéj-/fájl-/URL-futtatókörnyezeti eszközeitől
Bing Földelés Webes földelés saját Földelésen keresztül a Bing Search-erőforrással – kísérleti
Bing Custom Search A Bing földelése válogatott tartománylistára korlátozódik – előzetes verzió
Azure AI Keresés Azure AI Keresés index lekérdezése Foundry-kapcsolaton keresztül – kísérleti
SharePoint Alap válaszok SharePoint tartalomban – előzetes verzió
Microsoft Fabric Fabric-adatügynök lekérdezése – előzetes verzió
Memóriakeresés Keresés egy Foundry által felügyelt memóriatárolóban – előzetes verzió
Számítógépes használat Asztali vagy böngészőkörnyezet vezetése – előzetes verzió
Böngészőautomatizálás Böngésző vezetése Azure Playwrighton keresztül – előzetes verzió
Ügynök–ügynök (A2A) eszköz Távoli A2A-ügynök meghívása eszközként egy Foundry-ügynökből – előzetes verzió

Megjegyzés:

A kísérleti vagy előzetes verziójú eszközök dokumentálva vannak a megfelelő szolgáltatói oldalon, és a folyamat első használatakor bocsátják ki ExperimentalWarning őket.

Eszköz típusa Package Description
Függvényeszközök tool/functool Beírt Go-függvények JSON-sémákkal, amelyeket az ügynök meghívhat
Ügynök függvényeszközként tool/agenttool Ügynök körbefuttatása úgy, tool.FuncTool hogy egy másik ügynök meghívhassa
Helyi MCP-eszközök tool/mcptool Csatlakozás MCP-kiszolgálókhoz, és az eszközeik értékként tool.FuncTool való megjelenítése
Webes keresés tool/hostedtool.WebSearch Szolgáltatóoldali webes keresés deklarálása, ha a háttérszolgáltatás támogatja
fájlkeresés tool/hostedtool.FileSearch Szolgáltatóoldali fájl- vagy vektortároló-keresés deklarálása
Kódértelmező tool/hostedtool.CodeInterpreter Szolgáltatóoldali kódvégrehajtás deklarálása
Üzemeltetett MCP-eszközök tool/hostedtool.MCPServer McP-kiszolgáló deklarálása a szolgáltatói futtatókörnyezet hívásához
Helyi héjeszköz tool/shelltool Helyi rendszerhéjparancsok futtatása olyan függvényeszközön keresztül, amely alapértelmezés szerint jóváhagyást igényel

Minden eszköz implementálja a tool.Tool felületet:

type Tool interface {
    Name() string
    Description() string
}

A függvényeszközök emellett implementálják tool.FuncToola következőt:

import "context"

type FuncTool interface {
    Tool
    Schema() any
    ReturnSchema() any
    Call(ctx context.Context, arguments string) (any, error)
}

A legtöbb alkalmazás közvetlenül a functool.Newfunctool.MustNew implementálás FuncTool helyett függvényeszközöket hoz létre. A keretrendszer a Go-függvény aláírásával vagy strukturálási címkék használatával hozza létre a modell számára elérhető sémát.

Eszközök átadása az ügynöknek a következőn keresztül 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},
    },
})

Vagy adjon hozzá futtatásonként eszközöket:

resp, err := a.RunText(ctx, "What's the weather?", agent.WithTool(weatherTool)).Collect()

Eszköz jóváhagyása

Az eszközjóváhagyás egy keretrendszer-funkció, amely lehetővé teszi, hogy a modell megkapja az eredményt, mielőtt a modell megkapja az eredményt. Együttműködik azokkal a szolgáltatókkal, amelyek ügyfelei helyileg hívják meg az eszközöket; a szolgáltatásoldali üzemeltetett eszközök a szolgáltató saját jóváhagyási viselkedését követik. A teljes minta eszközjóváhagyási oldalán megtekintheti, hogy a jóváhagyások hogyan működnek együtt a munkamenetekkel, a streameléssel és a köztes szoftverekkel.

Go esetén jelölj meg egy visszavonhatatlan eszközt tool.ApprovalRequiredFunc egy már implementálható eszközzel, vagy használjon olyan eszközt, amely már implementálható tool.ApprovalRequiredTool, például a helyi rendszerhéj-eszközt. A jóváhagyási kérelmek és válaszok automatikusan meghívják a köztes szoftvereket, így a helyi függvényhívásokat visszaadó szolgáltatókkal működnek együtt.

Szolgáltatói támogatási mátrix

Az OpenAI és Azure OpenAI-szolgáltatók mindegyike két ügyféltípust kínál – a Válaszokat és a Csevegés befejezését – különböző eszközképességekkel. Az Azure OpenAI-ügyfelek az OpenAI-ekvivalenseiket tükrözik. Copilot Studio és A2A ügynökök távoli szolgáltatáson futnak, így képességeik az Ügynökkeret-ügyfél helyett a távoli ügynökön vannak konfigurálva – nem szerepelnek a mátrixban.

Eszköz típusa Válaszok Csevegés befejezése Öntöde Anthropic Ollama GitHub Copilot
Függvényeszközök
Kódértelmező
fájlkeresés
Webes keresés
Üzemeltetett MCP-eszközök
Helyi MCP-eszközök

Megjegyzés:

A Responses és Chat Completion oszlopok az OpenAI és Azure OpenAI oszlopra is érvényesek – a Azure változatok ugyanazt az eszköztámogatást tükrözik, mint openAI-társaik. Az elavult OpenAI Asszisztants API már nincs dokumentálva; A migrálási útmutatót a Szemantikus kernel migrálási útmutatóban találja.

Szolgáltatói támogatási mátrix

Az OpenAI és az Azure OpenAI-szolgáltatók mindegyike több ügyféltípust kínál különböző eszközképességekkel. Az Azure OpenAI-ügyfelek az OpenAI-ekvivalenseiket tükrözik. Az Foundry oszlop a következőre vonatkozik FoundryChatClient : az FoundryAgenteszközök az Foundry-ügynök definícióján vannak konfigurálva (lásd: Mi működik és mi nem működik).FoundryAgent Copilot Studio és A2A ügynökök távoli szolgáltatáson futnak, így képességeik az Ügynökkeret-ügyfél helyett a távoli ügynökön vannak konfigurálva – nem szerepelnek a mátrixban.

Eszköz típusa Válaszok Csevegés befejezése Öntöde Anthropic Ollama Foundry Local GitHub Copilot
Függvényeszközök ⚠️¹ ⚠️¹
Kódértelmező
fájlkeresés
Webes keresés
Képgenerálás
Hosted Shell (get_shell_tool)
Beépített rendszerhéj / fájlrendszer / URL-beolvasás ✅²
Üzemeltetett MCP-eszközök
Helyi MCP-eszközök
Öntödei eszközkészletek
Bing Grounding (kísérleti)
Bing Custom Search (előzetes verzió)
Azure AI Keresés (kísérleti)
SharePoint (előzetes verzió)
Microsoft Fabric (előzetes verzió)
Memóriakeresés (előzetes verzió)
Számítógép-használat (előzetes verzió)
Böngészőautomatizálás (előzetes verzió)
Ügynök–ügynök (A2A) eszköz (előzetes verzió)

¹ A kiválasztott helyi modell támogató függvényhívásától függ. ² Beépített a GitHub Copilot CLI-futtatókörnyezetbe, amelyet egy engedélykezelő vezet. Más felület, mint az OpenAI-é get_shell_tool.

Megjegyzés:

A Responses és Chat Completion oszlopok az OpenAI és Azure OpenAI oszlopra is érvényesek – a Azure változatok ugyanazt az eszköztámogatást tükrözik, mint openAI-társaik. A helyi MCP-eszközök minden olyan szolgáltatóval együttműködnek, amely támogatja a függvényeszközöket.

Szolgáltatói támogatási mátrix

A Go SDK Microsoft Foundryt foundryprovider és OpenAI/Azure OpenAI-t openaiprovidertesz elérhetővé. Az tool/hostedtool üzemeltetett eszközök deklarációk: a Go SDK elküldi őket a szolgáltatónak, és a szolgáltató dönti el, hogy elérhető-e az üzemeltetett képesség.

Eszköz típusa Öntöde Válaszok Csevegés kiegészítések Anthropic
Függvényeszközök
Ügynök függvényeszközként
Helyi MCP-eszközök
Webes keresés
fájlkeresés
Kódértelmező
Üzemeltetett MCP-eszközök
Helyi héjeszköz

Megjegyzés:

A helyi MCP-eszközök és a helyi rendszerhéj-eszköz a szolgáltató szempontjából függvényeszközök, ezért a függvényeszközök támogatását követik. Az olyan üzemeltetett eszközöket, mint a hostedtool.FileSearch, hostedtool.CodeInterpreterés hostedtool.MCPServer az AI szolgáltatás hajtja végre, nem pedig a Go folyamat.

Ügynök használata függvényeszközként

Egy ügynök függvényeszközként használható egy másik ügynökhöz, lehetővé téve az ügynökök összetételét és a fejlettebb munkafolyamatokat. A belső ügynök függvényeszközzé alakul, és a külső ügynökhöz kerül, amely szükség szerint meghívhatja.

Meghívhat .AsAIFunction() egy olyan AIAgent függvényeszközt, amely egy másik ügynöknek adható:

// 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?"));

Figyelmeztetés

DefaultAzureCredential a fejlesztéshez kényelmes, de a termelési környezetben gondos megfontolást igényel. Éles környezetben fontolja meg egy adott hitelesítő adat (pl. ManagedIdentityCredential) használatát a késési problémák elkerülése, a hitelesítő adatok nem szándékos próbálgatásának és a tartalék mechanizmusokból eredő esetleges biztonsági kockázatok elkerülése érdekében.

Hívja meg .as_tool() az ügynököt, hogy átalakítsa egy másik ügynöknek adható függvényeszközzé:

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)

Az eszköz nevét, leírását és argumentumnevét testre is szabhatja:

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"
)

Az ügynök burkolása agenttool.New egy másik ügynök számára való elérhetővé tool.FuncTool tétele érdekében:

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()

Ugyanezt a burkolt ügynököt az MCP-vel mcptool.AddToolis elérhetővé teheti, mivel agenttool.New függvényeszközt ad vissza.

Tip

A teljes futtatható példákért tekintse meg az ügynököt függvényeszköz-mintaként , az ügynök pedig MCP-eszközmintaként .

Következő lépések