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:
- Sviluppare un agente LangChain: per sviluppare
agent
come istanza diLangchainAgent
. - Autenticazione utente per autenticarti come utente per eseguire query sull'agente.
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:
run_id
/run_name
: identificatore dell'esecuzione.tags
/metadata
: classificatore per l'esecuzione durante il monitoraggio con OpenTelemetry.
- Parametri di configurazione personalizzati (tramite
configurable
):session_id
: la sessione in cui viene eseguita l'esecuzione (vedi Cronologia chat del negozio).thread_id
: il thread in cui viene eseguita l'esecuzione (vedi Eseguire i checkpoint).
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)