What is Chat Template?

    Una estructura de formato que define cómo los mensajes conversacionales (sistema, usuario, asistente) se tokenizan y organizan como entrada para un modelo de lenguaje.

    Definition

    Un chat template es un formato de texto predefinido que estructura conversaciones de múltiples turnos en la secuencia de tokens que un modelo de lenguaje espera. Cada familia de modelos tiene su propio chat template que especifica cómo delimitar instrucciones del sistema, mensajes del usuario y respuestas del asistente usando tokens especiales y convenciones de formato. Por ejemplo, los modelos Llama usan tokens como [INST] y [/INST] para envolver los turnos del usuario, mientras que ChatML (usado por Mistral y otros) usa marcadores <|im_start|> y <|im_end|> con etiquetas de rol.

    Los chat templates son esenciales porque los modelos de lenguaje son fundamentalmente predictores del siguiente token — no tienen un concepto inherente de "roles" o "turnos". El chat template codifica esta estructura conversacional en el flujo plano de tokens que el modelo realmente procesa. Si se usa la plantilla incorrecta, el modelo no puede distinguir entre mensajes del usuario y respuestas del asistente, produciendo salidas incoherentes o con confusión de roles. Este es uno de los errores más comunes pero fácilmente evitables en el despliegue de LLM.

    Los frameworks modernos como Hugging Face Transformers almacenan los chat templates como plantillas Jinja2 en la configuración del tokenizer, habilitando el formato automático a través del método `apply_chat_template()`. Al preparar datos de fine-tuning para modelos conversacionales, el pipeline de entrenamiento debe aplicar el chat template correcto a cada ejemplo para que el modelo aprenda el formato esperado. Plantillas que no coinciden entre entrenamiento e inferencia son una fuente frecuente de rendimiento degradado en modelos ajustados.

    Why It Matters

    Usar el chat template correcto es un prerrequisito para obtener salidas coherentes de cualquier modelo conversacional. También es crítico para el fine-tuning: los datos de entrenamiento deben formatearse con la misma plantilla con la que el modelo fue preentrenado, o el modelo aprenderá un formato conflictivo que lo confundirá en tiempo de inferencia. Para equipos que trabajan con múltiples familias de modelos, entender los chat templates previene errores sutiles que se manifiestan como modelos que ignoran instrucciones, confunden roles o generan respuestas malformadas.

    How It Works

    Cuando un usuario envía una conversación a un modelo, el procesador de chat template toma la lista estructurada de mensajes — cada uno con un rol (sistema, usuario o asistente) y contenido — y los renderiza en una sola cadena con los tokens especiales apropiados. Por ejemplo, en formato ChatML, un mensaje del sistema se convierte en: <|im_start|>system\nEres un asistente útil.<|im_end|>\n. El tokenizer luego convierte esta cadena formateada en IDs de token. Durante el fine-tuning, la misma plantilla se aplica a la conversación de cada ejemplo de entrenamiento, y la pérdida típicamente se calcula solo sobre los tokens del asistente (no los del usuario o sistema) para que el modelo aprenda a generar respuestas en lugar de prompts.

    Example Use Case

    Un equipo ajusta un modelo Mistral 7B con conversaciones de soporte al cliente pero accidentalmente formatea sus datos de entrenamiento usando el chat template de Llama en lugar de ChatML. El modelo ajustado produce salidas confusas que mezclan los roles de usuario y asistente. Después de reformatear los datos de entrenamiento con la plantilla ChatML correcta y reentrenar, el modelo distingue correctamente los roles y produce respuestas coherentes y bien estructuradas. La corrección les cuesta solo unas pocas horas de reentrenamiento pero les ahorra semanas de depuración.

    Key Takeaways

    • Los chat templates codifican la estructura conversacional (roles, turnos) en la secuencia plana de tokens que los modelos esperan.
    • Cada familia de modelos tiene su propio chat template — usar el incorrecto produce salidas incoherentes.
    • Los datos de entrenamiento deben usar el mismo chat template que el formato de preentrenamiento del modelo base.
    • Los frameworks modernos almacenan las plantillas como Jinja2 en la configuración del tokenizer para formato automático.
    • El enmascaramiento de pérdida durante el fine-tuning típicamente excluye tokens que no son del asistente para enfocar el aprendizaje en la generación de respuestas.

    How Ertas Helps

    Ertas Studio aplica automáticamente el chat template correcto para cualquier modelo base que el usuario seleccione, eliminando uno de los errores más comunes de fine-tuning. Cuando los usuarios suben datos de entrenamiento JSONL con mensajes estructurados, Ertas formatea cada ejemplo según la plantilla esperada del modelo antes de la tokenización. Esto significa que los usuarios pueden trabajar con arrays de mensajes limpios y legibles y dejar que la plataforma maneje los detalles de formato específicos del modelo.

    Related Resources

    Ship AI that runs on your users' devices.

    Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.