Оптимизация расходов
Снижение затрат на 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-4o mini, Claude Haiku) для простых задач
- •Кэшируй повторяющиеся промпты, чтобы избежать лишних вызовов
- •Батчируй запросы, где возможно, чтобы снизить накладные расходы
- •Оптимизируй промпты: короче = дешевле
- •Используй стриминг для быстрого фейла на плохих ответах
- •Внедри лимиты токенов для ограничения расходов на запрос
Частые вопросы
Как снизить расходы на API LLM?
Сначала измерь: логируй число токенов и стоимость каждого запроса. Затем применяй три рычага — сжатие промптов (убрать лишний текст из входа), кэширование промптов (хранить неизменный системный префикс на стороне провайдера) и роутинг моделей (отправлять простые задачи на дешёвую mini/haiku-модель, а флагман — только на сложные). На реальном трафике это часто даёт экономию 50–80% без потери качества.
Что такое кэширование промптов и сколько оно экономит?
Кэширование промптов хранит неизменную часть запроса (системные инструкции, описания инструментов, длинные документы) на стороне провайдера, чтобы повторные вызовы не пересчитывали её заново. У Anthropic запись в кэш стоит разово около 1.25x обычной цены, а чтение из кэша потом — всего около 0.1x. Для повторяющихся системных промптов это скидка до 90% на входные токены.
Когда стоит начинать оптимизацию затрат на LLM?
Когда у приложения появился реальный трафик и счёт за API стал заметным. На старте время инженера дороже счёта за API, поэтому преждевременная оптимизация — впустую. Сначала настрой измерение стоимости-за-запрос и дашборды, найди самые дорогие сценарии и оптимизируй именно их, а не всё подряд.
Какие компромиссы и риски у оптимизации затрат?
У каждого рычага есть цена. Слишком жёсткое сжатие промпта может выкинуть контекст, который был нужен модели. Излишне рьяный роутинг отправит сложную задачу на слабую модель и тихо просадит качество. Семантический кэш может вернуть устаревший ответ на вопрос, который только выглядит похожим. Поэтому держи рядом запущенные оценки качества (evals) и следи за метриками после каждого изменения.
Попробуй сам
Интерактивное демо этой техники
Сократить расход токенов при генерации кода без потери качества
Конечно! С удовольствием помогу вам! Вот функция на 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;
}
Надеюсь, это поможет! Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать!
const unique = (nums) => [...new Set(nums)];
Лаконичный промпт + инструкция "только код" экономят до 90% токенов. В production при тысячах вызовов это десятки долларов в день.
Создайте бесплатный аккаунт для решения челленджей
4 челленджей с AI-проверкой для этого урока
Этот урок — часть структурированного курса по LLM.
Мой путь обучения