Panoramica degli strumenti

Agent Framework supporta molti tipi diversi di strumenti che estendono le funzionalità dell'agente. Gli strumenti consentono agli agenti di interagire con sistemi esterni, eseguire codice, cercare dati e altro ancora.

Tipi di strumenti

Tipo di strumento Descrzione
Strumenti per le funzioni Codice personalizzato che gli agenti possono chiamare durante le conversazioni
Interprete di codice Eseguire codice in un ambiente in modalità sandbox
Ricerca file Eseguire ricerche nei file caricati
Ricerca Web Cercare informazioni sul Web
Strumenti MCP ospitati Server MCP richiamati dal runtime del provider
Strumenti MCP locali Server MCP in esecuzione in locale o in host personalizzati
Casella degli strumenti foundry Bundle denominati e con controllo delle versioni delle configurazioni degli strumenti ospitati gestite in un progetto Foundry
Tipo di strumento Descrzione
Strumenti per le funzioni Codice personalizzato che gli agenti possono chiamare durante le conversazioni
Interprete di codice Eseguire codice in un ambiente in modalità sandbox
Ricerca file Eseguire ricerche nei file caricati
Ricerca Web Cercare informazioni sul Web
Strumenti MCP ospitati Server MCP richiamati dal runtime del provider
Strumenti MCP locali Server MCP in esecuzione in locale o in host personalizzati
Casella degli strumenti foundry Bundle denominati e con controllo delle versioni delle configurazioni degli strumenti ospitati gestite in un progetto Foundry
Generazione di immagini Generazione di immagini ospitate nel runtime delle risposte Foundry/OpenAI
Shell Esecuzione della shell ospitata nel runtime delle risposte OpenAI, distinta dagli strumenti predefiniti della shell/file/URL dell'interfaccia della riga di comando di GitHub Copilot
Fondamenti di Bing Web grounding tramite il proprio grounding con la risorsa Ricerca Bing - sperimentale
Ricerca personalizzata Bing Base bing limitata a un elenco di domini curato - anteprima
Ricerca di intelligenza artificiale di Azure Eseguire una query su un indice Azure AI Search tramite una connessione Foundry - sperimentale
SharePoint Risposte di base nel contenuto di SharePoint - anteprima
Microsoft Fabric Eseguire query su un agente dati Fabric - anteprima
Ricerca memoria Cercare un archivio di memoria gestito da Foundry - anteprima
Uso del computer Eseguire l'unità di un ambiente desktop o browser - anteprima
Automazione del browser Guidare un browser tramite Azure Playwright - anteprima
Strumento tra agenti (A2A) Chiamare un agente A2A remoto come strumento da un agente Foundry - anteprima

Annotazioni

Gli strumenti contrassegnati come sperimentali o di anteprima sono documentati nella pagina del provider pertinente e generano una ExperimentalWarning prima volta che vengono usati in un processo.

Tipo di strumento Package Descrzione
Strumenti per le funzioni tool/functool Funzioni Go tipate con schemi JSON che l'agente può chiamare
Agente come strumento per le funzioni tool/agenttool Eseguire il wrapping di un agente come agente tool.FuncTool in modo che un altro agente possa chiamarlo
Strumenti MCP locali tool/mcptool Connettersi ai server MCP ed esporre i propri strumenti come tool.FuncTool valori
Ricerca Web tool/hostedtool.WebSearch Dichiarare la ricerca Web sul lato provider quando il servizio di supporto lo supporta
Ricerca file tool/hostedtool.FileSearch Dichiarare la ricerca nel file sul lato provider o nell'archivio vettoriale
Interprete di codice tool/hostedtool.CodeInterpreter Dichiarare l'esecuzione del codice lato provider
Strumenti MCP ospitati tool/hostedtool.MCPServer Dichiarare un server MCP per il runtime del provider da chiamare
Strumento a guscio locale tool/shelltool Eseguire comandi della shell locale tramite uno strumento di funzione che richiede l'approvazione per impostazione predefinita

Tutti gli strumenti implementano l'interfaccia tool.Tool :

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

Gli strumenti per le funzioni implementano tool.FuncToolanche :

import "context"

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

La maggior parte delle applicazioni crea strumenti di funzione con functool.New o functool.MustNew invece di implementare FuncTool direttamente. Il framework usa i tag di firma o struct della funzione Go per compilare lo schema esposto al modello.

Passare gli strumenti all'agente tramite 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},
    },
})

In alternativa, aggiungere strumenti per ogni esecuzione:

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

Approvazione degli strumenti

L'approvazione degli strumenti è una funzionalità del framework che consente di controllare le chiamate degli strumenti tramite una decisione umana nel ciclo prima che il modello riceva il risultato. Funziona con i provider i cui client richiamano gli strumenti in locale; Gli strumenti ospitati sul lato servizio seguono il comportamento di approvazione del provider. Vedere la pagina Approvazione strumento per il modello completo, incluso il modo in cui le approvazioni interagiscono con sessioni, streaming e middleware.

Per Go, contrassegnare uno strumento invocabile con tool.ApprovalRequiredFunc o usare uno strumento che implementa tool.ApprovalRequiredToolgià , ad esempio lo strumento della shell locale. Le richieste di approvazione e le risposte passano attraverso il middleware di chiamata automatica dello strumento, in modo che funzionino con provider che restituiscono chiamate di funzione locali.

Matrice di supporto del provider

