Compartilhar via


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

Os Agentes de IA do Azure oferecem suporte à chamada de função, o que permite que você descreva a estrutura das funções para um Assistente e, em seguida, retorne as funções que precisam ser chamadas juntamente com seus argumentos.

Observação

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

Definir uma função para seu agente chamar

Comece definindo uma função para 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 pode ser importado 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,
}

Consulte o arquivo python no GitHub para ver um exemplo de uma série completa de definições de função. Esse arquivo é chamado de user_functions.py no exemplo a seguir.

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 de conjunto de ferramentas, você fornece não apenas as definições e descrições de função, mas também as respectivas implementações. O SDK executará essas funções em create_and_run_process ou streaming. Essas funções serão invocadas com base nas respectivas 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)

Envio de 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}")

Criar uma execução e verificar 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}")

Confira também