Además de las instrucciones generales para usar un agente, en esta página se describen las funciones específicas de LangchainAgent
.
Antes de comenzar
En este instructivo, se supone que leíste y seguiste las instrucciones de los siguientes documentos:
- Desarrolla un agente de LangChain: Para desarrollar
agent
como una instancia deLangchainAgent
. - Autenticación del usuario para autenticar como usuario y consultar al agente
Operaciones admitidas
Las siguientes operaciones son compatibles con 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
: Son los mensajes que se enviarán al agente.config
: Es la configuración (si corresponde) para el contexto de la consulta.
Cómo consultar al agente
El comando anterior realiza lo siguiente:
agent.query(input="What is the exchange rate from US dollars to Swedish currency?")
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 diferentes tipos de mensajes cuando responde. Cuando se omite role
en la entrada, el valor predeterminado es "user"
.
Rol | Descripción |
---|---|
system |
Se usa para indicarle al modelo de chat cómo comportarse y proporcionar contexto adicional. No todos los proveedores de modelos de chat son compatibles con esta función. |
user |
Representa la entrada de un usuario que interactúa con el modelo, por lo general, en forma de texto o alguna otra entrada interactiva. |
assistant |
Representa una respuesta del modelo, que puede incluir texto o una solicitud para invocar herramientas. |
tool |
Es un mensaje que se usa para pasar los resultados de una invocación de herramienta al modelo después de que se recuperaron datos o procesamientos externos. |
El type
del mensaje también determinará cómo se interpretará el resto del mensaje (consulta Cómo controlar el contenido multimodal).
Cómo consultar al agente con contenido multimodal
Usaremos el siguiente agente (que reenvía la entrada al modelo y no usa ninguna herramienta) para ilustrar cómo pasar entradas multimodales a un agente:
agent = agent_engines.LangchainAgent(
model="gemini-1.5-pro-preview-0409",
runnable_builder=lambda model, **kwargs: model,
)
Los mensajes multimodales se representan a través de bloques de contenido que especifican un type
y los datos correspondientes. En general, para el contenido multimodal, debes 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"},
]})
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"},
]})
Para obtener la lista de los tipos de MIME que admite Gemini, consulta la documentación sobre lo siguiente:
Cómo 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
). Estos son dos casos comunes:
- Parámetros de configuración predeterminados:
run_id
/run_name
: Es el identificador de la ejecución.tags
/metadata
: Es el clasificador de la ejecución cuando se realiza el seguimiento con OpenTelemetry.
- Parámetros de configuración personalizados (a través de
configurable
):session_id
: Es la sesión en la que se realiza la ejecución (consulta Almacena el historial de chat).thread_id
: Es el subproceso en el que se realiza la ejecución (consulta Almacena puntos de control).
Observa el siguiente 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)