Schritt 2: Hinzufügen von Tools

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: