Урок 5Калькулятор

Оптимизация расходов

Снижение затрат на API

Проблема: Затраты на API LLM могут быстро выйти из-под контроля. Популярное приложение может стоить тысячи в день. Как сделать ИИ доступным?

Решение: Будь энергоэффективным

Оптимизация затрат в LLM-приложениях — это умение получать тот же результат, платя за меньшее число токенов и более дешёвые вычисления. Почти любая облачная модель тарифицируется по токенам — отдельно за вход (твой промпт) и выход (ответ модели), обычно за миллион токенов. Поэтому счёт зависит от трёх рычагов: сколько токенов ты отправляешь, сколько генерируешь и какая модель их обрабатывает. Оптимизировать — значит тянуть за каждый рычаг, не теряя в качестве. Это как расход электричества дома: ты не сидишь в темноте, а просто выключаешь свет в пустых комнатах и ставишь экономичные приборы.

Как работают основные техники

Основную работу делают три семейства техник. Сжатие промптов (prompt compression) убирает из входа всё лишнее: слова-наполнители, дублирующиеся инструкции, раздутые примеры. Кэширование промптов хранит неизменную часть промпта (системные инструкции, описания инструментов, длинные документы) на стороне провайдера, и повторные запросы не пересчитывают её заново — например, у Anthropic запись в кэш стоит разово ~1.25x, а чтение из кэша потом всего ~0.1x. Выбор модели (роутинг) направляет каждый запрос на самую дешёвую модель, которая ещё справится: флагман — для сложных рассуждений, маленькую модель уровня mini/haiku — для классификации, извлечения и FAQ. Семантический кэш идёт дальше и вовсе пропускает модель, когда почти такой же вопрос уже отвечали.

Когда применять и какие компромиссы

Браться за оптимизацию стоит, когда у приложения появился реальный трафик: на старте время инженера дороже счёта за API, и преждевременная настройка — впустую. Главное правило — сначала измеряй: логируй число токенов и стоимость каждого запроса, ведь нельзя оптимизировать то, что не отслеживаешь. У каждого рычага есть цена. Слишком жёсткое сжатие может выкинуть контекст, который был нужен модели; излишне рьяный роутинг отправит сложную задачу на слабую модель и тихо просадит качество; а семантический кэш вернёт устаревший ответ на вопрос, который только выглядит похожим. Поэтому держи рядом запущенные оценки качества (evals). Разбор примера: бот поддержки шлёт системный промпт на 2000 токенов плюс 500 токенов контекста, 10 000 раз в день, по $10 за миллион токенов — это ~$75/день или $2250/мес. Кэширование статического системного промпта, роутинг простых запросов на mini-модель и сжатие промпта на 40% вместе снижают это примерно до $18/день — минус 76%, экономия ~$1710 в месяц от трёх изменений, которые вообще не трогают веса модели.

Представьте это как экономию электричества:

  • 1. Аудит текущих затрат: Сначала измерьте! Логируйте каждый запрос с количеством токенов и стоимостью — нельзя оптимизировать то, что не измеряешь
  • 2. Сожми системные промпты: Удали слова-наполнители, сократи примеры с 5 до 2-3, используй списки вместо абзацев — цель: сокращение на 40-60%
  • 3. Добавь семантический кэш: 60%+ FAQ-запросов — почти дубликаты. Семантический кэш находит похожие вопросы и возвращает сохранённые ответы без вызова LLM
  • 4. Маршрутизируй по сложности: 80% задач не требуют флагманской модели — используй классификатор для маршрутизации простых задач на mini/haiku (в 10-20 раз дешевле)
  • 5. Мониторь и итерируй: Настрой дашборды затрат, отслеживай стоимость-за-диалог, делай еженедельные ревью — оптимизация непрерывна, а не разовая

Пример: системный промпт 2000 токенов + контекст 500 токенов x 10 000 запросов/день x $10/1М токенов = $75/день ($2250/мес). С кэшированием + роутингом: $18/день — экономия 76%.

Ключевые стратегии

  • Сжатие промптов: Удалите слова-наполнители, сократите примеры, используйте структурированные форматы — системный промпт на 2000 токенов часто можно сжать до 800 без потери качества
  • Кэширование промптов: Кэширование промптов Anthropic: первый запрос стоит 1.25x, но кэшированные — всего 0.1x. Скидка 90% на повторяющиеся системные промпты между разговорами
  • Роутинг моделей: 80% задач (FAQ, извлечение, классификация) не требуют флагманской модели — направляйте их на mini/haiku и экономьте в 10-20 раз за запрос
  • Семантический кэш: 60%+ FAQ-запросов — почти дубликаты. Семантический кэш сопоставляет похожие (не идентичные) вопросы и мгновенно возвращает сохранённые ответы

Интересный факт: Реальный пример: системный промпт 2000 токенов + контекст пользователя 500 токенов при 10 000 запросов/день по $10/1М токенов = $75/день ($2250/мес). После кэширования + роутинга + сжатия: $18/день — снижение на 76%, экономия $1710/мес всего от трёх оптимизаций.

Попробуйте сами!

Используй калькулятор стоимости ниже, чтобы оценить затраты на LLM и увидеть, как разные стратегии оптимизации снижают расходы.

