Sdílet prostřednictvím


Volání funkce Agenti Azure AI

Agenti Azure AI podporují volání funkcí, které vám umožní popsat strukturu funkcí asistentovi a pak vrátit funkce, které je potřeba volat spolu s jejich argumenty.

Poznámka:

Po vytvoření vyprší platnost deseti minut. Před vypršením platnosti nezapomeňte odeslat výstupy vašeho nástroje.

Definování funkce pro volání agenta

Začněte definováním funkce, kterou má agent volat. Když vytvoříte funkci pro volání agenta, popíšete její strukturu s libovolnými požadovanými parametry v souboru docstring. Zahrňte všechny definice funkcí do jednoho souboru, user_functions.py který pak můžete importovat do hlavního skriptu.

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

Příklad celé řady definic funkcí najdete v souboru Pythonu na GitHubu. Tento soubor se označuje jako user_functions.py v následujícím příkladu níže.

Vytvoření klienta

V následující ukázce vytvoříme klienta a definujeme toolset , který se použije ke zpracování funkcí definovaných v user_functions.

toolset: Při použití parametru sady nástrojů zadáte nejen definice funkcí a popisy, ale také jejich implementace. Sada SDK tyto funkce spustí v rámci create_and_run_process nebo streamování. Tyto funkce budou vyvolány na základě jejich definic.

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)

Odesílání výstupů funkce


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

Vytvoření vlákna

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

Vytvoření spuštění a kontrola výstupu

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

Viz také