Funktionsanrop för Azure AI-agenter
Azure AI-agenter stöder funktionsanrop, vilket gör att du kan beskriva strukturen för funktioner till en assistent och sedan returnera de funktioner som måste anropas tillsammans med deras argument.
Kommentar
Körningar upphör att gälla tio minuter efter skapandet. Se till att skicka dina verktygsutdata innan förfallodatumet.
Modeller som stöds
Sidan Modeller innehåller den senaste informationen om regioner/modeller där agenter stöds.
Om du vill använda alla funktioner för funktionsanrop, inklusive parallella funktioner, måste du använda en modell som släpptes efter den 6 november 2023.
Definiera en funktion som agenten ska anropa
Börja med att definiera en funktion som agenten ska anropa. När du skapar en funktion för en agent att anropa beskriver du dess struktur med eventuella obligatoriska parametrar i en dokumentsträng. Inkludera alla funktionsdefinitioner i en enda fil, user_functions.py
som du sedan kan importera till huvudskriptet.
import json
import datetime
from typing import Any, Callable, Set, Dict, List, Optional
def fetch_weather(location: str) -> str:
"""
Fetches the weather information for the specified location.
:param location (str): The location to fetch weather for.
:return: Weather information as a JSON string.
:rtype: str
"""
# In a real-world scenario, you'd integrate with a weather API.
# Here, we'll mock the response.
mock_weather_data = {"New York": "Sunny, 25°C", "London": "Cloudy, 18°C", "Tokyo": "Rainy, 22°C"}
weather = mock_weather_data.get(location, "Weather data not available for this location.")
weather_json = json.dumps({"weather": weather})
return weather_json
# Statically defined user functions for fast reference
user_functions: Set[Callable[..., Any]] = {
fetch_weather,
}
Ett exempel på en fullständig serie funktionsdefinitioner finns i Python-filen på GitHub . Den här filen kallas user_functions.py
i följande exempel nedan.
Skapa en klient
I exemplet nedan skapar vi en klient och definierar en toolset
som ska användas för att bearbeta de funktioner som definieras i user_functions
.
toolset
: När du använder verktygsuppsättningsparametern anger du inte bara funktionsdefinitionerna och beskrivningarna utan även implementeringarna. SDK:t kör dessa funktioner inom create_and_run_process eller direktuppspelning. Dessa funktioner anropas baserat på deras definitioner.
import os
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from azure.ai.projects.models import FunctionTool, ToolSet
from user_functions import user_functions # user functions which can be found in a user_functions.py file.
# Create an Azure AI Client from a connection string, copied from your Azure AI Foundry project.
# It should be in the format "<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<HubName>"
# Customers need to login to Azure subscription via Azure CLI and set the environment variables
project_client = AIProjectClient.from_connection_string(
credential=DefaultAzureCredential(),
conn_str=os.environ["PROJECT_CONNECTION_STRING"],
)
# Initialize agent toolset with user functions
functions = FunctionTool(user_functions)
toolset = ToolSet()
toolset.add(functions)
Skicka funktionsutdata
# Create agent with toolset and process a run
agent = project_client.agents.create_agent(
model="gpt-4o-mini", name="my-agent", instructions="You are a helpful agent", toolset=toolset
)
print(f"Created agent, ID: {agent.id}")
Skapa en tråd
# Create thread for communication
thread = project_client.agents.create_thread()
print(f"Created thread, ID: {thread.id}")
# Create message to thread
message = project_client.agents.create_message(
thread_id=thread.id,
role="user",
content="Hello, send an email with the datetime and weather information in New York?",
)
print(f"Created message, ID: {message.id}")
Skapa en körning och kontrollera utdata
# Create and process agent run in thread with tools
run = project_client.agents.create_and_process_run(thread_id=thread.id, assistant_id=agent.id)
print(f"Run finished with status: {run.status}")
if run.status == "failed":
print(f"Run failed: {run.last_error}")
# Delete the agent when done
project_client.agents.delete_agent(agent.id)
print("Deleted agent")
# Fetch and log all messages
messages = project_client.agents.list_messages(thread_id=thread.id)
print(f"Messages: {messages}")