Utilizzare un agente LangChain

Oltre alle istruzioni generali per l'utilizzo di un agente, in questa pagina sono descritte le funzionalità specifiche di LangchainAgent.

Prima di iniziare

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

Operazioni supportate

Per LangchainAgent sono supportate le seguenti operazioni:

  • query: per ricevere una risposta a una query in modo sincrono.
  • stream_query: per la visualizzazione progressiva di una risposta a una query.

Entrambi i metodi query e stream_query supportano lo stesso tipo di argomenti:

  • input: i messaggi da inviare all'agente.
  • config: la configurazione (se applicabile) per il contesto della query.

Esegui una query sull'agente

Il comando:

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

è equivalente al seguente (in forma completa):

agent.query(input={
    "input": [ # The input is represented as a list of messages (each message as a dict)
        {
            # The role (e.g. "system", "user", "assistant", "tool")
            "role": "user",
            # The type (e.g. "text", "tool_use", "image_url", "media")
            "type": "text",
            # The rest of the message (this varies based on the type)
            "text": "What is the exchange rate from US dollars to Swedish currency?",
        },
    ]
})

I ruoli vengono utilizzati per aiutare il modello a distinguere tra diversi tipi di messaggi quando risponde. Se role viene omesso nell'input, il valore predefinito è "user".

Ruolo Descrizione
system Viene utilizzato per indicare al modello di chat come comportarsi e fornire ulteriore contesto. Non supportato da tutti i fornitori di modelli di chat.
user Rappresenta l'input di un utente che interagisce con il modello, in genere sotto forma di testo o altro input interattivo.
assistant Rappresenta una risposta del modello, che può includere testo o una richiesta di chiamata di strumenti.
tool Un messaggio utilizzato per ritrasmettere al modello i risultati di un'invocazione dello strumento dopo il recupero di dati o l'elaborazione esterni.

Il type del messaggio determinerà anche la modalità di interpretazione del resto del messaggio (vedi Gestire i contenuti multimodali).

Esegui query sull'agente con contenuti multimodali

Utilizzeremo il seguente agente (che inoltra l'input al modello e non utilizza strumenti) per illustrare come passare input multimodali a un agente:

agent = agent_engines.LangchainAgent(
    model="gemini-1.5-pro-preview-0409",
    runnable_builder=lambda model, **kwargs: model,
)

I messaggi multimodali sono rappresentati tramite blocchi di contenuti che specificano un type e i dati corrispondenti. In generale, per i contenuti multimodali, devi specificare type come "media", file_uri come un URI Cloud Storage e mime_type per l'interpretazione del file.

Immagine

agent.query(input={"input": [
    {"type": "text", "text": "Describe the attached media in 5 words!"},
    {"type": "media", "mime_type": "image/jpeg", "file_uri": "gs://cloud-samples-data/generative-ai/image/cricket.jpeg"},
]})

Video

agent.query(input={"input": [
    {"type": "text", "text": "Describe the attached media in 5 words!"},
    {"type": "media", "mime_type": "video/mp4", "file_uri": "gs://cloud-samples-data/generative-ai/video/pixel8.mp4"},
]})

Audio

agent.query(input={"input": [
    {"type": "text", "text": "Describe the attached media in 5 words!"},
    {"type": "media", "mime_type": "audio/mp3", "file_uri": "gs://cloud-samples-data/generative-ai/audio/pixel.mp3"},
]})

Per l'elenco dei tipi MIME supportati da Gemini, consulta la documentazione su:

Esegui una query sull'agente con una configurazione eseguibile

Quando esegui una query sull'agente, puoi anche specificare un config per l'agente (che segue lo schema di un RunnableConfig). Ecco due scenari comuni:

  • Parametri di configurazione predefiniti:
  • Parametri di configurazione personalizzati (tramite configurable):

Ad esempio:

import uuid

run_id = uuid.uuid4()  # Generate an ID for tracking the run later.

response = agent.query(
    input="What is the exchange rate from US dollars to Swedish currency?",
    config={  # Specify the RunnableConfig here.
        "run_id": run_id                               # Optional.
        "tags": ["config-tag"],                        # Optional.
        "metadata": {"config-key": "config-value"},    # Optional.
        "configurable": {"session_id": "SESSION_ID"}   # Optional.
    },
)

print(response)

Passaggi successivi