Dominando la Plantilla de Chat de Mistral: Guía Completa

Dominando la Plantilla de Chat de Mistral: Guía Completa

Puntos Clave

  • Definición de Plantilla de Chat: Una plantilla de chat en Mistral define roles estructurados (como “usuario” y “asistente”) y reglas de formato que guían cómo se procesan los datos conversacionales, garantizando interacciones coherentes y conscientes del contexto en la generación de diálogos impulsada por IA.
  • Guía de Uso de la Plantilla de Chat de Mistral: Esta guía completa incluye configuración del entorno, construcción y aplicación de la plantilla de chat.
  • Eficiencia del Pipeline Automatizado: La introducción de un pipeline de chat automatizado simplifica la aplicación de las plantillas de chat, mejorando la eficiencia en la generación de respuestas adaptadas a contextos de conversación específicos.

Introducción

¿Sientes curiosidad por dominar el uso de la plantilla de chat de Mistral? ¡Sumérgete en nuestra guía completa paso a paso! Antes de profundizar en la guía de usuario, analizaremos cómo funciona una plantilla de chat para mejorar tu comprensión. Además, introduciremos un pipeline de chat automatizado para aumentar la eficiencia. Si te interesa, ¡sigue leyendo!

¿Qué es la Plantilla de Chat de Mistral?

En resumen, “Plantilla de Chat de Mistral” significa plantilla de chat para los modelos Mistral.

Serie de Modelos Mistral

La serie de modelos Mixtral forma parte de los modelos de IA generativa de código abierto de Mixtral AI, disponibles bajo la licencia Apache 2.0. Mistral AI ofrece los modelos Mixtral como código abierto, permitiendo a desarrolladores y empresas usarlos y personalizarlos para diversas aplicaciones. Específicamente, existen dos versiones de los modelos Mixtral: Mixtral 8x7B y Mixtral 8x22B.

Introducción a la Plantilla de Chat

El uso de LLMs para aplicaciones de chat es cada vez más común. A diferencia de los modelos de lenguaje tradicionales que procesan texto en una secuencia continua, los LLMs en un entorno de chat manejan un diálogo continuo compuesto por múltiples mensajes. Cada mensaje en este diálogo se caracteriza por un rol específico, como “usuario” o “asistente”, junto con el texto real del mensaje.

Similar al proceso de tokenización, varios LLMs requieren formatos de entrada distintos para las interacciones de chat. Para abordar esto, se han incorporado las plantillas de chat como una característica. Estas plantillas se integran en la funcionalidad del tokenizador, describiendo el método para transformar una lista de mensajes conversacionales en una cadena única tokenizable específica del modelo.

¿Cómo Funciona la Plantilla de Chat?

Estructura del Mensaje

Cada mensaje en una plantilla de chat se representa típicamente como un objeto o diccionario que contiene dos atributos principales:

  • Rol: Especifica el rol del hablante, como “usuario” o “asistente”.
  • Contenido: El texto real o contenido del mensaje.
{"role": "user", "content": "Hello, how are you?"}
{"role": "assistant", "content": "I'm doing great. How can I help you today?"}

Reglas de Formato

Las plantillas de chat definen cómo se concatenan o separan estos mensajes para formar una cadena de entrada coherente para el modelo. Esto podría implicar agregar espacios en blanco, puntuación o tokens especiales para indicar la estructura de la conversación.

Ejemplo:

  • Plantilla simple (BlenderBot):
" Hello, how are you?  I'm doing great. How can I help you today?   I'd like to show off how chat templating works!</s>"
  • Plantilla compleja (Mistral-7B-Instruct):
"<s>[INST] Hello, how are you? [/INST]I'm doing great. How can I help you today?</s> [INST] I'd like to show off how chat templating works! [/INST]"

En Mistral-7B-Instruct, por ejemplo, los tokens [INST] y [/INST] se utilizan para delimitar los mensajes del usuario, indicando información estructural específica que el modelo ha sido entrenado para interpretar.

Integración con el Tokenizador

Las plantillas de chat se integran en el tokenizador del modelo para garantizar que los datos de conversación formateados se conviertan en un formato tokenizado que el modelo pueda procesar de manera efectiva. Esta tokenización es crucial para que el modelo genere respuestas apropiadas basadas en el contexto proporcionado por la conversación.

¿Cómo Uso la Plantilla de Chat de Mistral?

Para usar el modelo Mistral-7B-Instruct-v0.2 con plantillas de chat para generación conversacional, puedes seguir estos pasos según la información proporcionada:

