Buckets:
| # Plantillas de chat | |
| ## Introducción | |
| Las plantillas de chat son esenciales para estructurar las interacciones entre los modelos de lenguaje y los usuarios. Tanto si estás construyendo un chatbot sencillo como un agente de IA complejo, entender cómo dar formato correctamente a tus conversaciones es crucial para obtener los mejores resultados de tu modelo. | |
| > [!TIP] | |
| > Las plantillas de chat son cruciales para: | |
| > - Mantener una estructura de conversación coherente | |
| > - Garantizar una identificación correcta de los roles | |
| > - Gestionar el contexto a lo largo de varios turnos | |
| > - Dar soporte a funciones avanzadas, como el uso de herramientas | |
| ## Tipos de modelos y plantillas | |
| ### Modelos base frente a modelos instruct | |
| Un modelo base se entrena con datos de texto sin procesar para predecir el siguiente token, mientras que un modelo instruct se ajusta específicamente para seguir instrucciones y participar en conversaciones. | |
| Los modelos ajustados para instrucciones se entrenan para seguir una estructura conversacional específica, lo que los hace más adecuados para aplicaciones de chatbot. Además, los modelos instruct pueden manejar interacciones complejas, incluido el uso de herramientas, entradas multimodales y llamadas a funciones. | |
| Para hacer que un modelo base se comporte como un modelo instruct, necesitamos dar formato a nuestros prompts de una forma coherente que el modelo pueda entender. Ahí es donde entran las plantillas de chat. | |
| ### Formatos de plantilla comunes | |
| Usaremos la siguiente estructura de conversación para todos los ejemplos: | |
| ```python | |
| messages = [ | |
| {"role": "system", "content": "You are a helpful assistant."}, | |
| {"role": "user", "content": "Hello!"}, | |
| {"role": "assistant", "content": "Hi! How can I help you today?"}, | |
| {"role": "user", "content": "What's the weather?"}, | |
| ] | |
| ``` | |
| Esta es la plantilla ChatML usada en modelos como SmolLM2 y Qwen 2: | |
| ```sh | |
| system | |
| You are a helpful assistant. | |
| user | |
| Hello! | |
| assistant | |
| Hi! How can I help you today? | |
| user | |
| What's the weather?assistant | |
| ``` | |
| Este es el formato de plantilla `mistral`: | |
| ```sh | |
| [INST] You are a helpful assistant. [/INST] | |
| Hi! How can I help you today? | |
| [INST] Hello! [/INST] | |
| ``` | |
| ```python | |
| from transformers import AutoTokenizer | |
| mistral_tokenizer = AutoTokenizer.from_pretrained("mistralai/Mistral-7B-Instruct-v0.1") | |
| qwen_tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen-7B-Chat") | |
| smol_tokenizer = AutoTokenizer.from_pretrained("HuggingFaceTB/SmolLM2-135M-Instruct") | |
| ``` | |
| ### Funciones avanzadas | |
| Las plantillas de chat pueden manejar escenarios más complejos que una simple interacción conversacional, incluidos: | |
| 1. **Uso de herramientas** | |
| 2. **Entradas multimodales** | |
| 3. **Llamadas a funciones** | |
| 4. **Contexto de varios turnos** | |
| ## Mejores prácticas | |
| 1. **Formato coherente** | |
| 2. **Definición clara de roles** | |
| 3. **Gestión del contexto** | |
| 4. **Manejo de errores** | |
| 5. **Validación** | |
| ## Ejercicio práctico | |
| ```python | |
| from datasets import load_dataset | |
| dataset = load_dataset("HuggingFaceTB/smoltalk") | |
| def convert_to_chatml(example): | |
| return { | |
| "messages": [ | |
| {"role": "user", "content": example["input"]}, | |
| {"role": "assistant", "content": example["output"]}, | |
| ] | |
| } | |
| ``` | |
| ## Recursos adicionales | |
| - [Guía de Hugging Face sobre plantillas de chat](https://huggingface.co/docs/transformers/main/en/chat_templating) | |
| - [Documentación de Transformers](https://huggingface.co/docs/transformers) | |
| - [Repositorio de ejemplos de plantillas de chat](https://github.com/chujiezheng/chat_templates) | |
Xet Storage Details
- Size:
- 3.56 kB
- Xet hash:
- ac8a5cda0756a132e88f0db2dd3e3c2cc390b4fe6bdaa8b33b7d7203fb80987e
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.