Как снизить расходы на Grok API
Одинаковую задачу можно решить и за доли цента, и в разы дороже. Ниже — приёмы, которые дают до 85% экономии без потери качества: кэширование промптов, контроль контекста, разумные лимиты и стрим.
Выберите похожий сценарий или укажите свои значения.
Расчёт использует текущие цены короткого контекста без учёта кэширования промптов. Он показывает порядок расходов, а не точный счёт.
Приоритеты экономии
Начните с приёмов из верхней части таблицы — они дают максимальный эффект при минимальных усилиях.
| Приём | Эффект | Сложность |
|---|---|---|
| Кэширование промптов | до −85% | Низкая |
| Контекст под 200k | −50% | Низкая |
| Сокращение контекста | −30–70% | Средняя |
| Разумный max_output_tokens | −10–30% | Низкая |
| Стрим с ранним abort | −20–40% | Средняя |
| Reasoning только когда нужно | −20–50% | Низкая |
| Саммаризация истории | −30–50% | Средняя |
1. Кэширование промптов
Если у вас длинный system prompt, набор инструкций или большой контекстный документ, которые повторяются от запроса к запросу, GrokAPI кэширует их автоматически. Чтение из кэша стоит $0.15 за 1M против $1.00 за обычный input — это примерно −85%. Идеально для RAG, агентных пайплайнов и приложений с фиксированным системным промптом.
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.XAI_API_KEY,
baseURL: "https://api.llm-gate.tech/v1",
});
// Keep the long, stable instructions at the START of every request.
// GrokAPI caches the shared prefix automatically, so repeated calls
// pay the cached rate for it instead of the full input rate.
const SYSTEM = "You are a senior code reviewer. <long, fixed instructions…>";
const response = await client.responses.create({
model: "grok-4.5",
instructions: SYSTEM, // stable, cacheable prefix
input: userQuestion, // the only part that changes
});2. Держите контекст под 200k токенов
У Grok 4.5 два ценовых режима. До 200k токенов действует обычная цена ($1.00 вход / $3.00 выход за 1M). Как только запрос переваливает за порог, включается long-context тариф — вдвое дороже ($2.00 / $6.00). Если задача умещается в короткий контекст, не раздувайте запрос до длинного режима ради удобства.
3. Сокращайте контекст
Каждый лишний токен во входе — деньги. Не грузите весь монорепозиторий, если задача касается одного файла. Не суйте всю историю переписки, если для ответа хватит последних двух сообщений. Прежде чем добавить документ в prompt, спросите: реально ли модель без него ответит хуже?
- Отправлять только релевантные файлы, а не весь проект
- Урезать длинные документы до нужных фрагментов
- Держать system prompt коротким и точным
- В RAG отдавать 3–5 лучших чанков, а не 20
- Копировать в prompt документацию «на всякий случай»
- Дублировать инструкции в system и user разом
- Оставлять в истории вырезки кода, которые уже неактуальны
4. Устанавливайте разумный max_output_tokens
max_output_tokens ограничивает размер ответа. Если поставить очень много, модель не потратит больше необходимого, но может решить, что «есть место», и написать лишнее. Ставьте столько, сколько правда нужно.
// One sentence — 60. A paragraph — 200. A mini-essay — 800.
const response = await client.responses.create({
model: "grok-4.5",
input: prompt,
max_output_tokens: 200,
});5. Стримьте ответ и отменяйте лишнее
Стрим (SSE) сам по себе не делает запрос дешевле, но даёт возможность оборвать генерацию, если ответ уже пошёл не туда. Особенно важно в чат-интерфейсах и агентах: можно детектить нежелательные паттерны на лету и закрывать соединение, не оплачивая бесполезное продолжение.
const stream = await client.responses.stream({
model: "grok-4.5",
input: prompt,
});
for await (const event of stream) {
if (shouldStop(event)) {
stream.controller.abort(); // stop paying for a useless continuation
break;
}
}6. Управляйте историей разговора
В долгих сессиях история копится: входные токены растут линейно, а счёт — квадратично, потому что каждый раз тарифицируется вся история. Раз в 10–20 сообщений сохраняйте короткое саммари и сбрасывайте историю — пусть новая сессия начинается с одного абзаца, а не с полотна.
// After ~10-20 turns, compress the history and start fresh.
const summary = await client.responses.create({
model: "grok-4.5",
instructions: "Summarize the conversation so far in 3-4 sentences.",
input: JSON.stringify(history),
max_output_tokens: 160,
});
history = [{ role: "system", content: summary.output_text }];7. Reasoning — только когда нужно
Grok 4.5 умеет тратить токены на внутренние рассуждения перед ответом, и они тоже платные (тарифицируются как output). Для задач, где хватит быстрого ответа — извлечение, классификация, шаблонная генерация — глубокое рассуждение не нужно. Оставьте его для планирования, сложной отладки и агентов, где качество вывода важнее секунд и центов.
8. Считайте расходы заранее
Стоимость одного запроса легко предсказать: (input_tokens × цена_входа + output_tokens × цена_выхода) ÷ 1 000 000. Прикиньте до запуска, а не после — так вы поймёте, есть ли смысл оптимизировать именно эту часть пайплайна.
cost = (input × $1.00 + output × $3.00) / 1,000,000
В GrokAPI это $0.0035 за запрос. Баланс $45 → около 12,857 запросов. По официальному тарифу тот же запрос стоил бы $0.0070.
Калькулятор нагрузки ↑