Usar un agente de AG2

Además de las instrucciones generales para usar un agente, en esta página se describen las funciones específicas de AG2Agent.

Antes de empezar

En este tutorial se da por hecho que has leído y seguido las instrucciones de los siguientes artículos:

Obtener una instancia de un agente

Para consultar un AG2Agent, primero debes crear una instancia o obtener una instancia que ya tengas.

Para obtener el AG2Agent correspondiente a un ID de recurso específico, sigue estos pasos:

SDK de Vertex AI para Python

Ejecuta el siguiente código:

import vertexai

client = vertexai.Client(  # For service interactions via client.agent_engines
    project="PROJECT_ID",
    location="LOCATION",
)

agent = client.agent_engines.get(name="projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID")

print(agent)

donde

Biblioteca de solicitudes de Python

Ejecuta el siguiente código:

from google import auth as google_auth
from google.auth.transport import requests as google_requests
import requests

def get_identity_token():
    credentials, _ = google_auth.default()
    auth_request = google_requests.Request()
    credentials.refresh(auth_request)
    return credentials.token

response = requests.get(
f"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID",
    headers={
        "Content-Type": "application/json; charset=utf-8",
        "Authorization": f"Bearer {get_identity_token()}",
    },
)

API REST

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID

Cuando se usa el SDK de Vertex AI para Python, el objeto agent corresponde a una clase AgentEngine que contiene lo siguiente:

  • Un agent.api_resource con información sobre el agente implementado. También puedes llamar a agent.operation_schemas() para que se devuelva la lista de operaciones que admite el agente. Consulta Operaciones admitidas para obtener más información.
  • un agent.api_client que permite interacciones de servicio síncronas
  • un agent.async_api_client que permite interacciones de servicio asíncronas

En el resto de esta sección se presupone que tienes una instancia de AgentEngine llamada agent.

Operaciones admitidas

Se admiten las siguientes operaciones para AG2Agent:

  • query: para obtener una respuesta a una consulta de forma síncrona.

El método query admite los siguientes argumentos:

  • input: el mensaje que se enviará al agente.
  • max_turns: número máximo de turnos de conversación permitidos. Cuando se usan herramientas, se necesitan al menos max_turns=2: un turno para generar los argumentos de la herramienta y otro para ejecutarla.

Consultar el agente

El método query() ofrece una forma simplificada de interactuar con el agente. Una llamada típica tiene este aspecto:

response = agent.query(input="What is the exchange rate from US dollars to Swedish currency?", max_turns=2)

Este método gestiona la comunicación subyacente con el agente y devuelve la respuesta final del agente como un diccionario. Es equivalente a lo siguiente (en formato completo):

from autogen import ConversableAgent
import dataclasses
import json

input_message: str = "What is the exchange rate from US dollars to Swedish currency?"
max_turns: int = 2

with agent._runnable._create_or_get_executor(
    tools=agent._ag2_tool_objects,            # Use the agent's existing tools
    agent_name="user",                        # Default
    agent_human_input_mode="NEVER",           # query() enforces this
) as executor:
    chat_result = executor.initiate_chat(
        agent._runnable,
        message=input_message,
        max_turns=max_turns,
        clear_history=False,                  # Default
        summary_method="last_msg"             # Default
    )

response = json.loads(
  json.dumps(dataclasses.asdict(chat_result)) # query() does this conversion
)

Puedes personalizar el comportamiento del agente más allá de input y max_turns pasando argumentos de palabras clave adicionales a query().

response = agent.query(
    input="What is the exchange rate from US dollars to Swedish currency?",
    max_turns=2,
    msg_to="user"  # Start the conversation with the "user" agent
)
print(response)

Consulta la documentación de ConversableAgent.run para ver una lista completa de los parámetros disponibles. Sin embargo, ten en cuenta que user_input siempre se sustituirá por False en la plantilla AG2Agent.

Siguientes pasos