Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med verktyg kan agenten anropa anpassade funktioner, till exempel hämta väderdata, köra frågor mot en databas eller anropa ett API.
Innan du lägger till verktyg läser du bästa praxis för säkerhet vid verktygsgodkännande för att avgöra vilka åtgärder som behöver mänsklig bekräftelse.
Definiera ett verktyg som vilken metod som helst med ett [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.";
Skapa en agent med verktyget:
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)]);
Varning
DefaultAzureCredential är praktiskt för utveckling men kräver noggrant övervägande i produktion. I produktion bör du överväga att använda en specifik autentiseringsuppgift (t.ex. ManagedIdentityCredential) för att undvika problem med svarstid, oavsiktlig avsökning av autentiseringsuppgifter och potentiella säkerhetsrisker från reservmekanismer.
Agenten anropar automatiskt verktyget när det är relevant:
Console.WriteLine(await agent.RunAsync("What is the weather like in Amsterdam?"));
Tip
Här finns ett fullständigt körbart exempelprogram.
Det fullständiga exemplet definierar ett verktyg med dekoratören @tool , skapar en agent med verktyget och kör agenten:
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
Se det fullständiga exemplet för den fullständiga körbara filen.
Definiera ett verktyg med :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
})
Skapa en agent med verktyget:
a := foundryprovider.NewAgent(
endpoint,
token,
foundryprovider.ModelDeployment(model),
foundryprovider.AgentConfig{
Instructions: "You are a helpful assistant",
Config: agent.Config{
Tools: []tool.Tool{weatherTool},
},
},
)
Agenten anropar automatiskt verktyget när det är relevant:
resp, err := a.RunText(ctx, "What is the weather like in Amsterdam?").Collect()
fmt.Println(resp, err)
Tip
Se det fullständiga exemplet för den fullständiga körbara filen.
Nästa steg
Gå djupare:
- Översikt över verktyg – lär dig mer om alla tillgängliga verktygstyper
- Funktionsverktyg – avancerade funktionsverktygsmönster
- Verktygsgodkännande – människa-i-loopen för verktygsanrop