Utilizzare un agente AG2

Oltre alle istruzioni generali per l'utilizzo di un agente, questa pagina descrive le funzionalità specifiche di AG2Agent.

Prima di iniziare

Questo tutorial presuppone che tu abbia letto e seguito le istruzioni riportate in:

Recupera un'istanza di un agente

Per eseguire una query su un AG2Agent, devi prima creare una nuova istanza o recuperare un'istanza esistente.

Per ottenere l'AG2Agent corrispondente a un ID risorsa specifico:

SDK Vertex AI per Python

Esegui questo codice:

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)

dove

Libreria delle richieste Python

Esegui questo codice:

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

Quando utilizzi l'SDK Vertex AI per Python, l'oggetto agent corrisponde a una classe AgentEngine che contiene quanto segue:

  • un agent.api_resource con informazioni sull'agente di cui è stato eseguito il deployment. Puoi anche chiamare agent.operation_schemas() per restituire l'elenco delle operazioni supportate dall'agente. Per maggiori dettagli, vedi Operazioni supportate.
  • un agent.api_client che consente interazioni di servizio sincrone
  • un agent.async_api_client che consente interazioni di servizio asincrone

Il resto di questa sezione presuppone che tu abbia un'istanza AgentEngine denominata agent.

Operazioni supportate

Per AG2Agent sono supportate le seguenti operazioni:

  • query: per ottenere una risposta a una query in modo sincrono.

Il metodo query supporta gli argomenti:

  • input: il messaggio da inviare all'agente.
  • max_turns: il numero massimo di turni di conversazione consentiti. Quando utilizzi gli strumenti, sono necessari almeno max_turns=2: un turno per generare gli argomenti dello strumento e un secondo per eseguire lo strumento.

Interrogare l'agente

Il metodo query() offre un modo semplificato per interagire con l'agente. Una chiamata tipica ha il seguente aspetto:

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

Questo metodo gestisce la comunicazione sottostante con l'agente e restituisce la risposta finale dell'agente come dizionario. È equivalente al seguente (in 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
)

Puoi personalizzare il comportamento dell'agente oltre a input e max_turns passando argomenti di parole chiave aggiuntivi 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 documentazione di ConversableAgent.run per un elenco completo dei parametri disponibili. Tuttavia, tieni presente che user_input verrà sempre sostituito da False dal modello AG2Agent.

Passaggi successivi