Калькулятор стоимости

Расчёт стоимости

За запрос

$0.0033

В день

$3.25

В месяц

$97.50

В год

$1170

Возможная экономия

Переход на Gemini 2.0 Flash сэкономит ~$94.58/мес

Сравнение моделей по стоимости

GPT-5
$165/mo
GPT-4o
$97.50/mo
GPT-4o mini
$5.85/mo
Claude Opus 4.5
$675/mo
Claude Sonnet 4
$135/mo
Claude 3.5 Haiku
$36.00/mo

Советы по оптимизации

  • Используй легкие модели (GPT-4o mini, Claude Haiku) для простых задач
  • Кэшируй повторяющиеся промпты, чтобы избежать лишних вызовов
  • Батчируй запросы, где возможно, чтобы снизить накладные расходы
  • Оптимизируй промпты: короче = дешевле
  • Используй стриминг для быстрого фейла на плохих ответах
  • Внедри лимиты токенов для ограничения расходов на запрос

Частые вопросы

Как снизить расходы на API LLM?

Сначала измерь: логируй число токенов и стоимость каждого запроса. Затем применяй три рычага — сжатие промптов (убрать лишний текст из входа), кэширование промптов (хранить неизменный системный префикс на стороне провайдера) и роутинг моделей (отправлять простые задачи на дешёвую mini/haiku-модель, а флагман — только на сложные). На реальном трафике это часто даёт экономию 50–80% без потери качества.

Что такое кэширование промптов и сколько оно экономит?

Кэширование промптов хранит неизменную часть запроса (системные инструкции, описания инструментов, длинные документы) на стороне провайдера, чтобы повторные вызовы не пересчитывали её заново. У Anthropic запись в кэш стоит разово около 1.25x обычной цены, а чтение из кэша потом — всего около 0.1x. Для повторяющихся системных промптов это скидка до 90% на входные токены.

Когда стоит начинать оптимизацию затрат на LLM?

Когда у приложения появился реальный трафик и счёт за API стал заметным. На старте время инженера дороже счёта за API, поэтому преждевременная оптимизация — впустую. Сначала настрой измерение стоимости-за-запрос и дашборды, найди самые дорогие сценарии и оптимизируй именно их, а не всё подряд.

Какие компромиссы и риски у оптимизации затрат?

У каждого рычага есть цена. Слишком жёсткое сжатие промпта может выкинуть контекст, который был нужен модели. Излишне рьяный роутинг отправит сложную задачу на слабую модель и тихо просадит качество. Семантический кэш может вернуть устаревший ответ на вопрос, который только выглядит похожим. Поэтому держи рядом запущенные оценки качества (evals) и следи за метриками после каждого изменения.

Попробуй сам

Интерактивное демо этой техники

Сравнение техник
Демо режим
Предзаписанные ответы
ЗадачаНачинающийКод

Сократить расход токенов при генерации кода без потери качества

Без техники
Без техники
Промпт
Здравствуйте! Мне нужна ваша помощь. Пожалуйста, будьте так любезны написать функцию на языке программирования JavaScript, которая бы принимала массив чисел в качестве входного параметра и возвращала бы новый массив, содержащий только уникальные значения из исходного массива, то есть без дубликатов. Было бы здорово, если бы вы также добавили комментарии к коду для лучшего понимания. Заранее большое спасибо!
Ответ

Конечно! С удовольствием помогу вам! Вот функция на JavaScript, которая делает именно то, что вы попросили:

// Функция для удаления дубликатов из массива чисел
function removeDuplicates(numbers) {
  // Создаём новый массив для хранения уникальных значений
  const uniqueNumbers = [];
  // Проходим по каждому элементу исходного массива
  for (let i = 0; i < numbers.length; i++) {
    // Проверяем, есть ли текущий элемент уже в массиве уникальных
    if (!uniqueNumbers.includes(numbers[i])) {
      uniqueNumbers.push(numbers[i]);
    }
  }
  return uniqueNumbers;
}

Надеюсь, это поможет! Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать!

Токены:95/180
Время:1600ms
Качество:
С Оптимизация затрат
С техникой
Промпт
JS: функция — уникальные элементы массива чисел. Только код.
Ответ
const unique = (nums) => [...new Set(nums)];
🔢Входной промпт: 95 токенов → 18 токенов (сокращение на 81%)
🔢Выходной ответ: 180 токенов → 15 токенов (сокращение на 92%)
🧠"Только код" убирает вступления, прощания и комментарии — основные пожиратели токенов
При 10K запросов/день экономия: ~2.5M токенов/день = ~$25/день на GPT-4
Токены:18/15
Время:220ms
Качество:
Почему это работает

Лаконичный промпт + инструкция "только код" экономят до 90% токенов. В production при тысячах вызовов это десятки долларов в день.

1 / 2

Квиз по уроку

1 из 4

1.Какая наиболее эффективная стратегия снижения затрат на API LLM?

Практика

Создайте бесплатный аккаунт для решения челленджей

4 челленджей с AI-проверкой для этого урока

Связанные уроки:Model SelectionQuantization

Этот урок — часть структурированного курса по LLM.

Мой путь обучения