LangChain Messages API
Todos los tipos de mensajes
| Tipo | role | type | Atributos clave | Descripción |
|---|---|---|---|---|
| HumanMessage | user | human | content | Mensaje de usuario |
| AIMessage | assistant | ai | content, tool_calls, usage_metadata | Respuesta de IA |
| AIMessageChunk | assistant | ai | content (incremental) | Fragmentos de token de salida en streaming |
| SystemMessage | system | system | content | Instrucción del sistema |
| ToolMessage | tool | tool | content, tool_call_id, name | Resultado de la ejecución de la herramienta |
| RemoveMessage | - | remove | id | Eliminar mensaje específico |
Tipos de ContentBlock (contenido multimodal)
| Tipo | Descripción | Caso de uso |
|---|---|---|
| PlainTextContentBlock | Texto plano | Texto normal |
| ImageContentBlock | Imagen (base64 o URL) | Entrada de imagen para modelos multimodales |
| AudioContentBlock | Audio | Entrada de voz |
| VideoContentBlock | Video | Entrada de video |
| FileContentBlock | Archivo | Entrada de documento |
| ToolCall | Solicitud de llamada a herramienta | El modelo solicita invocar una herramienta |
| ServerToolCall | Llamada a herramienta del lado del servidor | Llamada a herramienta integrada/MCP |
Funciones auxiliares comunes
| Función | Descripción | Firma |
|---|---|---|
| trim_messages() | Recortar el historial de mensajes para adaptarse a la ventana de contexto | trim_messages(messages, *, max_tokens, strategy, token_counter, include_system, start_on) |
Ejemplos de uso comunes
Ejemplo
from langchain.messages import (
HumanMessage, AIMessage, SystemMessage, ToolMessage, trim_messages
)
# Crear mensaje
human = HumanMessage(content="Hola")
system = SystemMessage(content="Eres un asistente")
ai = AIMessage(content="¡Hola! ¿En qué puedo ayudarte?")
tool = ToolMessage(content="Resultado", tool_call_id="call_1", name="my_tool")
# Atajo
msg1 = ("user", "Hola") # Tupla
msg2 = {"role": "user", "content": "Hola"} # Diccionario
# Atributos del mensaje
print(human.type) # human
print(human.content) # Hola
print(ai.tool_calls) # [] o [ToolCall]
# Recortar mensajes
trimmed = trim_messages(
messages, max_tokens=1000, strategy="last",
token_counter=model, include_system=True,
)
HumanMessage, AIMessage, SystemMessage, ToolMessage, trim_messages
)
# Crear mensaje
human = HumanMessage(content="Hola")
system = SystemMessage(content="Eres un asistente")
ai = AIMessage(content="¡Hola! ¿En qué puedo ayudarte?")
tool = ToolMessage(content="Resultado", tool_call_id="call_1", name="my_tool")
# Atajo
msg1 = ("user", "Hola") # Tupla
msg2 = {"role": "user", "content": "Hola"} # Diccionario
# Atributos del mensaje
print(human.type) # human
print(human.content) # Hola
print(ai.tool_calls) # [] o [ToolCall]
# Recortar mensajes
trimmed = trim_messages(
messages, max_tokens=1000, strategy="last",
token_counter=model, include_system=True,
)