Документация
Как снизить расходы на ChatGPT API
Обновлено:
Расходы на ChatGPT API складываются из числа запросов, объёма входных и выходных токенов, выбранной модели и повторных вызовов. Ниже - как стартапу или продуктовой команде снизить их в разы, не теряя качества. Самый быстрый шаг - те же модели на 50% дешевле.
Посчитайте свою нагрузку
Калькулятор нагрузки
Выберите похожий сценарий или укажите свои значения.
Готовые примеры
Можно изменить любые цифры ниже
Через ChatGPT API: $11.25 в месяц. Экономия в месяц: $11.25.
Примерный бюджет
По официальным тарифам
в месяц
$22.50
Через ChatGPT API
в месяц
$11.25
Экономия в месяц
$11.25
Экономия за год
$135.00
Расчёт использует текущие цены выбранной модели без prompt caching. Он показывает порядок расходов, а не будущий счёт с точностью до цента.
Сначала соберите данные за семь дней
Общий счёт мало что объясняет. Записывайте расход рядом с функцией продукта: ответ поддержки, обработка документа, шаг агента или генерация отчёта. Через неделю станет видно, какая функция съедает бюджет и почему.
const startedAt = performance.now();
const res = await client.chat.completions.create({
model,
max_completion_tokens: maxCompletionTokens,
messages,
});
analytics.track("llm_request", {
feature: "support_reply",
model: res.model,
input_tokens: res.usage.prompt_tokens,
output_tokens: res.usage.completion_tokens,
latency_ms: Math.round(performance.now() - startedAt),
});Найдите главный источник расходов
Не переписывайте все prompts сразу. Отсортируйте функции продукта по расходам и начните с верхних строк. Таблица ниже помогает выбрать первый эксперимент.
| Что видно в данных | Где растёт счёт | Что проверить первым |
|---|---|---|
| Большие prompts в RAG или чате | input_tokens | Retrieval, история, prompt caching |
| Ответ длиннее, чем нужен интерфейсу | output_tokens | max_completion_tokens и формат ответа |
| Много вызовов на одно действие | retries или agent loop | Backoff, stop conditions, дубликаты |
| Одна модель обслуживает все задачи | цена каждого токена | Routing на более дешёвую модель |
Приоритеты оптимизации
Начните с подключения к ChatGPT API: это самый простой способ сразу снизить цену тех же токенов на 50%. Затем переходите к изменениям моделей, контекста, кеширования и логики повторных запросов.
| Приоритет | Что сделать | Сложность |
|---|---|---|
| 1 | Подключиться к ChatGPT API | Низкая |
| 2 | Подбирать модель под сложность задачи | Средняя |
| 3 | Сокращать повторяющийся контекст | Средняя |
| 4 | Настроить prompt caching | Тяжёлая |
| 5 | Ограничивать длину ответа | Средняя |
| 6 | Настроить retries и stop conditions | Тяжёлая |
Что оптимизировать
1. Подключитесь к ChatGPT API
Вместо официального OpenAI API подключите ChatGPT API. Вы продолжите использовать те же модели, промпты и объём токенов, но будете платить на 50% меньше. Для перехода достаточно получить наш API-ключ и заменить endpoint.
Подключиться к ChatGPT API2. Подбирайте модель под сложность задачи
Не отправляйте классификацию, извлечение полей и простые преобразования в самую дорогую модель. Проверяйте качество на собственном наборе примеров и используйте более мощную модель только для задач, где она действительно улучшает результат.
const model = task.requiresDeepReasoning
? "gpt-5.6-sol"
: "gpt-5.4-mini";
const res = await client.chat.completions.create({
model,
max_completion_tokens: task.requiresLongAnswer ? 1200 : 300,
messages,
});3. Сокращайте повторяющийся контекст
Не отправляйте всю историю диалога и все документы при каждом запросе. Оставляйте релевантные фрагменты, сводку предыдущих сообщений и инструкции, необходимые для текущего шага.
Без оптимизации
- ●Вся история
- ●Все документы
- ●Повторные инструкции
≈ 12 400 входных токенов
После оптимизации
- ●Краткая сводка
- ●3 релевантных фрагмента
- ●Закешированные инструкции
≈ 3 100 входных токенов
−75% входных токенов в этом примере
4. Используйте prompt caching
Держите стабильные инструкции в начале, а переменные данные — в конце. Для GPT-5.6 задайте prompt_cache_key и явную точку кеширования после повторяемого префикса длиной не менее 1 024 токенов. Учитывайте не только дешёвые cache reads, но и cache writes по ставке 1,25× от обычного ввода: кеш выгоден, когда префикс действительно переиспользуется.
const res = await client.chat.completions.create({
model: "gpt-5.6-sol",
max_completion_tokens: 500,
prompt_cache_key: "support-policy-v1",
prompt_cache_options: { mode: "explicit" },
messages: [
{
role: "system",
content: [{
type: "text",
text: policyAndInstructions,
prompt_cache_breakpoint: { mode: "explicit" },
}],
},
{ role: "user", content: relevantChunks.join("\n\n") },
],
});5. Ограничивайте длину ответа
Задавайте реалистичный max_completion_tokens и просите модель отвечать в нужном формате. Этот лимит включает видимые и reasoning-токены. Потоковая выдача улучшает время до первого токена, но сама по себе не уменьшает число оплачиваемых токенов.
const stream = await client.chat.completions.create({
model: "gpt-5.6-sol",
max_completion_tokens: 300, // cap, including reasoning tokens
stream: true,
stream_options: { include_usage: true },
messages: [
{ role: "system", content: "Return only compact JSON with fields summary and risk_level. No Markdown." },
...messages,
],
});
for await (const chunk of stream) {
if (chunk.usage) console.log(chunk.usage.completion_tokens); // billed output tokens
}6. Держите повторные запросы под контролем
Повторяйте только временные ошибки и используйте exponential backoff. Не перезапускайте успешный запрос из-за ошибки в интерфейсе или таймаута собственного сервиса.
Проверьте, что экономия не ухудшила качество
Меняйте по одному параметру и сравнивайте на одном и том же наборе запросов - иначе непонятно, что именно дало эффект. Хватит 30-100 типичных запросов одной дорогой функции.
- 1Соберите набор: 30-100 реальных запросов одной функции, без персональных данных.
- 2Замерьте на нём базовые значения метрик из таблицы ниже - это точка отсчёта.
- 3Измените ровно один параметр: endpoint, модель, объём контекста, caching или лимит ответа.
- 4Прогоните тот же набор и сравните метрики с базой.
| Метрика | Как измерить | Изменение принимается, если |
|---|---|---|
| Стоимость действия | Стоимость токенов ÷ число успешных действий | Снизилась заметно, а не на пару процентов |
| Качество | Доля ответов, прошедших вашу проверку или ревью | Осталась на уровне базы |
| Задержка | p95 времени ответа | Не выросла в пользовательских сценариях |
| Ошибки | Доля 4xx/5xx и повторных вызовов | Не выросла после изменения |
Частые вопросы о снижении расходов
Как быстро снизить расходы на ChatGPT API?
Первым делом подключитесь к ChatGPT API: это сразу снижает цену тех же токенов на 50% и требует только замены API-ключа и endpoint. Затем измерьте расход по функциям продукта, сократите контекст и ответы, настройте кеширование и направьте простые задачи на более дешёвую модель.
Уменьшает ли streaming стоимость запроса?
Нет. Streaming ускоряет появление первых токенов в интерфейсе, но тарификация зависит от фактически обработанных входных и созданных выходных токенов. Для экономии ограничивайте max_completion_tokens и формат ответа.
Когда prompt caching действительно экономит деньги?
Когда запросы многократно используют один и тот же длинный префикс. Для GPT-5.6 кешируемый префикс должен содержать не менее 1 024 токенов. Сравнивайте cached_tokens и cache_write_tokens: запись кеша стоит дороже обычного ввода, поэтому одноразовые или постоянно меняющиеся префиксы могут не дать экономии.
Как проверить, что оптимизация не ухудшила качество?
Сохраните 30–100 типичных запросов без персональных данных, измените только один параметр и сравните стоимость, качество, задержку и ошибки на одном наборе. Оставляйте изменение только при приемлемом качестве результата.
Следующий шаг
Начните с самого дешёвого шага: те же модели на 50% дешевле, без переписывания кода. Дальше сверьте цены и подберите модель под каждую задачу.