Токены, стоимость и prompt caching
Запросы к Claude стоят денег. Не понимая как это считается — легко получить счёт в $200 за неделю на пет-проекте. Разберёмся какая математика за биллингом и какие приёмы реально снижают расходы.
Что такое токен
Токен — это единица обработки текста для модели. Не символ, не слово — что-то посередине. Английское слово в среднем 1.3 токена. Русское слово — около 2-3 токенов (русский «дороже» в токенах потому что модель училась в основном на английском). Эмодзи и редкие символы могут весить 4-6 токенов каждый. Точно посчитать токены до отправки можно через токенизатор Anthropic (есть в SDK как client.tokens.count(...)).
Цены и как они считаются
Тарификация раздельная: input tokens (то что ВЫ отправили — промпт + системное сообщение + история диалога) и output tokens (то что Claude НАПИСАЛ в ответ). Output обычно в 5 раз дороже input — модель напрягается чтобы сгенерировать. Конкретно для Sonnet 4.6: $3 за 1M input, $15 за 1M output. Запрос с промптом 2000 токенов и ответом 500 токенов: (2000 × 3 + 500 × 15) / 1_000_000 = $0.0135 — копейка с лишним.
Prompt caching — главный приём экономии
Если ты гоняешь Claude с одним и тем же системным сообщением (например 5000 токенов инструкций для агента) — каждый запрос платишь за эту же простыню. Prompt caching позволяет «запомнить» префикс на 5 минут на стороне Anthropic, и платить за него 0.1× от обычной цены при последующих запросах. Включается через
в нужном блоке. Для чатов с длинной системной инструкцией экономия — реальные 90%.
Когда какая модель оправдана по деньгам
Простое правило: если задача стоит $0.01 пользователю — Sonnet ОК. Если $0.001 — лучше Haiku. Opus оправдан когда плохой ответ стоит дороже самого запроса (например архитектурное решение которое потом разворачивать на проде). Для пользовательских интерфейсов с лимитом — почти всегда Sonnet. Haiku хорош для огромных батч-задач (модерация контента, классификация).
// === Считаем стоимость запроса ===
function priceUSD(model, inputTokens, outputTokens) {
const PRICES = {
'claude-opus-4-7': { in: 15.00, out: 75.00 },
'claude-sonnet-4-6': { in: 3.00, out: 15.00 },
'claude-haiku-4-5': { in: 0.25, out: 1.25 },
};
const p = PRICES[model];
return (inputTokens * p.in + outputTokens * p.out) / 1_000_000;
}
// Запрос к Sonnet: 2000 промпт + 500 ответ
console.log(priceUSD('claude-sonnet-4-6', 2000, 500));
// → 0.0135 (1.35 цента)
// Запрос к Opus: 2000 промпт + 500 ответ
console.log(priceUSD('claude-opus-4-7', 2000, 500));
// → 0.0675 (5x дороже за тот же запрос)
// === PROMPT CACHING — экономия 90% при длинной системке ===
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic();
// Длинная инструкция-системка которая идёт в КАЖДЫЙ запрос
const SYSTEM_PROMPT = `Ты помощник по нашему API...
[сюда 5000 токенов документации, примеров, правил]`;
const r = await client.messages.create({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
system: [
{
type: 'text',
text: SYSTEM_PROMPT,
cache_control: { type: 'ephemeral' }, // ← кешируем этот блок
},
],
messages: [{ role: 'user', content: 'Как сделать X?' }],
});
// Первый запрос: платим полную цену + бонус 25% за запись в кеш
// Все следующие за 5 минут: input для этого блока считается в 0.1×
// Если 5000 токенов системы и 100 запросов в час:
// Без кеша: 5000 × 100 × $3/1M = $1.50
// С кешем: 5000 × $3/1M (первый) + 5000 × 99 × $0.30/1M = $0.16
// Экономия — почти 10x.Подсчёт стоимости вручную и пример prompt caching