Fine-tuning y Evaluación
Fine-tuning es como contratar a un empleado genial y luego darle un entrenamiento especializado de tu empresa. El modelo base ya sabe de todo, pero con fine-tuning aprende tu tono, tu jerga, tus formatos específicos de respuesta. Técnicamente: le das cientos o miles de pares (pregunta → respuesta ideal), OpenAI ajusta los pesos del modelo para que imite ese patrón. El resultado es un modelo que responde "como tú quieres" sin necesitar instrucciones largas en cada prompt.
La evaluación (evals) es igual de importante: si no mides, no sabes si tu sistema de IA funciona bien o está empeorando con cada cambio. El enfoque "LLM-as-judge" usa un modelo más poderoso (GPT-4o) para evaluar las respuestas de tu modelo más barato (GPT-4o-mini) —automatiza lo que harías a mano.
Las métricas clave son precisión (¿responde correctamente?), faithfulness (¿se basa en el contexto o inventa?), relevancia (¿la respuesta es útil?) y latencia (¿qué tan rápido?). Construye un suite de evals antes de cambiar cualquier cosa en producción.
// Fine-tuning con OpenAI
// 1. Preparar datos de entrenamiento (JSONL)
const datosEntrenamiento = [
{
messages: [
{ role: "system", content: "Eres un asistente de soporte de TechCorp." },
{ role: "user", content: "¿Cómo cancelo mi suscripción?" },
{ role: "assistant", content: "Para cancelar: ve a Configuración > Suscripción > Cancelar. ¿Necesitas ayuda adicional?" }
]
},
// ... más ejemplos
];
// 2. Subir datos
const archivo = await openai.files.create({
file: createReadStream("training.jsonl"),
purpose: "fine-tune",
});
// 3. Crear trabajo de fine-tuning
const trabajo = await openai.fineTuning.jobs.create({
training_file: archivo.id,
model: "gpt-4o-mini-2024-07-18",
hyperparameters: { n_epochs: 3 }
});
// 4. Usar el modelo entrenado
const respuesta = await openai.chat.completions.create({
model: trabajo.fine_tuned_model, // El modelo personalizado
messages: [{ role: "user", content: "¿Cuánto cuesta el plan pro?" }]
});
// Evaluación de LLMs (evals)
// Métricas importantes:
// - Precisión: ¿responde correctamente?
// - Latencia: ¿qué tan rápido?
// - Costo: tokens usados
// - Faithfulness: ¿se mantiene fiel al contexto?
// - Relevance: ¿la respuesta es relevante?
// Framework de evaluación simple
async function evaluar(pregunta, respuestaEsperada) {
const respuesta = await miChatbot(pregunta);
// Usar LLM para evaluar la respuesta
const evaluacion = await openai.chat.completions.create({
model: "gpt-4o",
messages: [{
role: "user",
content: `Califica esta respuesta del 1 al 5 en precisión y relevancia.
Pregunta: ${pregunta}
Respuesta esperada: ${respuestaEsperada}
Respuesta obtenida: ${respuesta}
JSON: { "precision": number, "relevancia": number, "justificacion": string }`
}],
response_format: { type: "json_object" }
});
return JSON.parse(evaluacion.choices[0].message.content);
}
Practica esta lección
Resuelve los ejercicios del curso de IA para Devs en la app, gratis y con corrección automática.
Empezar a practicar