Explicación del Script: generate_dataset.py
Este documento explica el funcionamiento y utilidad del archivo generate_dataset.py
que se encuentra en tu proyecto.
1. ¿Para qué se usa?
El objetivo principal de este script es generar datos sintéticos masivos para entrenar a tu
Inteligencia Artificial (LLM).
Entrenar un modelo para que sea un "Chef" requiere miles de ejemplos. Escribir 5,000 recetas a mano sería una
tarea titánica. Este script automatiza ese proceso, creando miles de combinaciones de recetas coherentes en
cuestión de segundos.
Resultado: Al ejecutarlo, crea un archivo llamado recetas_extended.jsonl con
5,000 recetas únicas listas para el entrenamiento.
2. ¿Cómo funciona? (La Lógica)
El script funciona como una "fábrica de recetas" aleatoria pero estructurada. Sigue estos pasos:
A. Bases de Datos de Ingredientes
Al principio del código, tiene listas definidas de ingredientes clasificados:
- Proteínas: pollo, ternera, merluza, tofu...
- Verduras: cebolla, pimiento, zanahoria...
- Carbohidratos: patatas, arroz, pasta...
- Extras/Salsas: limón, nata, especias...
B. El Motor de Generación (Función generar_receta)
Por cada receta que genera, hace lo siguiente:
- Selección Aleatoria: Elige al azar entre 2 y 4 ingredientes de las listas anteriores.
- Creación de la Pregunta (Instruction): Simula cómo un usuario pediría la receta.
Ejemplo: "Tengo pollo y arroz." o "¿Qué cocino con merluza y tomate?"
- Lógica de Cocina (El "Cerebro"):
- Decide un nombre para el plato (ej: "Pollo al horno").
- Elige una técnica de cocción (horno, plancha, estofado).
- Redacta los pasos: Tiene plantillas inteligentes. Si la técnica es "horno", escribe
pasos sobre precalentar y hornear. Si es "estofado", escribe sobre hacer un sofrito y cocinar lento.
- Ensamblaje: Une la introducción, los pasos y la despedida.
3. Ejemplo de lo que genera
El script produce líneas en formato JSONL como esta:
{
"instruction": "Tengo pechugas de pollo, limón y ajo.",
"output": "¡Claro! Puedes preparar unas 'Pechugas de Pollo al Limón'. Sella las pechugas en una sartén... [Pasos
generados] ... ¡Que aproveche!"
}
4. Resumen Técnico
- Librerías usadas:
random (para la aleatoriedad) y json (para
guardar el archivo).
- Volumen: Está configurado para crear 5,000 ejemplos (bucle
range(5000)).
- Utilidad: Alimentar el proceso de Fine-Tuning para que el modelo "Phi-3" aprenda
patrones de cocina variados sin que tú tengas que escribirlos uno a uno.