Configuración

Primero, asegúrate de tener las importaciones y la configuración necesarias para tu entorno, incluyendo la obtención de la API del modelo Mistral desde Novita AI:

from transformers import AutoModelForCausalLM, AutoTokenizer

# Assuming you have already imported OpenAI and configured the client
# from openai import OpenAI
# client = OpenAI(base_url="https://api.novita.ai/v3/openai", api_key="<YOUR Novita AI API Key>")

# Define your model and tokenizer
model_name = "mistralai/Mistral-7B-Instruct-v0.2"
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

# Set device (CPU or GPU)
device = "cuda" if torch.cuda.is_available() else "cpu"
model.to(device)

Construcción de la Plantilla de Chat

Define tu conversación como una lista de mensajes, donde cada mensaje incluye el rol (“user” o “assistant”) y el contenido del mensaje:

messages = [
    {"role": "user", "content": "What is your favourite condiment?"},
    {"role": "assistant", "content": "Well, I'm quite partial to a good squeeze of fresh lemon juice. It adds just the right amount of zesty flavour to whatever I'm cooking up in the kitchen!"},
    {"role": "user", "content": "Do you have mayonnaise recipes?"}
]

Aplicación de la Plantilla de Chat

Usa el método apply_chat_template() proporcionado por el tokenizador para formatear los mensajes según los requisitos de la plantilla de chat de Mistral:

encodeds = tokenizer.apply_chat_template(messages, return_tensors=“pt”)
model_inputs = encodeds.to(device)

Generación de Respuestas

Genera respuestas usando el modelo Mistral:

generated_ids = model.generate(model_inputs['input_ids'], max_new_tokens=1000, do_sample=True)
decoded_responses = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)
print(decoded_responses)

Explicación:

  1. Tokenización: El método apply_chat_template() convierte la lista de mensajes (messages) en un formato que el modelo Mistral espera. Maneja la adición de tokens necesarios como [INST] y [/INST] para delimitar las entradas del usuario según lo especificado.
  2. Inferencia del Modelo: model.generate() se utiliza para generar respuestas basadas en la entrada formateada. Ajusta max_new_tokens según sea necesario para controlar la longitud de las respuestas generadas. do_sample=True habilita el muestreo de la distribución del modelo, lo que puede mejorar la diversidad de las respuestas.
  3. Decodificación: tokenizer.batch_decode() decodifica los IDs de token generados en texto legible, omitiendo tokens especiales como <s> y </s>.

Notas:

  • Asegúrate de que tu entorno tenga suficientes recursos (CPU/GPU) para manejar la inferencia del modelo, especialmente con modelos más grandes como Mistral-7B.
  • Ajusta parámetros como max_new_tokens y do_sample según los requisitos específicos de tu aplicación para la longitud de respuesta y la estrategia de generación.

¿Cómo Usar un Pipeline Automático para Chat?

Además de usar plantillas de chat, por ejemplo, la plantilla de chat de Mistral, el pipeline de generación de texto automatizado proporcionado por Hugging Face Transformers simplifica la integración de modelos de IA conversacional. Usar el “TextGenerationPipeline”, que ahora incluye funcionalidades manejadas anteriormente por el obsoleto “ConversationalPipeline”, facilita la generación de respuestas basadas en mensajes de chat estructurados.

Puntos Clave

  1. Integración del Pipeline: El “TextGenerationPipeline” admite entradas de chat, manejando la tokenización y la aplicación de la plantilla de chat sin problemas.
  2. Funcionalidad Obsoleta: La clase anterior “ConversationalPipeline” ha quedado obsoleta en favor del enfoque unificado con el “TextGenerationPipeline”.
  3. Ejemplo con Modelo Mistral: Demuestra el uso del pipeline con el modelo Mistral-7B-Instruct-v0.2. Los mensajes se estructuran con roles (“system” o “user”) y contenido, formateados según la plantilla de chat de Mistral.
  4. Simplificación del Uso: Inicializar el pipeline y pasarle una lista de mensajes estructurados automatiza la tokenización y la aplicación de la plantilla.
  5. Ejemplo de Salida: La respuesta del asistente se genera basada en el mensaje de entrada, manteniendo el contexto y estilo especificados por el modelo Mistral.

Ejemplo de Código

from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer

