Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Tools ermöglichen es Ihrem Agent, benutzerdefinierte Funktionen aufzurufen, z. B. Wetterdaten abzurufen, eine Datenbank abzurufen oder eine API aufzurufen.
Bevor Sie Tools hinzufügen, überprüfen Sie die bewährten Sicherheitspraktiken für die Toolgenehmigung, um zu entscheiden, welche Vorgänge eine menschliche Bestätigung benötigen.
Definieren Sie ein Tool als eine beliebige Methode mit einem [Description] Attribut:
using System.ComponentModel;
[Description("Get the weather for a given location.")]
static string GetWeather([Description("The location to get the weather for.")] string location)
=> $"The weather in {location} is cloudy with a high of 15°C.";
Erstellen Sie einen Agent mit dem Tool:
using System;
using Azure.AI.Projects;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT")
?? throw new InvalidOperationException("Set AZURE_OPENAI_ENDPOINT");
var deploymentName = Environment.GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_NAME") ?? "gpt-4o-mini";
AIAgent agent = new AIProjectClient(new Uri(endpoint), new DefaultAzureCredential())
.AsAIAgent(
model: deploymentName,
instructions: "You are a helpful assistant.",
tools: [AIFunctionFactory.Create(GetWeather)]);
Warnung
DefaultAzureCredential ist praktisch für die Entwicklung, erfordert aber sorgfältige Überlegungen in der Produktion. Berücksichtigen Sie in der Produktion die Verwendung bestimmter Anmeldeinformationen (z. B. ManagedIdentityCredential), um Latenzprobleme, unbeabsichtigte Abfragen von Anmeldeinformationen und potenzielle Sicherheitsrisiken durch Ausweichmechanismen zu vermeiden.
Der Agent ruft Ihr Tool automatisch an, wenn relevant:
Console.WriteLine(await agent.RunAsync("What is the weather like in Amsterdam?"));
Tip
Eine voll ausgeführte Beispielanwendung finden Sie hier .
Im vollständigen Beispiel wird ein Tool mit dem @tool Dekorateur definiert, ein Agent mit dem Tool erstellt und der Agent ausgeführt:
import asyncio
from agent_framework import Agent, tool
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential
# This read-only sample tool can run without approval.
@tool(approval_mode="never_require")
def get_weather(location: str) -> str:
"""Get the weather for a given location."""
return f"The weather in {location} is sunny."
async def main() -> None:
agent = Agent(
client=FoundryChatClient(
project_endpoint="https://your-account.services.ai.azure.com/api/projects/your-project",
model="gpt-6-luna",
credential=AzureCliCredential(),
),
instructions="Use the weather tool to answer questions.",
tools=[get_weather],
)
print(await agent.run("What's the weather like in Seattle?"))
if __name__ == "__main__":
asyncio.run(main())
Tip
Sehen Sie sich das vollständige Beispiel für die vollständige ausgeführte Datei an.
Definieren eines Tools mithilfe von functool:
import (
"context"
"fmt"
"github.com/microsoft/agent-framework-go/tool"
"github.com/microsoft/agent-framework-go/tool/functool"
)
var weatherTool = functool.MustNew(functool.Config{
Name: "weather",
Description: "Get the current weather for a given location",
}, func(_ context.Context, location string) (string, error) {
return fmt.Sprintf("The weather in %s is cloudy with a high of 15°C.", location), nil
})
Erstellen Sie einen Agent mit dem Tool:
a := foundryprovider.NewAgent(
endpoint,
token,
foundryprovider.ModelDeployment(model),
foundryprovider.AgentConfig{
Instructions: "You are a helpful assistant",
Config: agent.Config{
Tools: []tool.Tool{weatherTool},
},
},
)
Der Agent ruft Ihr Tool automatisch an, wenn relevant:
resp, err := a.RunText(ctx, "What is the weather like in Amsterdam?").Collect()
fmt.Println(resp, err)
Tip
Sehen Sie sich das vollständige Beispiel für die vollständige ausgeführte Datei an.
Nächste Schritte
Gehen Sie tiefer:
- Übersicht über Tools – Erfahren Sie mehr über alle verfügbaren Tooltypen
- Funktionstools – erweiterte Funktionstoolmuster
- Toolgenehmigung – Human-in-the-Loop bei Toolaufrufen