Compartir vía


Llamada a funciones de Agentes de Azure AI

Agentes de Azure AI es compatible con la llamada a funciones, lo que permite describir la estructura de las funciones a un asistente y después devolver las funciones que necesitan llamarse junto con sus argumentos.

Nota:

Las ejecuciones expiran diez minutos después de la creación. Asegúrese de enviar las salidas de la herramienta antes de la expiración.

Definición de una función para que la llame su agente

Empiece por definir una función para que su agente la llame. Cuando se crea una función para que la llame un agente, se describe su estructura con los parámetros necesarios en un docstring. Incluya todas las definiciones de sus funciones en un único archivo, user_functions.py, que después podrá importar a su script principal.

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

Consulte el archivo depython en GitHub para ver un ejemplo de una serie completa de definiciones de funciones. Este archivo se denomina user_functions.py en el siguiente ejemplo.

Creación de un cliente

En el ejemplo siguiente se crea un cliente y se define un toolset que se usará para procesar las funciones definidas en user_functions.

toolset: al usar el parámetro del conjunto de herramientas, no solo se proporcionan las definiciones y descripciones de funciones, sino también sus implementaciones. El SDK ejecutará estas funciones en create_and_run_process o streaming. Estas funciones se invocarán en función de sus definiciones.

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)

Envío de salidas de función


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

Creación de un subproceso

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

Crear una ejecución y comprobación de la salida

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

Consulte también