Usar um agente do AG2

Além das instruções gerais para usar um agente, esta página descreve recursos específicos de AG2Agent.

Antes de começar

Para seguir este tutorial, você precisa ter lido e seguido as instruções em:

Receber uma instância de um agente

Para consultar um AG2Agent, primeiro crie uma nova instância ou receba uma instância atual.

Para receber o AG2Agent que corresponde a um ID de recurso específico:

SDK da Agent Platform

Execute o seguinte 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)

em que

Biblioteca de solicitações do Python

Execute o seguinte 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

Ao usar o SDK do Agent Platform, o objeto agent corresponde a uma AgentEngine classe que contém o seguinte:

O restante desta seção pressupõe que você tenha uma instância AgentEngine, nomeada como agent.

Operações com suporte

As seguintes operações têm suporte para AG2Agent:

  • query: para receber uma resposta a uma consulta de forma síncrona.

O método query oferece suporte aos argumentos:

  • input: a mensagem a ser enviada ao agente.
  • max_turns: o número máximo de turnos de conversa permitidos. Ao usar ferramentas, é necessário um mínimo de max_turns=2: um turno para gerar argumentos de ferramentas e um segundo para executar a ferramenta.

Consultar o agente

O método query() oferece uma maneira simplificada de interagir com o agente. Uma chamada típica é assim:

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

Esse método processa a comunicação subjacente com o agente e retorna a resposta final do agente como um dicionário. Ele é equivalente ao seguinte (na forma completa):

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
)

É possível personalizar o comportamento do agente além de input e max_turns transmitindo argumentos de palavra-chave adicionais para 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)

Consulte a ConversableAgent.run documentação para conferir uma lista completa dos parâmetros disponíveis. No entanto, lembre-se de que user_input sempre será substituído por False pelo modelo AG2Agent.

A seguir