Skip to content

Latest commit

 

History

History
78 lines (63 loc) · 5.11 KB

File metadata and controls

78 lines (63 loc) · 5.11 KB

Anthropic vision-billing sweep

🌐 Переведено: все языки

Зачем он нужен: гейт прибыльности безопасен только в том случае, если оценка стоимости точна. Формула, ошибающаяся хоть немного, будет конвертировать блоки, которые на самом деле стоят дороже. Поэтому этот sweep привязывает формулу к реальным цифрам API перед тем, как она попадёт в продакшн — до нулевой невязки.

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 count_tokens, который решает два открытых вопроса геометрии:

  1. Формула — тарифицирует ли API патчами ceil(w/28) × ceil(h/28) (текущая документация) или устаревшей w·h/750? Набор проб разделяет два варианта на 25–180 токенов в строке.
  2. Тир — получает ли claude-fable-5 лимиты высокого разрешения (длинная сторона ≤ 2576 px, ≤ 4784 визуальных токена)? Строка page-old-1928x1928 — решающая: ≈ 4761 измеренных означает high-res WYSIWYG (старая большая страница несёт ~в 3.3× больше символов на изображение, чем сегодняшняя 1568×728, при том же символов/токен); ≈ 1521 означает ресемпл стандартного тира, и 1568×728 остаётся верной.

Контекст: sweep от 2026-07-01, лежащий в основе текущей страницы 1568×728 (аудит читаемости, 2026-07-01), был измерен на claude-sonnet-4-5 — модели стандартного тира — тогда как продакшн нацелен на Fable 5, которую документация по vision помещает в тир высокого разрешения. Тот же аудит также измерил текущую страницу в 1460 токенов: ближе к формуле патчей (1456), чем к /750 (1522), что намекает, что API уже перешёл на биллинг по патчам.

Запуск

pnpm run build                              # dist/ — предпосылка (как и для всех eval)
node benchmarks/billing-sweep/run.mjs --dry-run   # только прогнозы, без ключа, $0

ANTHROPIC_API_KEY=sk-... node benchmarks/billing-sweep/run.mjs \
  --models claude-fable-5,claude-sonnet-4-5 --probe-multi --probe-20plus

Должен обращаться к API напрямую — никогда через прокси OmniGlyph, который бы трансформировал тело запроса. count_tokens бесплатен; полный sweep делает ~25 запросов.

Чтение вывода

По каждой модели каждая строка пробы показывает измеренные токены изображения (с изображением минус текстовая базовая линия) против всех четырёх прогнозов (patch/legacy750 × standard/highres); сводка ранжирует гипотезы по среднему абсолютному отклонению. --probe-multi проверяет лимит на изображение (2×1092² ≈ 2×1521); --probe-20plus проверяет правило >20 изображений (сторона >2000 px должна быть отклонена, а не ресемплирована). Строки попадают в results/*.jsonl; математика прогнозов лежит в formulas.mjs, закреплена в tests/billing-sweep-formulas.test.ts.

После вердикта

  • Формула патчей подтверждена → портировать PR #27 OmniGlyph (точный перевод ресайза) и синхронизировать математику гейта ANTHROPIC_PIXELS_PER_TOKEN в src/core/transform.ts.
  • Тир high-res подтверждён на Fable → вернуть геометрию страницы по тиру (страницы класса 1928×1928 для Fable/Opus 4.8/Sonnet 5, 1568×728 для standard), по аналогии с тем, как путь GPT уже держит свой собственный GPT_MAX_HEIGHT_PX.