Delen via


Azure AI Agents: functie aanroepen

Azure AI Agents ondersteunt functieaanroepen, waarmee u de structuur van functies kunt beschrijven aan een assistent en vervolgens de functies kunt retourneren die samen met hun argumenten moeten worden aangeroepen.

Notitie

Uitvoeringen verlopen tien minuten na het maken. Zorg ervoor dat u de uitvoer van uw hulpprogramma verzendt vóór de vervaldatum.

Gebruiksondersteuning

Ondersteuning voor Azure AI Foundry Python SDK C# SDK JavaScript SDK REST-API Basisagent instellen Standaardagent instellen
✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Een functie definiëren die door uw agent moet worden aangeroepen

Begin met het definiëren van een functie die uw agent moet aanroepen. Wanneer u een functie maakt die door een agent moet worden aangeroepen, beschrijft u de structuur ervan met alle vereiste parameters in een docstring. Neem al uw functiedefinities op in één bestand, user_functions.py dat u vervolgens kunt importeren in uw hoofdscript.

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,
}

Zie het Python-bestand op GitHub voor een voorbeeld van een volledige reeks functiedefinities. Dit bestand wordt in user_functions.py het volgende voorbeeld hieronder genoemd.

Een client en agent maken

In het onderstaande voorbeeld maken we een client en definiëren we een toolset die wordt gebruikt voor het verwerken van de functies die zijn gedefinieerd in user_functions.

toolset: Wanneer u de parameter toolset gebruikt, geeft u niet alleen de functiedefinities en beschrijvingen op, maar ook de bijbehorende implementaties. De SDK voert deze functies uit binnen create_and_run_process of streaming. Deze functies worden aangeroepen op basis van hun definities.

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)

agent = project_client.agents.create_agent(
    model="gpt-4o-mini", name="my-agent", instructions="You are a weather bot. Use the provided functions to help answer questions.", toolset=toolset
)
print(f"Created agent, ID: {agent.id}")

Een thread maken

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

Een uitvoering maken en de uitvoer controleren

# Create and process agent run in thread with tools
run = project_client.agents.create_and_process_run(thread_id=thread.id, agent_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}")

Zie ook