Partilhar via


Chamada de função dos Agentes de IA do Azure

Os Agentes de IA do Azure dão suporte à chamada de funções, que permite descrever a estrutura de funções para um Assistente e, em seguida, retornar as funções que precisam ser chamadas junto com seus argumentos.

Nota

As execuções expiram dez minutos após a criação. Certifique-se de enviar as saídas da ferramenta antes da expiração.

Definir uma função para o seu agente chamar

Comece definindo uma função para o seu agente chamar. Ao criar uma função para um agente chamar, você descreve sua estrutura com todos os parâmetros necessários em um docstring. Inclua todas as suas definições de função em um único arquivo, user_functions.py que você pode importar para o 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,
}

Veja o arquivo python no GitHub para obter um exemplo de uma série completa de definições de função. Este ficheiro é referido como user_functions.py no exemplo seguinte abaixo.

Criar um cliente

No exemplo abaixo, criamos um cliente e definimos um toolset que será usado para processar as funções definidas em user_functions.

toolset: Ao usar o parâmetro toolset, você fornece não apenas as definições e descrições de função, mas também suas implementações. O SDK executará essas funções dentro create_and_run_process ou streaming. Estas funções serão invocadas com base nas suas definições.

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)

Enviando saídas de função


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

Criar um thread

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

Crie uma execução e verifique a saída

# 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 também