Freigeben über


Funktionsaufrufe mit Azure KI-Agents

Azure KI-Agents unterstützen Funktionsaufrufe, mit denen Sie einem Assistenten die Struktur von Funktionen beschreiben und dann die Funktionen zurückgeben können, die zusammen mit ihren Argumenten aufgerufen werden müssen.

Hinweis

Läuft 10 Minuten nach der Erstellung ab. Stellen Sie sicher, dass Sie Ihre Toolausgabe vor dem Ablauf übermitteln.

Definieren einer Funktion für ihren Agent, die aufgerufen werden soll

Definieren Sie zunächst eine Funktion für ihren Agent, die aufgerufen werden soll. Wenn Sie eine Funktion für einen Agent erstellen, die aufgerufen werden soll, beschreiben Sie deren Struktur mit allen erforderlichen Parametern in einer docstring-Datei. Schließen Sie alle Funktionsdefinitionen in der einzelnen Datei user_functions.py ein, die Sie dann in Ihr Hauptskript importieren können.

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

Ein Beispiel für vollständige Funktionsdefinitionen finden Sie in der Python-Datei in GitHub. Diese Datei wird im folgenden Beispiel als user_functions.py bezeichnet.

Erstellen eines -Clients

Im folgenden Beispiel erstellen wir einen Client und definieren eine toolset, die zum Verarbeiten der in user_functions definierten Funktionen verwendet wird.

toolset: Bei Verwendung des Toolsetparameters stellen Sie nicht nur die Funktionsdefinitionen und Beschreibungen bereit, sondern auch deren Implementierungen. Das SDK führt diese Funktionen in create_and_run_process oder Streaming aus. Diese Funktionen werden basierend auf ihren Definitionen aufgerufen.

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)

Senden von Funktionsausgaben


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

Erstellen eines Threads

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

Erstellen einer Ausführung und Überprüfen der Ausgabe

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

Siehe auch