Modo simple
Entrenar contestando preguntas. Cada respuesta acaba en un fichero que puedes abrir —el panel dice cuál—, y las doce pestañas de siempre siguen donde estaban. El hub solo hace falta a partir del paso de elegir máquina.
Puedes contestar pulsando arriba o escribiendo aquí: «quiero un modelo que entienda a mis clientes del taller, para precios, citas y estado de la moto» contesta tres preguntas de una vez.
| # | Texto | Categoría | Estado | Origen | Modelo |
|---|
Esta máquina
«¿Cuán pequeño puede ser esto?» tiene dos mitades. La de la tarea la contesta Comparar. Esta es la otra: qué tamaños puede entrenar tu máquina, cuenta hecha con lo que el propio modelo dice que va a ocupar.
| Tamaño | Parámetros | Ocuparía | ¿Cabe? | Para qué es |
|---|
Otras máquinas
El reparto del proyecto es «en el VPS la interfaz, en tu PC el entrenamiento». Esta es la lista de PCs emparejadas y a cuál mandarle el trabajo. Cada una marca hacia fuera: nadie abre un puerto en su router.
Máquinas esperando permiso
Se instaló NanoFactory en estas PC y marcaron hacia aquí. Hasta que las apruebes no pueden coger trabajo ni publicar nada. Ponles el nombre por el que las vas a reconocer.
| Máquina | Qué tiene | Qué le cabe | Ahora | Estado |
|---|
Las filas viajan dentro del trabajo, nunca la ruta. Si el trabajo nombrara un fichero, este servidor le estaría diciendo a tu PC qué leer de su disco — y un hub tomado sería una lectura arbitraria de ficheros en tu máquina.
| Modelo | Tarea | Parámetros | Resultado |
|---|
Inventario
La tabla de arriba es lo que hay ahora mismo en disco. Esto es lo que ha habido: un modelo que borraste sigue aquí, con lo que acertaba y de quién venía. La identidad es el contenido, no la ruta — mover una carpeta no crea un modelo nuevo.
| Modelo | Tarea | Acierto | En reales | Exportado | Desplegado |
|---|
Dónde está puesto cada modelo se declara, no se detecta: este proyecto no puede saber solo que un binario acabó en el mostrador de un cliente. Anotarlo a mano es peor que detectarlo, y muchísimo mejor que no saberlo — es la diferencia entre «¿qué versión tiene Don Mario?» y encogerse de hombros.
0 · El generador por IA — opcional
Sin esto todo funciona igual: las propuestas salen de plantillas, sin red. Con esto salen de un modelo. El token se pega aquí y va al llavero del sistema operativo — no al proyecto, ni al repositorio, ni a la copia de seguridad. No hay ninguna ruta que lo devuelva, ni siquiera enmascarado.
1 · La carta del cliente, primero
Pedirle a una IA «invéntame un dataset de pizzería» produce
productos que el cliente no vende. El modelo aprende pizza margarita,
la carta dice pizza americana, y las métricas salen altas porque
el test está hecho de la misma ficción. Por eso el vocabulario sale de sus
documentos antes que nada.
Separadas por comas, y se pueden mezclar: el caso normal es que la carta esté en su web y los precios en un Excel que te pasaron. De una tabla los precios salen de su columna, sin inventarles moneda. De una dirección solo se descargan páginas de internet — las internas se rechazan, porque quien la pediría es este servidor y no tu navegador.
Hasta ahora lo leído vivía solo en esta pestaña y se perdía al recargar, así que había que volver a leer la carta cada vez —y con una API de por medio, volver a llamarla—. Guardado, lo usan «Proponer frases» y «Reforzar» sin releer nada.
2 · Proponer frases
2-ter · Destilar frases reales
Lo contrario de proponer: en vez de inventar frases, coge las que ya existen —un chat exportado, un volcado de tickets, las conversaciones que un cliente te dejó ver— y le pide al modelo grande que las etiquete. Es lo que enseña al modelo pequeño las erratas y las medias frases que ningún generador escribe. Cae en la cola, como todo.
Se descarta toda fila cuyo texto no sea exactamente una de
las frases enviadas: si el modelo «arregla» una errata ha dejado de anotar y
ha empezado a inventar, y lo real de estas frases es justo el motivo de
usarlas. Lo que aceptes se marca generada aunque la frase sea
real — la etiqueta la puso una máquina, y la métrica de filas reales no debe
salir mejor de lo que es.
2-bis · Reforzar donde falla
Al revés que «Proponer frases»: en vez de decir tú qué
categoría ampliar, se mira dónde se equivoca el modelo y se pide justo eso.
Los fallos se agrupan solos por forma — dos categorías que se confunden se
piden como separar, una que no existe todavía como
base, y el resto como ampliar — y las frases
reales en las que falló viajan en la petición, que es lo que hace que lo
devuelto se parezca al problema.
Las correcciones y las señales salen del hub: usa la dirección y el token de la pestaña Revisión. «Lo que nunca pasó» lee la definición del agente y busca los pares (estado, acción) que las demostraciones apenas cubren — los que rompen en producción, y que no aparecen en ningún registro de fallos porque nadie los intentó nunca. Nada de esto entra al dataset: todo cae en la cola de abajo.
3 · Aceptar o borrar
Nada entra al dataset sin que alguien lo decida. Lo aceptado
se marca origen: generada, que es de donde sale la única métrica
que no engaña.
| Frase | Categoría | Motivo |
|---|
¿Cuál es el modelo más pequeño que resuelve esto?
Entrena el mismo dataset a varios tamaños y recomienda el más pequeño que se queda a tiro del mejor. Tarda minutos: son varios entrenamientos seguidos.
| Tamaño | Parámetros | Métrica | Latencia | Disco | Entrenamiento |
|---|
Llevarlo al destino
Lo ya exportado
Probar prueba el checkpoint; esto es lo que va a correr en casa del cliente. La pregunta no es «¿acierta?» sino «¿acierta igual?», y se responde sobre frases de verdad del dataset — con ruido, un modelo puede coincidir al milímetro y discrepar en «quiero cancelar».
| Tipo | Ruta | Pesos | Paridad |
|---|
De la documentación al conector
Lee un OpenAPI o un AsyncAPI en la pestaña de Propuestas y aquí sale el conector configurado. La clave viaja como nombre: el valor vive en el llavero del sistema y no se lee nunca desde aquí.
Lo que escribió gente que no eres tú
Es la única fuente de frases que no salen de una plantilla, y por eso es la pantalla que más vale. Un modelo entrenado solo con datos generados sale mejor en la evaluación de lo que es en producción.
Ni la dirección ni el token se guardan: viven en esta pestaña y se van al cerrarla. Un token en un fichero junto al dataset es un token en la copia de seguridad y en el repositorio.
Enlaces para que otros prueben
Un enlace abre un chat con el modelo para quien tú quieras, sin cuenta y sin instalar nada. Lo que escriban, y sobre todo lo que digan que debería haber respondido, cae en la cola de abajo.
| Nombre | Tarea | Mensajes | Caduca |
|---|
Modelos sirviendo por API pública
Publicar no se hace desde aquí: lo hace
nano infer --hub en la máquina donde vive el modelo, porque el
hub no puede encender un proceso en la caja registradora de un cliente. Esta
pantalla mira, y revoca.
| Nombre | Identificador | Tarea | Llamadas | Modelo | Salto | Estado |
|---|
| Qué escribieron | Qué dijo el modelo | Debería ser | Comentario |
|---|
Qué está pasando en las máquinas de tus clientes
Esta pantalla enseña cuántas conversaciones hubo y cuáles se atascaron. No enseña lo que se dijo, y el hub tampoco lo guarda. Para leer una hay que pedirla, y el dueño del negocio la acepta en su máquina, una por una.
Es más incómodo que subirlo todo. Esa incomodidad es el diseño: un VPS con las conversaciones de los clientes de veinte negocios ajenos es un problema de otro tamaño que uno que sabe cuántas hubo.
Índice sin contenido
| Negocio | Turnos | Última intención | Peor conf. | Repitió | Cuándo |
|---|
Peticiones de ver una conversación
Lo que has pedido, lo que te han concedido y lo que has leído. Lo concedido se borra solo a los siete días, y el dueño puede retirarlo antes; también puedes borrarlo tú cuando ya no te haga falta.
| Conversación | Motivo | Estado | Turnos |
|---|
Avisos a una app externa
El hub llama a una dirección tuya cuando pasa algo, en vez de que alguien tenga que volver a mirar esta pantalla. Es la única dirección de tráfico que este sistema puede iniciar: hacia fuera. A una PC detrás de un router no puede llamar, y por eso todo lo demás aquí es sondeo.
Cada entrega va firmada con HMAC-SHA256 sobre
fecha.cuerpo en la cabecera X-NanoFactory-Firma.
La fecha va dentro de la firma: sin ella, una entrega capturada se
puede repetir mañana y la firma seguiría cuadrando. El secreto se enseña
una sola vez, al dar de alta. Se reintenta cinco veces con espera creciente
y la cola sobrevive al despliegue, así que un aviso no se pierde porque el
otro extremo estuviera caído un rato.
| Destino | Eventos | Última entrega |
|---|
Quién entra
Dos puertas y un solo modelo de permisos: una sesión de
persona y un token de aplicación llegan los dos con sus alcances, y
cada ruta pide el suyo. Lo que no está en el mapa exige admin:
añadir una ruta y olvidarse deja una puerta cerrada de más, nunca una
abierta de más.
Personas
La contraseña del servidor es compartida, así que no identifica a nadie: con ella, «alguien aceptó estas correcciones» es todo lo que se puede decir. Un usuario con nombre sí. mirar es el rol para enseñarle el sistema a un cliente sin darle nada más.
| Usuario | Rol | Qué puede | Última entrada |
|---|
Tokens de aplicación
Para que una app entre sin escribir una contraseña cada
mañana. Van en Authorization: Bearer, caducan, se revocan de
uno en uno, y llevan solo los alcances que marques: un móvil que aprueba
máquinas no debería poder borrar un dataset, y menos si lo roban.
| Token | Alcances | Caduca | Último uso |
|---|
Qué modelo usa cada parte
Cinco sitios de la fábrica llaman a un modelo grande, y no valen lo mismo: etiquetar mil frases reales y escribir veinte ejemplos de relleno son la misma llamada con distinto precio. Aquí se le pone a cada uno el suyo.
Vacío quiere decir «como hasta ahora»: coge el primer generador que esté listo y el modelo por defecto del conector. Un proyecto que no toque esta pantalla funciona igual que antes.
Aquí no se guarda ninguna clave: solo qué conector y qué modelo. La credencial sigue en el llavero del sistema operativo y no hay ninguna ruta que la devuelva — por eso este fichero se puede subir al repositorio sin pensárselo.
Cómo se usa desde otra aplicación
Esta referencia no está escrita a mano: sale de las mismas rutas que el servidor despacha y del mismo mapa que decide quién pasa. Si una ruta existe, está aquí; si cambia de permiso, cambia aquí.
Entrar
Un token de aplicación de los de arriba, en la cabecera de cada petición. Nada de cookies: una app no es un navegador y pedirle que lo simule es pedirle que finja ser lo que no es.
curl -H "Authorization: Bearer nfa_…" \
https://tu-servidor/api/datasets
401 es «no sé quién eres» y toca entrar. 403 es «sé quién eres y esto no es para ti»: al token le falta el alcance, y volver a pedir credenciales ahí sería un bucle sin salida.
Recibir avisos
Los das de alta en Producción. Cada entrega llega firmada y la firma cubre la hora, para que una capturada hoy no se pueda repetir mañana. Tu app comprueba esto y descarta lo que traiga fecha vieja:
firma = HMAC_SHA256(secreto, fecha + "." + cuerpo_crudo) // cabeceras: X-NanoFactory-Firma, -Fecha, -Evento, -Entrega
Se reintenta, así que una entrega puede llegar dos veces:
X-NanoFactory-Entrega es el identificador con el que descartar
repetidas. Decirlo es más honesto que prometer que no pasará.
Las rutas
La credencial del hub
Hasta ahora la dirección del hub y su token viajaban en cada petición y no se guardaban en ningún sitio — un token en un fichero es un token en la copia de seguridad. Se puede guardar aquí por una razón concreta: una app no puede escribirlo en cada pantalla. Va al directorio de estado con permisos 0600, fuera del proyecto y por tanto fuera de la copia de seguridad de los datasets. Lo que mandes en un formulario sigue ganando a lo guardado.
Consentimiento
Un modelo entrenado con la voz de alguien puede decir cosas que esa persona nunca dijo. Eso es distinto en clase a un clasificador entrenado con sus frases, y por eso esto no es un aviso: sin consentimiento no se guarda el clip.
Y lo que esta casilla es, sin adornos: registra una afirmación. No verifica que nadie consintiera ni que entendiera a qué. Lo que hace es dejar la afirmación explícita, atarla a los datos, y evitar que alguien entrene una voz por accidente. Lo legal es cosa de un abogado, y cambia según el país.
Qué te falta por grabar
El fallo que esto evita: sentarse con el micrófono, leer cincuenta frases del mismo largo, todas afirmativas y ninguna con números, y sacar una voz que suena a alguien leyendo una lista. Mira cinco cosas —entonación, números, largo, sonidos del español y tus productos— y propone frases que tapen lo que falte.
El dataset es de dónde salen los nombres de los productos: un modelo que nunca oyó «familiar» no la va a decir bien el día que le toque. El generador por IA es el de la pestaña Propuestas; sin él se proponen esqueletos, marcados como tales.
Grabar
Lo grabado
Las duraciones por carácter hay que sacarlas del audio. Repartir la frase en partes iguales entrena una voz monótona, con todas las sílabas igual de largas — por eso el dataset se niega a adivinarlas.
| Audio | Texto | Voz | Duraciones |
|---|
Probar el agente
Intención, entidades y la herramienta elegida, en una sola vista. Siempre en simulación salvo que marques lo contrario: un botón que manda pedidos de verdad mientras ajustas el YAML no comprueba nada.
Aprender de lo que ya hizo
Convierte el registro de auditoría en filas de dataset. Los turnos que el agente no supo resolver vuelven sin etiqueta: un turno fallado no demuestra la respuesta correcta, y adivinarla mete el error en los datos con una etiqueta segura encima.