¿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

Pesos abiertos y licencias de modelos

Después de esta lección: Puedo leer la licencia de un modelo y decir qué me permite hacer.

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

Pesos abiertos no significa uso libre

Pesos abiertos quiere decir que los archivos con los números de un modelo se pueden descargar. No quiere decir que puedas hacer con ellos lo que quieras. Una licencia fija las condiciones.

Importa porque una empresa que construye sobre un modelo que no puede usar con fines comerciales puede recibir la orden de parar. Leer las condiciones antes cuesta diez minutos.

Al final de esta lección

Nota

Puedo leer la licencia de un modelo y decir qué me permite hacer.

Palabras clave

PalabraQué significa
Pesoslos números aprendidos de un modelo
Licencialas condiciones para usar algo
Cláusulauna regla dentro de una licencia
Atribucióndecir quién lo hizo
Límite de usoun tope, como un número de usuarios

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

Una licencia dice lo que puedes hacer

Los pesos de un modelo tienen una licencia, y el código que los ejecuta puede tener otra. Lee las dos.

Cada regla es una cláusula. Las cláusulas habituales preguntan cinco cosas. ¿Se permite el uso comercial? ¿Hay un límite de uso? ¿Qué fines están prohibidos? ¿Puedes cambiar el modelo y debes compartir los cambios? ¿Hay que dar atribución?

Cláusulas que revisar, en palabras claras

CláusulaPregunta que hacer
Comercial¿Puedo ganar dinero con él?
Límite de uso¿Hay un tope, como un número de usuarios?
Usos prohibidos¿Mi fin está en la lista?
Cambios¿Puedo cambiarlo y debo compartir el cambio?
Atribución¿Debo mostrar quién lo hizo?

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

Prueba un uso contra cada cláusula

Anota tu uso: si es comercial, cuántos usuarios tendrá, con qué fin, si cambiarás el modelo y si compartirás los cambios. Luego pruébalo contra cada cláusula, una por una.

Una cláusula que falla basta para decir no permitido. Si todas pasan pero hace falta atribución, el uso está permitido con condiciones.

Un error frecuente

Advertencia

Mucha gente cree que un modelo en una web pública es libre para cualquier uso. Que sea fácil de descargar no dice nada de las condiciones. Lee las cláusulas para tu propio uso antes de construir sobre él. Esta lección es práctica, no asesoramiento jurídico.

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 el comprobador de licencias, parte 1

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { ask } = require(\"./model\");' 'const licences = [' '  { name: \"Abierta A\", commercial: true, maxUsers: 1000, banned: [\"armas\"], attribution: true, modify: true, share: false },' '  { name: \"Abierta B\", commercial: false, maxUsers: Infinity, banned: [], attribution: false, modify: true, share: true },' '];' 'const use = { commercial: true, users: 500, purpose: \"tutoría\", modifies: true, shares: false };' 'function problems(l, u) {' '  const found = [];' '  if (u.commercial && l.commercial === false) found.push(\"uso comercial no permitido\");' '  if (u.users > l.maxUsers) found.push(\"supera el límite de usuarios\");' > licence.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 comprobador de licencias, parte 2

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  if (l.banned.includes(u.purpose)) found.push(\"uso prohibido: \" + u.purpose);' '  if (u.modifies && l.modify === false) found.push(\"cambios no permitidos\");' '  if (u.modifies && l.share && u.shares === false) found.push(\"los cambios deben compartirse\");' '  return found;' '}' >> licence.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 comprobador de licencias, parte 3

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function verdict(l, u) {' '  const found = problems(l, u);' '  if (found.length > 0) return \"no permitido\";' '  return l.attribution ? \"permitido con condiciones\" : \"permitido\";' '}' >> licence.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 comprobador de licencias, parte 4

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  console.log(\"uso: comercial, 500 usuarios, tutoría, con cambios, cambios en privado\");' '  for (const l of licences) console.log(l.name + \": \" + verdict(l, use) + \" | \" + problems(l, use).join(\"; \"));' '  const q = \"En una frase corta, ¿por qué conviene leer la licencia de un modelo antes de usar sus pesos?\";' '  const sample = \"La licencia dice qué puedes hacer con los pesos, y incumplir sus condiciones puede quitarte el derecho a usarlos.\";' '  const reply = await ask([{ role: \"user\", content: q }], sample, 60);' '  console.log(\"el modelo dijo: \" + reply.text);' '}' 'main();' >> licence.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 el comprobador de licencias

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

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

Las licencias de aquí son inventadas

Abierta A y Abierta B son inventadas para practicar. No son licencias reales y no dicen nada de ningún modelo real.

El comprobador solo hace lo que le dices. Una licencia real exige una lectura cuidadosa, y una duda real exige a alguien con la formación necesaria.

Qué imprime el Run

LíneaQué muestra
Abierta A: permitido con condiciones | Todas las cláusulas pasan, pero hace falta atribución
Abierta B: no permitido | uso comercial no permitido; los cambios deben compartirseFallan dos cláusulas
el modelo dijo: ...Una frase. Las palabras cambian en cada ejecución

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

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.