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:

Recuperare un'istanza di un agente

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

Per ottenere l'AG2Agent che corrisponde a un ID risorsa specifico:

SDK Agent Platform

Esegui questo codice:

import agentplatform

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

agent = client.runtimes.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 Agent Platform, l'oggetto agent corrisponde a una classe AgentRuntime che contiene quanto segue:

Il resto di questa sezione presuppone che tu disponga di un'istanza AgentRuntime 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: una rotazione per generare gli argomenti dello strumento e una seconda per eseguire lo strumento.

Esegui query sull'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