Tipos de mensajes en LangChain
En LangChain, los mensajes son la unidad fundamental de contexto para interactuar con modelos de lenguaje. Representan las diferentes intervenciones en una conversación y cada tipo corresponde a un rol específico en el diálogo: sistema, usuario, asistente o herramienta.
LangChain proporciona tipos de mensaje estandarizados que funcionan de manera consistente con cualquier proveedor de modelos, garantizando portabilidad entre OpenAI, Anthropic, Google y otros.
SystemMessage
El SystemMessage define las instrucciones iniciales que establecen el comportamiento y personalidad del modelo. Se coloca típicamente al inicio de la conversación para configurar el contexto y las reglas de funcionamiento.
from langchain.messages import SystemMessage, HumanMessage
from langchain.chat_models import init_chat_model
system_message = SystemMessage(content="""
Eres un desarrollador Python senior con experiencia en frameworks web.
Proporciona siempre ejemplos de código y explica tu razonamiento.
Sé conciso pero completo en tus explicaciones.
""")
model = init_chat_model("gpt-5")
response = model.invoke([system_message, HumanMessage(content="¿Cómo creo una API REST?")])
print(response.content)
Los mensajes de sistema son esenciales para acotar el comportamiento del modelo, establecer restricciones o proporcionar contexto específico sobre la tarea.
HumanMessage
El HumanMessage representa las intervenciones del usuario en la conversación. Contiene las preguntas, solicitudes o información que el usuario proporciona al modelo.
from langchain.messages import HumanMessage, SystemMessage
system_msg = SystemMessage(content="Eres un tutor de matemáticas.")
human_msg = HumanMessage(content="¿Puedes explicarme qué es una derivada?")
model = init_chat_model("gpt-5")
response = model.invoke([system_msg, human_msg])
print(response.content)
AIMessage
El AIMessage representa las respuestas generadas por el modelo de IA. Corresponde al rol de asistente y es fundamental para mantener el historial de conversación en diálogos multi-turno.
from langchain.messages import AIMessage, HumanMessage, SystemMessage
# Simular una conversación previa para dar contexto
conversation = [
SystemMessage(content="Eres un asistente que traduce inglés a francés."),
HumanMessage(content="Traduce: I love programming."),
AIMessage(content="J'adore la programmation."),
HumanMessage(content="Traduce: I love building applications.")
]
model = init_chat_model("gpt-5")
response = model.invoke(conversation)
print(response.content) # J'adore créer des applications.
Los AIMessage permiten que el modelo tenga contexto sobre sus respuestas anteriores, lo cual es crucial para mantener coherencia en conversaciones largas.
ToolMessage
El ToolMessage representa los resultados de la ejecución de herramientas externas. Contiene la información devuelta por funciones o APIs que el modelo ha invocado durante su procesamiento.
from langchain.messages import ToolMessage, HumanMessage, AIMessage
# Resultado de una herramienta ejecutada
tool_result = ToolMessage(
content="La temperatura actual en Madrid es 22°C con cielo despejado",
tool_call_id="call_abc123" # ID que vincula con la llamada original
)
Los mensajes de tipo Tool se explorarán en profundidad en el módulo de herramientas del curso.
Combinando tipos de mensajes
En aplicaciones reales, es común combinar múltiples tipos de mensajes para crear conversaciones contextualizadas:
from langchain.messages import SystemMessage, HumanMessage, AIMessage
conversation = [
SystemMessage(content="Eres un asistente de programación especializado en Python."),
HumanMessage(content="¿Cómo puedo leer un archivo CSV?"),
AIMessage(content="Puedes usar pandas con pd.read_csv('archivo.csv')"),
HumanMessage(content="¿Y si quiero solo las primeras 5 filas?")
]
model = init_chat_model("gpt-5")
response = model.invoke(conversation)
print(response.content)
Contenido multimodal
Los mensajes en LangChain soportan contenido multimodal, permitiendo incluir texto, imágenes y otros tipos de datos en una misma conversación:
from langchain.messages import HumanMessage
# Mensaje con contenido multimodal (texto + imagen)
message = HumanMessage(content=[
{"type": "text", "text": "¿Qué ves en esta imagen?"},
{"type": "image_url", "image_url": {"url": "https://ejemplo.com/imagen.jpg"}}
])
Esta estructura permite aprovechar las capacidades de visión de modelos como GPT-5 o Claude Sonnet 4.5 para análisis de imágenes y documentos.
Fuentes y referencias
Documentación oficial y recursos externos para profundizar en LangChain
Documentación oficial de LangChain
Alan Sastre
Ingeniero de Software y formador, CEO en CertiDevs
Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, LangChain es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.
Más tutoriales de LangChain
Explora más contenido relacionado con LangChain y continúa aprendiendo con nuestros tutoriales gratuitos.
Aprendizajes de esta lección
Comprender los diferentes tipos de mensajes en LangChain, usar SystemMessage para configurar el comportamiento del modelo, construir conversaciones con HumanMessage y AIMessage, trabajar con ToolMessage para resultados de herramientas, y crear contenido multimodal.
Cursos que incluyen esta lección
Esta lección forma parte de los siguientes cursos estructurados con rutas de aprendizaje