Además de las instrucciones generales para usar un agente, en esta página se describen las funciones específicas de LangchainAgent
.
Antes de empezar
En este tutorial se da por hecho que has leído y seguido las instrucciones de los siguientes artículos:
- Desarrollar un agente de LangChain: para desarrollar
agent
como instancia deLangchainAgent
. - Autenticación de usuario: para autenticarte como usuario y consultar al agente.
Operaciones admitidas
Se admiten las siguientes operaciones para LangchainAgent
:
query
: para obtener una respuesta a una consulta de forma síncrona.stream_query
: para transmitir una respuesta a una consulta.
Los métodos query
y stream_query
admiten el mismo tipo de argumentos:
input
: los mensajes que se enviarán al agente.config
: la configuración (si procede) del contexto de la consulta.
Consultar el agente
El comando:
agent.query(input="What is the exchange rate from US dollars to SEK today?")
es equivalente a lo siguiente (en formato completo):
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?",
},
]
})
Los roles se usan para ayudar al modelo a distinguir entre los diferentes tipos de mensajes
al responder. Si se omite role
en la entrada, el valor predeterminado es "user"
.
Rol | Descripción |
---|---|
system |
Se usa para indicar al modelo de chat cómo debe comportarse y proporcionar contexto adicional. No todos los proveedores de modelos de chat admiten esta función. |
user |
Representa la entrada de un usuario que interactúa con el modelo, normalmente en forma de texto u otra entrada interactiva. |
assistant |
Representa una respuesta del modelo, que puede incluir texto o una solicitud para invocar herramientas. |
tool |
Mensaje que se usa para devolver los resultados de una invocación de herramienta al modelo después de que se hayan obtenido datos o se haya realizado un procesamiento externos. |
El type
del mensaje también determinará cómo se interpreta el resto del mensaje (consulta Gestionar contenido multimodal).
Consultar al agente con contenido multimodal
Usaremos el siguiente agente (que reenvía la entrada al modelo y no usa ninguna herramienta) para mostrar cómo enviar entradas multimodales a un agente:
agent = agent_engines.LangchainAgent(
model="gemini-2.0-flash",
runnable_builder=lambda model, **kwargs: model,
)
Los mensajes multimodales se representan mediante bloques de contenido que especifican un type
y los datos correspondientes. En general, para el contenido multimodal, se debe especificar que type
sea "media"
, que file_uri
apunte a un URI de Cloud Storage y que mime_type
interprete el archivo.
Imagen
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"},
]})
Vídeo
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"},
]})
Para ver la lista de tipos MIME admitidos por Gemini, consulta la documentación sobre:
Consultar el agente con una configuración ejecutable
Cuando consultas al agente, también puedes especificar un config
para el agente (que sigue el esquema de un RunnableConfig
).
Dos situaciones habituales son las siguientes:
- Parámetros de configuración predeterminados:
run_id
/run_name
: identificador de la ejecución.tags
/metadata
: clasificador de la ejecución cuando se rastrea con OpenTelemetry.
- Parámetros de configuración personalizados (mediante
configurable
):session_id
: la sesión en la que se está produciendo la ejecución (consulta Almacenar historial de chat).thread_id
: la conversación en la que se está produciendo la ejecución (consulta Almacenar puntos de control).
Por ejemplo:
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)