I provider OpenAI e Azure OpenAI offrono ognuno due tipi di client, risposte e completamento chat, con diverse funzionalità degli strumenti. I client OpenAI di Azure rispecchiano gli equivalenti OpenAI. Copilot Studio e A2A agenti vengono eseguiti in un servizio remoto in modo che le relative funzionalità siano configurate nell'agente remoto anziché tramite il client di Agent Framework, non sono elencate nella matrice.

Tipo di strumento Risposte Completamento chat Fonderia Anthropic Ollama GitHub Copilot
Strumenti per le funzioni
Interprete di codice
Ricerca file
Ricerca Web
Strumenti MCP ospitati
Strumenti MCP locali

Annotazioni

Le colonne Responses e Chat Completion si applicano sia a OpenAI che a Azure OpenAI. Le varianti Azure rispecchiano lo stesso strumento supportato dalle controparti OpenAI. L'API OpenAI Assistants deprecata non è più documentata; Per indicazioni sulla migrazione, vedere la guida alla migrazione Kernel semantico.

Matrice di supporto del provider

I provider OpenAI e Azure OpenAI offrono ognuno più tipi di client con diverse funzionalità degli strumenti. I client OpenAI di Azure rispecchiano gli equivalenti OpenAI. La colonna Foundry si applica a FoundryChatClient : per FoundryAgent, gli strumenti sono configurati nella definizione dell'agente Foundry (vedere Cosa funziona e cosa non funziona con FoundryAgent). Copilot Studio e A2A agenti vengono eseguiti in un servizio remoto in modo che le relative funzionalità siano configurate nell'agente remoto anziché tramite il client di Agent Framework, non sono elencate nella matrice.

Tipo di strumento Risposte Completamento chat Fonderia Anthropic Ollama Foundry Local GitHub Copilot
Strumenti per le funzioni ⚠️¹ ⚠️¹
Interprete di codice
Ricerca file
Ricerca Web
Generazione di immagini
Shell ospitata (get_shell_tool)
Shell predefinita/file system/recupero URL ✅²
Strumenti MCP ospitati
Strumenti MCP locali
Casella degli strumenti foundry
Bing Grounding (sperimentale)
Ricerca personalizzata Bing (anteprima)
Azure AI Search (sperimentale)
SharePoint (anteprima)
Microsoft Fabric (anteprima)
Ricerca memoria (anteprima)
Uso computer (anteprima)
Automazione browser (anteprima)
Strumento da agente a agente (A2A) ( anteprima)

¹ Dipende dal modello locale scelto che supporta la chiamata di funzione. ² Integrato nel runtime dell'interfaccia della riga di comando GitHub Copilot, gestito da un gestore di autorizzazioni. Superficie diversa da Quella di get_shell_toolOpenAI.

Annotazioni

Le colonne Responses e Chat Completion si applicano sia a OpenAI che a Azure OpenAI. Le varianti Azure rispecchiano lo stesso strumento supportato dalle controparti OpenAI. Gli strumenti MCP locali funzionano con qualsiasi provider che supporta gli strumenti per le funzioni.

Matrice di supporto del provider

Go SDK espone Microsoft Foundry tramite foundryprovider e OpenAI/Azure OpenAI tramite openaiprovider. Gli strumenti ospitati in tool/hostedtool sono dichiarazioni: Go SDK li invia al provider e il provider decide se la funzionalità ospitata è disponibile.

Tipo di strumento Fonderia Risposte Completamenti di chat Anthropic
Strumenti per le funzioni
Agente come strumento per le funzioni
Strumenti MCP locali
Ricerca Web
Ricerca file
Interprete di codice
Strumenti MCP ospitati
Strumento a guscio locale

Annotazioni

Gli strumenti MCP locali e lo strumento della shell locale sono strumenti di funzione dal punto di vista del provider, quindi seguono il supporto degli strumenti per le funzioni. Gli strumenti ospitati, ad hostedtool.FileSearchesempio , hostedtool.CodeInterpretere hostedtool.MCPServer vengono eseguiti dal servizio di intelligenza artificiale, non dal processo Go.

Uso di un agente come strumento per le funzioni

È possibile usare un agente come strumento funzione per un altro agente, abilitando la composizione degli agenti e flussi di lavoro più avanzati. L'agente interno viene convertito in uno strumento di funzione e fornito all'agente esterno, che può quindi chiamarlo in base alle esigenze.

Chiamare .AsAIFunction() su un AIAgent oggetto per convertirlo in uno strumento funzione che può essere fornito a un altro agente:

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

Avvertimento

DefaultAzureCredential è utile per lo sviluppo, ma richiede un'attenta considerazione nell'ambiente di produzione. Nell'ambiente di produzione prendere in considerazione l'uso di credenziali specifiche ,ad esempio ManagedIdentityCredential, per evitare problemi di latenza, probe di credenziali indesiderate e potenziali rischi per la sicurezza dai meccanismi di fallback.

Chiamare .as_tool() un agente per convertirlo in uno strumento funzione che può essere fornito a un altro agente:

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)

È anche possibile personalizzare il nome, la descrizione e il nome dell'argomento dello strumento:

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

Eseguire il wrapping di un agente con agenttool.New per renderlo disponibile come per tool.FuncTool un altro agente:

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

È anche possibile esporre lo stesso agente di cui è stato eseguito il wrapping tramite MCP con mcptool.AddTool, perché agenttool.New restituisce uno strumento di funzione.

Tip

Vedere l'esempio di agente come strumento per le funzioni e l'agente come esempio di strumento MCP per esempi eseguibili completi.

Passaggi successivi