# Initialize the text generation pipeline with the Mistral model
model_name = "mistralai/Mistral-7B-Instruct-v0.2"
pipe = pipeline("text-generation", model=model_name)
# Define chat messages with roles and content
messages = [
    {"role": "system", "content": "You are a friendly chatbot."},
    {"role": "user", "content": "Explain the concept of artificial intelligence."},
]
# Generate response using the pipeline
response = pipe(messages, max_new_tokens=128)[0]['generated_text']
# Print the assistant's response
print(response)

En este ejemplo de código:

  • Inicialización: El pipeline se inicializa con el modelo Mistral-7B-Instruct-v0.2 usando pipeline("text-generation", model="mistralai/Mistral-7B-Instruct-v0.2").
  • Formato de Mensaje: Los mensajes se estructuran con roles (“system” o “user”) y contenido, cumpliendo con el formato de la plantilla de chat de Mistral.
  • Generación de Respuesta: El pipeline maneja la tokenización y aplica la plantilla de chat automáticamente. La respuesta generada refleja el contexto de entrada y el estilo especificados por el modelo Mistral.

Este enfoque aprovecha las capacidades de Hugging Face Transformers para simplificar la implementación de modelos de IA conversacional, garantizando una integración eficiente y efectiva en aplicaciones basadas en chat.

Aplicaciones Reales de la Plantilla de Chat

Chatbots de Atención al Cliente:

  • Escenario: Un cliente interactúa con un chatbot para solución de problemas o asistencia.
  • Plantilla de Chat: La plantilla estructura la conversación con roles como “usuario” (cliente) y “asistente” (chatbot), asegurando que el chatbot comprenda las consultas del usuario y proporcione respuestas adecuadas.
  • Beneficios: Mejora la eficiencia en la resolución de problemas del cliente al mantener el contexto a través de múltiples interacciones.

Chatbots Educativos:

  • Escenario: Los estudiantes interactúan con chatbots para hacer preguntas, buscar explicaciones o recibir tutoría.
  • Plantilla de Chat: Roles estructurados como “estudiante” y “tutor” guían cómo se presenta y discute el contenido educativo.
  • Beneficios: Facilita experiencias de aprendizaje personalizadas al adaptar la entrega de contenido según las consultas del estudiante y los objetivos de aprendizaje.

Consulta de Salud:

  • Escenario: Los pacientes interactúan con asistentes virtuales de salud para consejos médicos, verificación de síntomas o programación de citas.
  • Plantilla de Chat: Define cómo se estructuran las entradas del paciente (síntomas, inquietudes) y las respuestas/asesoramiento de salud.
  • Beneficios: Garantiza una comunicación precisa de la información médica, cumplimiento de las regulaciones de privacidad y continuidad de la atención.

Simulaciones de Entrevistas de Trabajo:

  • Escenario: Los candidatos participan en entrevistas virtuales realizadas por entrevistadores impulsados por IA.
  • Plantilla de Chat: Estructura el diálogo de la entrevista con roles como “entrevistador” y “candidato”, guiando el flujo de preguntas y respuestas.
  • Beneficios: Proporciona práctica realista de entrevistas, retroalimentación sobre habilidades de comunicación y preparación para entrevistas de trabajo reales.

Conclusión

En conclusión, dominar el uso de la plantilla de chat de Mistral implica comprender su enfoque estructurado para procesar datos conversacionales. Hemos explorado cómo funcionan las plantillas de chat, particularmente en el contexto de modelos Mistral como Mistral-7B-Instruct-v0.2. Al analizar estos componentes, hemos destacado la integración perfecta de las plantillas de chat con el tokenizador y el modelo de Mistral, garantizando una generación de diálogo coherente y consciente del contexto. Además, introdujimos un pipeline de chat automatizado que simplifica aún más el proceso, reemplazando métodos obsoletos con un enfoque unificado a través del TextGenerationPipeline.

Con estos conocimientos y herramientas, los desarrolladores y las empresas pueden aprovechar eficazmente el poder de Mistral para diversas aplicaciones en sistemas conversacionales impulsados por IA.

Novita AI es la plataforma integral en la nube que impulsa tus ambiciones de IA. Con APIs perfectamente integradas, computación serverless y aceleración GPU, proporcionamos las herramientas rentables que necesitas para construir y escalar rápidamente tu negocio impulsado por IA. Elimina los dolores de cabeza de la infraestructura y comienza gratis — Novita AI hace realidad tus sueños de IA.

Lectura Recomendada

Presentando el Modelo Mixtral 8x7B de Mistral: Todo lo que Necesitas Saber

Presentando Mixtral-8x22B: El Último y Más Grande Modelo de Lenguaje Mezcla de Expertos