Mejora de un clasificador de anuncios
Quería mejorar el prompt sin ajustarlo al examen. Convertí fallos repetidos en cambios concretos, mantuve 40 casos fuera de la edición y ejecuté el prompt elegido en los 200 casos.
Qué debe entender bien el clasificador
El título de un anuncio no basta. El clasificador debe identificar el producto exacto y conservar los detalles que cambian su valor: generación, capacidad, operador, condición, accesorios, financiamiento y si el precio publicado realmente se puede usar.
iPhone 15 Plus 256GB T-Mobile Balance Owed
Funciona, pero aún tiene pagos pendientes y puede ser bloqueado. Solo T-Mobile. Precio: $280.
- Identidad
- iPhone 15 Plus · 256GB
- Restricción
- T-Mobile · financiado
- Precio
- $280 es el precio del artículo completo
Omitir la deuda podría compararlo con teléfonos libres y sin restricciones.
MacBook Air 13 M2 A2681 LCD Screen Assembly
Solo el conjunto de pantalla usado. No incluye portátil ni placa lógica. Precio: $210.
- Identidad
- MacBook Air M2 · A2681
- Paquete
- Solo conjunto de pantalla
- Precio
- $210 corresponde al repuesto
Una pantalla no se puede valorar con ventas de MacBook completos.
Nintendo Switch OLED Tablet Console Only HEG-001
Solo la tableta. No incluye Joy-Con, base, cargador ni juegos. Precio: $135.
- Identidad
- Switch OLED · HEG-001
- Paquete
- Solo tableta
- Falta
- Mandos · base · cargador
El contenido del paquete cambia qué ventas anteriores son comparables.
Leica Q3 43 Camera Reservation Deposit
Depósito no reembolsable para entrar en la lista de espera; el saldo se paga al recogerla. Precio mostrado: $500.
- Identidad
- Leica Q3 43
- Tipo
- Depósito de reserva
- Precio
- $500 no es un precio de venta utilizable
Confundir el depósito con el precio de la cámara crearía una oferta falsa.
Remote iPhone Samsung Carrier Unlock Service
Servicio digital mediante IMEI. No se vende ningún teléfono físico. Precio mostrado: $35.
- Inventario
- No hay producto físico
- Mercado
- Servicio no compatible
- Precio
- $35 no es el precio de un producto
El clasificador debe detenerse antes de buscar productos o calcular precios.
Cómo lo medí
El conjunto contiene 200 anuncios sintéticos escritos y etiquetados a mano en 22 categorías. Un caso estricto exige que pasen los seis controles. La puntuación semántica promedia esas seis dimensiones por caso.
- 200 casos revisables
- El texto sintético y el resultado esperado están juntos en el repositorio. No hay una segunda revisión independiente registrada.
- Seis controles
- Categoría, identidad, búsqueda, atributos de valor, soporte de mercado y uso del precio. Identidad, búsqueda y atributos reciben crédito parcial en la puntuación semántica.
- Dos cohortes, una prueba final
- El conjunto combina 100 casos de regresión congelados con 100 casos exigentes. Usé 60 casos exigentes para desarrollar, mantuve 40 fuera de la edición y ejecuté el prompt ganador en los 200 casos.
- Seguridad de precio
- El conjunto tiene 19 precios inutilizables y 8 anuncios fuera del mercado compatible. El resumen de v3 registra un error combinado, pero ya no conserva el resultado por caso para separar ambas señales.
- Casos difíciles a propósito
- El conjunto concentra paquetes incompletos, daños, financiamiento, bloqueos de operador, precios engañosos, accesorios e identidad ambigua.
- Solo texto
- Producción también puede recibir fotos, pero cada medición de este informe aísla la extracción de texto. No valida la comprensión de imágenes.
Cómo mejoro el clasificador
Trato el modelo, el nivel de razonamiento y el prompt como variables separadas. Cambio una a la vez, uso el mismo contrato y dejo un holdout fuera del proceso de edición.
Congelar la base
Cada modelo comienza con el mismo prompt, formato, esquema JSON, razonamiento, herramientas y puntuación. Esto reduce diferencias de configuración y prueba cada modelo bajo un solo contrato.
Convertir errores en hipótesis
Agrupo fallos de paquete, identidad, restricciones, atributos, soporte y precio. Un cambio debe corregir un problema concreto, no solo hacer el prompt más largo.
Probar con un conjunto pequeño
Los candidatos empiezan con 10 a 20 casos dirigidos y controles conocidos. Después pasan a una cohorte fija de desarrollo. Cada prueba registra huella del prompt, tokens, dólares y latencia.
Mantener el holdout fuera de la edición
Solo el mejor candidato llega a casos que no se usaron durante la edición. Después enfrenta los 200 casos completos antes de producción.
Rechazo candidatos que aumentan los errores de precio. Después priorizo exactitud estricta, uso la puntuación semántica para medir la gravedad, reviso el holdout y comparo costo y latencia P95.
Qué cambió con el prompt v3
El prompt v3 hace explícitas las reglas de paquetes, restricciones, identidad y precio. Aprobó 18 anuncios más en la prueba completa y redujo los fallos de atributos de 70 a 50. El holdout bloqueado también mejoró de 14/40 a 21/40.
| Prompt | Casos estrictos | Puntuación semántica | Desarrollo | Holdout bloqueado | Desajustes de protección | Promedio | P95 | Observado / 1K | Sin caché / 1K |
|---|---|---|---|---|---|---|---|---|---|
| Baseline2ca71c9c3894 | 117/200 | 94.82% | 22/60 | 14/40 | 2 desajustes | 2.89s | 4.80s | $0.45 | $0.51 |
| Production v374c46c57d079 | 135/200 | 96.79% | 35/60 | 21/40 | 1 desajuste | 2.99s | 5.11s | $0.38 | $0.65 |
La comparación actual
Repetí Luna y Gemini 3.7 Flash con los mismos 200 casos, prompt v3, razonamiento bajo, sin herramientas y el mismo puntuador. Gemini aprobó 47 casos menos, costó 5.98 veces más y tuvo un P95 4.38 veces mayor. También encontró ocho errores de capacidad.
| Modelo | Casos estrictos | Puntuación semántica | Costo observado / 1K | Promedio | P95 | Desajustes de protección | Disponibilidad |
|---|---|---|---|---|---|---|---|
| Lunagpt-5.6-luna · low reasoning | 136/200 | 96.84% | $0.3774 | 3.99s | 7.52s | 1 desajuste | Sin interrupciones |
| Gemini 3.7 Flashgemini-3.7-flash · low thinking | 89/200 | 93.70% | $2.2562 | 7.47s | 32.92s | 5 desajustes | 8 errores de capacidad |
Contabilidad de la ejecución
| Modelo | Tokens de entrada | Entrada en caché | Tokens de salida | Tokens de razonamiento | Gasto de la prueba | Base del costo |
|---|---|---|---|---|---|---|
| Lunagpt-5.6-luna · low reasoning | 322,484 | 303,420 | 54,666 | 6,504 | $0.075480 | Estimación con tarifa publicada |
| Gemini 3.7 Flashgemini-3.7-flash · low thinking | 283,848 | 0 | 63,559 | 2,867 | $0.451232 | Estimación con tarifa publicada |
La decisión para producción
Mantuve Luna con el prompt v3 para la ruta de texto probada. Una nueva ejecución aprobó 136 casos y no falló ningún precio engañoso. Su único error fue conservador: marcó un depósito como fuera del mercado aunque también rechazó correctamente ese precio.
Resultado medido: 136/200 casos estrictos · 96.84% de puntuación semántica · $0.65 sin caché por 1,000 clasificaciones · 0/19 precios engañosos fallados.
Método y límites
Este es un benchmark práctico de ingeniería para extracción estructurada de texto, no un benchmark académico ni una prueba completa de cada plataforma.
- Identidad del prompt
- Las pruebas actuales usan huellas SHA-256. Producción v3 es 74c46c57d079; la base es 2ca71c9c3894.
- Identidad de evaluación
- La comparación actual de Luna y Gemini es bfa83589a1d3. La prueba anterior del prompt es c63ad64bf1c9. Ambas huellas incluyen prompt, puntuador, categorías, esquema y casos.
- Interpretación
- El resultado 135/200 es una prueba de lanzamiento, no una estimación de producción. El holdout mejoró de 14/40 a 21/40, pero ahora sus resultados son conocidos y no puede seguir considerándose intacto en futuros estudios.
- Razonamiento
- La prueba actual de Luna usó razonamiento bajo y Gemini usó thinking bajo.
- Muestreo
- No fijamos temperature ni top-p; se usaron los valores predeterminados.
- Salida
- Todos devolvieron el mismo esquema JSON estructurado.
- Ejecución
- Luna usó cinco casos concurrentes y terminó sin interrupción. Gemini usó dos, produjo ocho errores 503 y necesitó un reinicio manual tras un intento detenido. Los casos completos se guardaron por anuncio.
- Latencia
- El promedio y P95 son medidas operativas de una ejecución, no una afirmación de rendimiento máximo.
- Alcance
- Desactivamos fotos, búsqueda web, grounding y herramientas externas. Los resultados corresponden a 200 casos de texto en 22 categorías.
- Costo
- Usamos tokens de llamadas exitosas y las tarifas Standard vigentes.