Как снизить расходы на Claude API
Стоимость LLM растёт вместе с числом пользователей, длиной контекста и объёмом ответов. Эти практики помогают уменьшить стоимость каждого запроса без полной переработки продукта.
Самый быстрый способ
Посчитайте свою нагрузку
Введите реальное число запросов и средний расход токенов. Калькулятор покажет стоимость выбранной модели по официальным тарифам и через Claude API Tech. Для честного результата включите в число запросов retries и фоновые вызовы.
Калькулятор нагрузки
По официальным тарифам
1 350,00 $
в месяц
Claude API Tech
675,00 $
в месяц
Экономия в месяц
675,00 $
Экономия за год
8 100,00 $
Расчёт использует текущие цены выбранной модели без prompt caching. Он показывает порядок расходов, а не будущий счёт с точностью до цента.
На странице цен мы подробно разобрали, чем отличаются входные, выходные и кешированные токены, как формируется итоговая стоимость и как рассчитать расход одного запроса. Как считать стоимость Claude API →
Сначала соберите данные за семь дней
Общий счёт мало что объясняет. Записывайте расход рядом с функцией продукта: ответ поддержки, обработка документа, шаг агента или генерация отчёта. Через неделю станет видно, какая функция съедает бюджет и почему.
const startedAt = performance.now();
const message = await anthropic.messages.create({
model,
max_tokens,
messages
});
analytics.track("llm_request", {
feature: "support_reply",
model: message.model,
input_tokens: message.usage.input_tokens,
output_tokens: message.usage.output_tokens,
latency_ms: Math.round(performance.now() - startedAt)
});Найдите главный источник расходов
Не переписывайте все prompts сразу. Отсортируйте функции продукта по расходам и начните с верхних строк. Таблица ниже помогает выбрать первый эксперимент.
| Что видно в данных | Где растёт счёт | Что проверить первым |
|---|---|---|
| Большие prompts в RAG или чате | input_tokens | Retrieval, история, prompt caching |
| Ответ длиннее, чем нужен интерфейсу | output_tokens | max_tokens и формат ответа |
| Много вызовов на одно действие | retries или agent loop | Backoff, stop conditions, дубликаты |
| Одна модель обслуживает все задачи | цена каждого токена | Routing на более дешёвую модель |
Что оптимизировать
1. Снизьте цену тех же токенов
Переход на Claude API Tech позволяет снизить расходы на Claude API на 50% без изменения моделей, промптов и объёма токенов. Зарегистрируйтесь, чтобы получить совместимый API-ключ.
Снизить расходы на 50% →2. Подбирайте модель под сложность задачи
Не отправляйте классификацию, извлечение полей и простые преобразования в самую дорогую модель. Проверяйте качество на собственном наборе примеров и используйте более мощную модель только для задач, где она действительно улучшает результат.
const model = task.requiresDeepReasoning
? "claude-sonnet-5"
: "claude-fable-5";
const response = await anthropic.messages.create({
model,
max_tokens: task.requiresLongAnswer ? 1200 : 300,
messages
});3. Сокращайте повторяющийся контекст
Не отправляйте всю историю диалога и все документы при каждом запросе. Оставляйте релевантные фрагменты, сводку предыдущих сообщений и инструкции, необходимые для текущего шага.
Без оптимизации
- ●Вся история
- ●Все документы
- ●Повторные инструкции
≈ 12 400 входных токенов
После оптимизации
- ●Краткая сводка
- ●3 релевантных фрагмента
- ●Закешированные инструкции
≈ 3 100 входных токенов
4. Используйте prompt caching
Кешируйте длинные системные инструкции и повторяющийся контекст. Чтение закешированных токенов стоит 0,1× обычной ставки ввода, поэтому на повторяемой части prompt экономия может достигать 90%.
const response = await anthropic.messages.create({
model: "claude-sonnet-5",
max_tokens: 500,
system: [{
type: "text",
text: policyAndInstructions,
cache_control: { type: "ephemeral" }
}],
messages: [{
role: "user",
content: relevantChunks.join("\n\n")
}]
});5. Ограничивайте длину ответа
Задавайте реалистичный max_tokens и просите модель отвечать в нужном формате. Потоковая выдача улучшает время до первого токена, но сама по себе не уменьшает число оплачиваемых токенов.
const stream = anthropic.messages.stream({
model: "claude-sonnet-5",
max_tokens: 300, // верхний предел ответа
system: "Верни только компактный JSON с полями summary и risk_level. Без Markdown.",
messages
});
for await (const event of stream) {
console.log(event);
}
const message = await stream.finalMessage();
console.log(message.usage.output_tokens); // фактически созданные токены6. Не создавайте шторм повторных запросов
Повторяйте только временные ошибки и используйте exponential backoff. Не перезапускайте успешный запрос из-за ошибки в интерфейсе или таймаута собственного сервиса.
Проведите один контролируемый тест
Возьмите одну дорогую функцию и прогоните одинаковый набор запросов до и после изменения. Сравните стоимость, качество результата, latency и долю ошибок. Если качество осталось приемлемым, переносите следующий сценарий.
- Зафиксируйте текущую модель, prompt и среднюю стоимость успешного действия.
- Сохраните от 30 до 100 типичных запросов без персональных данных.
- Измените только один параметр: endpoint, модель, контекст, caching или лимит ответа.
- Сравните результат на одном и том же наборе запросов.
- Оставьте изменение только тогда, когда экономия не ломает качество продукта.
Следующий шаг
Сравните цены моделей, затем протестируйте один производственный сценарий на новом endpoint. Оцените качество, latency и фактическую стоимость до переноса остального трафика.