🌐 Traducido: todos los idiomas
Por qué existe: el gate de rentabilidad solo es seguro si la estimación de costo es exacta. Una fórmula que se desvíe un poco convertiría bloques que en realidad cuestan más. Por eso este sweep fija la fórmula a los números reales de la API antes de que se envíe a producción — a residuo cero.
what the sweep decides, visually:
patch model ⌈w/28⌉ × ⌈h/28⌉ + overhead ← current docs
retired /750 (w · h) / 750 ← old formula
│
▼ probe geometries chosen to separate the two by 25–180 tokens/row
measured 1568×728 page = 1,460 tokens
patch predicts 1,456 ✅ (residual ~0)
/750 predicts 1,522 ✗ (off by 62)
Sweep gratuito de count_tokens que decide dos preguntas abiertas de
geometría:
- Fórmula — ¿la API factura parches
ceil(w/28) × ceil(h/28)(docs actuales) o elw·h/750retirado? El conjunto de pruebas separa las dos por 25–180 tokens por fila. - Tier — ¿
claude-fable-5obtiene los límites de alta resolución (borde largo ≤ 2576 px, ≤ 4784 tokens visuales)? La filapage-old-1928x1928es la que decide: ≈ 4761 medidos significa alta resolución WYSIWYG (la página grande antigua lleva ~3.3× más chars por imagen que la actual 1568×728, con los mismos chars/token); ≈ 1521 significa resample de tier estándar, y 1568×728 se mantiene correcta.
Contexto: el sweep del 2026-07-01 detrás de la página actual 1568×728
(auditoría de legibilidad, 2026-07-01) se midió en claude-sonnet-4-5 — un
modelo de tier estándar — mientras producción apunta a Fable 5, que la
documentación de visión coloca en el tier de alta resolución. Esa auditoría
también midió la página actual en 1460 tokens: más cerca de la fórmula de
parches (1456) que de /750 (1522), sugiriendo que la API ya se había movido
a billing por parches.
pnpm run build # requisito de dist/ (como todos los evals)
node benchmarks/billing-sweep/run.mjs --dry-run # solo predicciones, sin clave, $0
ANTHROPIC_API_KEY=sk-... node benchmarks/billing-sweep/run.mjs \
--models claude-fable-5,claude-sonnet-4-5 --probe-multi --probe-20plusDebe pegarle a la API directamente — nunca a través del proxy de
OmniGlyph, que transformaría el cuerpo. count_tokens es gratis; el sweep
completo hace ~25 requests.
Por modelo, cada fila de prueba muestra los tokens de imagen medidos (con
imagen menos la base solo-texto) contra las cuatro predicciones
(patch/legacy750 × standard/highres); el resumen ordena las
hipótesis por residuo absoluto medio. --probe-multi revisa el cap por
imagen (2×1092² ≈ 2×1521); --probe-20plus revisa la regla de >20 imágenes
(un lado >2000 px debe ser rechazado, no re-muestreado). Las filas caen en
results/*.jsonl; la matemática de predicción vive en formulas.mjs, fijada
por tests/billing-sweep-formulas.test.ts.
- Fórmula de parches confirmada → portar el PR #27 de OmniGlyph (traducción
exacta de resize) y alinear la matemática del gate
ANTHROPIC_PIXELS_PER_TOKENensrc/core/transform.ts. - Tier de alta resolución confirmado en Fable → reintroducir una geometría
de página por tier (páginas clase 1928×1928 para Fable/Opus 4.8/Sonnet 5,
1568×728 para estándar), reflejando cómo la ruta de GPT ya mantiene su
propio
GPT_MAX_HEIGHT_PX.