¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Cómo juzgar un modelo ajustado

Después de esta lección: Puedo decir si un modelo ajustado es mejor que la base.

Lección de 65 min6 comandosLaboratorio de agente de programación con IA: usa opencode para explicar y corregir código, y comprueba su trabajo

Mejor en una cosa, peor en otra

Un modelo ajustado saca mejor nota en la tarea para la que lo entrenaste. ¿Es mejor? Todavía no. Puede haber empeorado en otra cosa, o costar el doble de ejecutar.

Juzgar un modelo ajustado es compararlo con la base sobre los mismos casos, en cada área que importa.

Al final de esta lección

Nota

Puedo decir si un modelo ajustado es mejor que la base.

Palabras clave

PalabraQué significa
Mejoralos resultados ajustados menos los de la base
Margenla mejora mínima que cuenta como real
Regresiónun caso que la versión ajustada ahora falla
Áreaun tipo de caso, como el tono o el cálculo
Grabadoguardado de antes, no hecho en vivo

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Compara sobre los mismos casos

Pasa las dos versiones por un conjunto fijo de casos que ninguna vio en el entrenamiento. Cuenta los aciertos de cada una. La diferencia es la mejora.

Una mejora de un caso sobre ocho es demasiado pequeña para fiarse. Decide el margen que necesitas antes de mirar, para que el resultado no te convenza de otra cosa.

Ejemplo resuelto: ocho casos, tres áreas

ÁreaAciertos de la baseAciertos del ajustadoCambio
mensajes2 de 43 de 4+1
tono1 de 22 de 2+1
cálculo2 de 21 de 2-1
todas5 de 86 de 8+1

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una respuesta mejor puede costar más

Un modelo ajustado puede responder con más palabras o necesitar un plan mayor para ejecutarse. Calcula cuánto sube el coste como porcentaje del coste de la base.

Fija antes lo máximo que aceptarás. Una mejora pequeña que duplica la factura casi nunca compensa.

Un error frecuente

Advertencia

Mucha gente cree que una nota más alta en la tarea entrenada prueba que el modelo es mejor. Solo prueba que es mejor ahí. Revisa las otras áreas, cuenta los casos que empeoraron y mira el coste antes de decidir.

Escribe el ayudante del modelo, parte 1

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const base = process.env.AI_URL || \"http://ai:4000\";' '// Los tokens de una respuesta, o null si no trae ninguno.' 'function count(data, name) {' '  return data.usage && typeof data.usage[name] === \"number\" ? data.usage[name] : null;' '}' > model.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribe el ayudante del modelo, parte 2

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function ask(messages, sample, max) {' '  try {' '    const res = await fetch(base + \"/v1/chat/completions\", {' '      method: \"POST\",' '      headers: { \"content-type\": \"application/json\", authorization: \"Bearer lab\" },' '      body: JSON.stringify({ model: \"lab\", messages: messages, max_tokens: max || 100 }),' '      signal: AbortSignal.timeout(30000),' '    });' '    if (res.ok === false) throw new Error(\"estado \" + res.status);' '    const d = await res.json();' '    return { text: d.choices[0].message.content, inTokens: count(d, \"prompt_tokens\"), outTokens: count(d, \"completion_tokens\"), recorded: false };' '  } catch (error) {' '    console.log(\"Muestra grabada: ningún modelo respondió (\" + error.message + \").\");' '    return { text: sample, inTokens: null, outTokens: null, recorded: true };' '  }' '}' 'module.exports = { ask };' >> model.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribe la comparación, parte 1

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { ask } = require(\"./model\");' '// Grabado: 1 es acierto. Los mismos ocho casos para las dos versiones.' 'const cases = [' '  { id: \"c1\", area: \"mensajes\", base: 0, tuned: 1 }, { id: \"c2\", area: \"mensajes\", base: 0, tuned: 1 },' '  { id: \"c3\", area: \"mensajes\", base: 1, tuned: 1 }, { id: \"c4\", area: \"mensajes\", base: 1, tuned: 0 },' '  { id: \"c5\", area: \"tono\", base: 0, tuned: 1 }, { id: \"c6\", area: \"tono\", base: 1, tuned: 1 },' '  { id: \"c7\", area: \"calculo\", base: 1, tuned: 1 }, { id: \"c8\", area: \"calculo\", base: 1, tuned: 0 },' '];' > adapt5.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribe la comparación, parte 2

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function total(which) {' '  let n = 0;' '  for (const c of cases) n = n + c[which];' '  return n;' '}' 'const worse = cases.filter(function (c) { return c.base === 1 && c.tuned === 0; });' 'const change = {};' 'for (const c of cases) change[c.area] = (change[c.area] || 0) + c.tuned - c.base;' >> adapt5.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribe la comparación, parte 3

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  console.log(\"base \" + total(\"base\") + \" de 8, ajustada \" + total(\"tuned\") + \" de 8\");' '  console.log(\"empeoraron: \" + worse.map(function (c) { return c.id; }).join(\", \"));' '  console.log(\"cambio por área: \" + JSON.stringify(change));' '  const q = \"En una frase, ¿por qué hay que revisar áreas para las que no se hizo el ajuste?\";' '  const sample = \"Ajustar para una tarea puede empeorar en silencio otras, y solo una prueba sobre ellas lo muestra.\";' '  const reply = await ask([{ role: \"user\", content: q }], sample, 40);' '  console.log(\"el modelo dijo: \" + reply.text);' '}' 'main();' >> adapt5.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejecuta la comparación

Comando
docker exec -w /home/node/project agent node adapt5.js

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Lo que imprimió la comparación

Los dos conjuntos de resultados están grabados y escritos en el script. El Run cuenta cada versión, lista los casos que empeoraron y muestra el cambio en cada área.

La última línea es una llamada corta al modelo, o una Muestra grabada.

Sobre este laboratorio y su código: Laboratorio de agente de programación con IA: usa opencode para explicar y corregir código, y comprueba su trabajo

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.