Un pulgar abajo es un caso gratis
Un bucle de comentarios convierte lo que dicen los usuarios sobre las respuestas en casos con los que pruebas cada cambio. Importa porque los usuarios encuentran las preguntas que no imaginaste. Un pulgar abajo con una corrección es uno de los mejores casos de prueba posibles.
También lleva palabras personales, así que debes decidir quién puede verlo y cuánto tiempo se guarda.
Al final de esta lección
Nota
Puedo convertir lo que dicen los usuarios sobre las respuestas en mejores casos.
Palabras clave
| Palabra | Qué significa |
|---|---|
| Comentario | una valoración o corrección que un usuario da a una respuesta |
| Corrección | la respuesta que el usuario dice que debía ser |
| Caso | una pregunta con la respuesta que esperas |
| Conservación | cuánto tiempo se guarda un registro antes de borrarlo |
| Acceso | quién puede leer un registro |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Una corrección se convierte en caso
No todo comentario es un caso. Un pulgar abajo sin corrección dice que algo va mal, pero no qué sería lo correcto. Un pulgar arriba no tiene nada que arreglar.
Guarda la pregunta y la respuesta corregida. Deja fuera a quién lo dijo. Un caso con un id de usuario o un correo es un dato personal que ahora tienes que proteger.
Ejemplo resuelto: tres comentarios
| Valoración | Corrección | ¿Es un caso? |
|---|---|---|
| abajo | A las 18:00 los domingos. | Sí: la pregunta y esa respuesta |
| abajo | (ninguna) | No: no hay nada esperado |
| arriba | (ninguna) | No: nada que arreglar |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Decide quién lo ve y cuánto tiempo
Los comentarios sin tratar son para las pocas personas que mejoran la función. Los casos que salen de ellos sirven a todo el equipo porque no contienen a nadie.
Fija una edad de conservación y borra los comentarios brutos que la pasen. En el Run la edad es un número de cada registro, así que todos ven el mismo resultado. Un sistema real compara fechas.
Un error frecuente
Advertencia
Mucha gente cree que guardar más comentarios durante más tiempo es siempre mejor. Los comentarios brutos llevan lo que escribió la gente, a veces datos personales. Guarda el caso, borra el resto según un calendario y escribe cuánto tiempo.
Escribe el ayudante del modelo, parte 1
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
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 bucle de comentarios, parte 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { ask } = require(\"./model\");' '' 'const KEEP_DAYS = 30; // un comentario más antiguo se borra' 'const feedback = [' ' { id: \"f1\", rating: \"down\", question: \"¿A qué hora cierra la tienda?\", fix: \"A las 18:00 los domingos.\", user: \"u17\", age: 3 },' ' { id: \"f2\", rating: \"up\", question: \"¿Dónde está mi pedido?\", fix: \"\", user: \"u22\", age: 5 },' ' { id: \"f3\", rating: \"down\", question: \"¿Puedo devolver unas zapatillas?\", fix: \"\", user: \"u31\", age: 12 },' ' { id: \"f4\", rating: \"down\", question: \"¿Enviáis a Canarias?\", fix: \"Sí, en 3 días.\", user: \"u40\", age: 45 },' '];' > feedback.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 bucle de comentarios, parte 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// Un caso guarda la pregunta y la respuesta esperada, nunca al usuario.' 'function toCase(f) {' ' if (f.rating === \"down\" && f.fix.length > 0) return { id: f.id, question: f.question, expected: f.fix };' ' return null;' '}' >> feedback.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 bucle de comentarios, parte 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' ' feedback.forEach(function (f) {' ' if (f.age > KEEP_DAYS) {' ' console.log(f.id + \": más antiguo que \" + KEEP_DAYS + \" días, borrado\");' ' return;' ' }' ' const c = toCase(f);' ' console.log(f.id + \": \" + (c ? \"caso nuevo: \" + c.question + \" -> \" + c.expected : \"sin caso\"));' ' });' ' const q = \"En una frase, ¿qué debe comprobar una prueba de este caso? Pregunta: ¿A qué hora cierra la tienda? Esperado: A las 18:00 los domingos.\";' ' const r = await ask([{ role: \"user\", content: q }], \"Debe comprobar que la respuesta dice las 18:00 y que menciona los domingos.\", 60);' ' console.log(\"Una comprobación posible: \" + r.text);' '}' 'main();' >> feedback.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 bucle de comentarios
docker exec -w /home/node/project agent node feedback.jsSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Una salida posible
| Línea | Qué muestra |
|---|---|
| f1: caso nuevo: ¿A qué hora cierra la tienda? -> ... | Un abajo reciente con corrección |
| f2: sin caso y f3: sin caso | Un pulgar arriba, y un abajo sin corrección |
| f4: más antiguo que 30 días, borrado | La regla de conservación aplicada |
| Una comprobación posible: ... | Tu propia llamada. Cambia en cada ejecución, o dice Muestra grabada |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.