← все заметки
2026-03-28

LLM-роутинг: когда GPT-4 — это перебор

Простой выбор модели по документу, который снизил мой LLM-счёт на 40% без потери качества.

llmopenaiclaudecostsaas

Когда выпускаешь LLM-продукт, первый порыв — дефолтиться на лучшую модель. GPT-4o на всё. Это нормальный дефолт, пока месячный счёт не уходит в четырёхзначные, и ты понимаешь, что половина трафика — это перевод рецептов в PDF, для которых GPT-4o смешно избыточен.

На BookahTranslate я сделал простенький роутер, выбирающий модель по трём сигналам: тип документа, тариф пользователя, объём. Выглядит незатейливо. Работает.

python
Выбор модели
def pick_model(doc: Document, tier: UserTier) -> ModelChoice:
    if tier == UserTier.ECONOMY and doc.kind in {
        DocKind.TXT, DocKind.PLAIN_PDF
    }:
        return ModelChoice.GOOGLE_TRANSLATE

    if doc.kind == DocKind.SCANNED_PDF:
        return ModelChoice.GPT_4O   # vision + OCR fusion

    if doc.kind == DocKind.LEGAL or doc.has_dense_terminology:
        return ModelChoice.CLAUDE_SONNET

    if doc.pages > 200 and tier != UserTier.PREMIUM:
        return ModelChoice.CLAUDE_HAIKU   # bulk дёшево

    return ModelChoice.GPT_4O

Почему каждая ветка

  • Простые PDF и TXT на тарифе «Эконом»: Google Translate ощутимо дешевле, для рецепта или новости разница в качестве незаметна.
  • Сканы: нужна vision-модель. GPT-4o сейчас лучший на OCR + перевод за один проход.
  • Юридические / плотная терминология: Claude Sonnet держит консистентность терминов в длинном контексте лучше, чем GPT-4o (по моей A/B-выборке).
  • Длинные документы на низких тарифах: Claude Haiku ~в 10 раз дешевле GPT-4o, и просадку качества на простой прозе сложно заметить, если не читать построчно.

От чего я бы предостерёг

Не делайте «умный роутер», который просит LLM выбрать LLM. Я пробовал. Это добавляет latency, costs и ещё один failure mode. Несколько явных веток по дешёвым сигналам (тип файла, число страниц, тариф) — правильный инструмент. Если ты не можешь сформулировать решение в 8 строках Python, ты ещё не понимаешь свой трафик достаточно, чтобы его роутить.

Observability важнее самого роутера

Каждый перевод логирует выбранную модель, токены, latency и quality-флаг (асинхронно ставит мелкий Claude-пасс, который перечитывает результат). Я еженедельно смотрю худший 1%. В 9 случаях из 10 фикс — «отправить этот профиль документа в более сильную модель», а не «улучшить промпт».