Tipos de mensajes en LangChain
En LangChain, los mensajes son objetos estructurados que representan las diferentes intervenciones en una conversación con un modelo de lenguaje. Cada tipo de mensaje corresponde a un rol específico en el diálogo y permite al framework organizar correctamente el contexto de la conversación.
SystemMessage
El SystemMessage representa las instrucciones del sistema que definen el comportamiento y personalidad del modelo. Este tipo de mensaje corresponde al rol de sistema y típicamente se coloca al inicio de la conversación para establecer el contexto y las reglas de funcionamiento.
from langchain_core.messages import SystemMessage
from langchain_openai import ChatOpenAI
# Crear un mensaje de sistema
system_message = SystemMessage(content="Eres un asistente especializado en programación Python. Responde de forma concisa y técnica.")
# Usar el mensaje con un modelo
model = ChatOpenAI(model="gpt-4")
response = model.invoke([system_message])
print(response.content)
Los mensajes de sistema son especialmente útiles para definir el comportamiento del modelo, establecer restricciones o proporcionar contexto específico sobre la tarea que debe realizar.
HumanMessage
El HumanMessage representa las intervenciones del usuario humano en la conversación. Corresponde al rol de usuario y contiene las preguntas, solicitudes o información que el usuario proporciona al modelo.
from langchain_core.messages import HumanMessage, SystemMessage
# Crear mensajes de sistema y usuario
system_msg = SystemMessage(content="Eres un tutor de matemáticas.")
human_msg = HumanMessage(content="¿Puedes explicarme qué es una derivada?")
# Enviar ambos mensajes al modelo
model = ChatOpenAI(model="gpt-4")
response = model.invoke([system_msg, human_msg])
print(response.content)
Los HumanMessage pueden contener cualquier tipo de consulta o información que el usuario desee comunicar al modelo, desde preguntas simples hasta solicitudes complejas con contexto específico.
Siempre es importante tener un System message para acotar y limitar el comportamiento del modelo ante las preguntas del usuario Human messages:
AIMessage
El AIMessage representa las respuestas generadas por el modelo de inteligencia artificial. Corresponde al rol de asistente y contiene el contenido que el modelo ha generado como respuesta a los mensajes anteriores.
from langchain_core.messages import AIMessage, HumanMessage
# Simular una conversación previa
previous_messages = [
HumanMessage(content="¿Cuál es la capital de Francia?"),
AIMessage(content="La capital de Francia es París."),
HumanMessage(content="¿Y cuál es su población aproximada?")
]
# Continuar la conversación
model = ChatOpenAI(model="gpt-4")
response = model.invoke(previous_messages)
print(response.content)
Los AIMessage son fundamentales para mantener el historial de conversación y permitir que el modelo tenga contexto sobre sus respuestas anteriores en diálogos multi-turno.
AIMessageChunk
El AIMessageChunk es una variante especializada del AIMessage que se utiliza específicamente para respuestas en streaming. Representa fragmentos parciales de la respuesta del modelo que se van recibiendo de forma incremental.
from langchain_core.messages import AIMessageChunk
# Ejemplo de cómo se vería un chunk (normalmente generado internamente)
chunk = AIMessageChunk(content="Hola, ")
print(f"Contenido del chunk: {chunk.content}")
print(f"Tipo de mensaje: {type(chunk).__name__}")
Aunque los AIMessageChunk se utilizan principalmente en el contexto de streaming, es importante entender que representan porciones de una respuesta más amplia que se está generando de forma progresiva.
ToolMessage
Guarda tu progreso
Inicia sesión para no perder tu progreso y accede a miles de tutoriales, ejercicios prácticos y nuestro asistente de IA.
Más de 25.000 desarrolladores ya confían en CertiDevs
El ToolMessage representa los resultados de la ejecución de herramientas externas. Corresponde al rol de herramienta y contiene la información devuelta por funciones o APIs que el modelo ha invocado durante su procesamiento.
from langchain_core.messages import ToolMessage, HumanMessage
# Simular el resultado de una herramienta
tool_result = ToolMessage(
content="La temperatura actual en Madrid es 22°C",
tool_call_id="call_123" # ID que vincula con la llamada original
)
# Usar el resultado en una conversación
messages = [
HumanMessage(content="¿Qué tiempo hace en Madrid?"),
tool_result
]
model = ChatOpenAI(model="gpt-4")
response = model.invoke(messages)
print(response.content)
Los ToolMessage son esenciales para integrar funcionalidades externas y permitir que el modelo acceda a información en tiempo real o ejecute acciones específicas.
Los mensajes de tipo Tool los exploraremos en el módulo de herramientas.
Combinando diferentes tipos de mensajes
En aplicaciones reales, es común combinar múltiples tipos de mensajes para crear conversaciones ricas y contextualizadas:
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage
# Crear una conversación completa
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 la librería pandas con pd.read_csv('archivo.csv')"),
HumanMessage(content="¿Y si quiero solo las primeras 5 filas?")
]
model = ChatOpenAI(model="gpt-4")
response = model.invoke(conversation)
print(response.content)
Esta estructura permite mantener contexto conversacional completo, donde cada tipo de mensaje cumple su función específica en el flujo de la interacción.
Aprendizajes de esta lección
- Comprender qué son los mensajes en LangChain y su función en las conversaciones.
- Identificar y diferenciar los tipos de mensajes: SystemMessage, HumanMessage, AIMessage, AIMessageChunk y ToolMessage.
- Aprender a crear y utilizar cada tipo de mensaje en interacciones con modelos de lenguaje.
- Entender cómo combinar distintos tipos de mensajes para mantener el contexto en diálogos multi-turno.
- Reconocer la importancia de los mensajes para integrar herramientas externas y gestionar respuestas en streaming.
Completa LangChain y certifícate
Únete a nuestra plataforma y accede a miles de tutoriales, ejercicios prácticos, proyectos reales y nuestro asistente de IA personalizado para acelerar tu aprendizaje.
Asistente IA
Resuelve dudas al instante
Ejercicios
Practica con proyectos reales
Certificados
Valida tus conocimientos
Más de 25.000 desarrolladores ya se han certificado con CertiDevs