Как экономить токены в GPT, Claude и Gemini через единый API
- Что такое reasoning
- Как устроен режим рассуждений у GPT, Claude и Gemini
- Как работает глубина рассуждений через RouterAI
- Способ 1: единый параметр reasoning
- Способ 2: нативные параметры провайдеров
- Сводка результатов по трем провайдерам
- Сколько это стоит в рублях
- Как выбрать уровень reasoning
- Чек-лист перед продакшном
- Итог
Режим рассуждений позволяет модели дольше обрабатывать задачу перед ответом, что повышает качество, но увеличивает расход токенов и стоимость запроса. Поэтому важно уметь управлять глубиной reasoning и не использовать максимальный уровень там, где достаточно базового.
В этой статье покажем, как управлять глубиной рассуждений у GPT, Claude и Gemini через единый API RouterAI, какие параметры поддерживает каждый провайдер и сколько токенов и рублей стоит каждый уровень reasoning.
Что такое reasoning
Обычная модель отвечает сразу, одним проходом. Reasoning-модель сначала генерирует внутреннюю цепочку рассуждений, которую вы не видите в финальном ответе, а уже потом формулирует итоговый текст.
Эта дополнительная стадия влияет на качество выполнения задач с несколькими шагами: математика, отладка кода, планирование сложного действия. Растет и цена, так как черновик вам все равно приходится оплачивать.
Разберемся, какие параметры отвечают за глубину рассуждений у каждого провайдера и как настроить их через единый API, не переплачивая за reasoning там, где он не нужен.
Как устроен режим рассуждений у GPT, Claude и Gemini
Идея thinking ИИ у всех одна, но возможность влиять на внутренние рассуждения реализована по-разному.
|
Провайдер |
Параметр |
Значения |
|
OpenAI (GPT-5.x) |
reasoning_effort |
зависит от модели: minimal, low, medium, high, |
|
Anthropic (Claude Opus 5, Sonnet 5) |
output_config.effort |
low, medium, high, xhigh, max |
|
Google (Gemini 3) |
thinking_level |
LOW, HIGH |
Главное отличие заключается в подходе к настройке. OpenAI, Anthropic и Google предлагают выбрать один из фиксированных уровней reasoning. Эти уровни нельзя сравнивать между собой напрямую. Например, значение high у OpenAI не означает тот же объем внутренних рассуждений, что high у Anthropic или Gemini. Каждый провайдер калибрует уровни по-своему.
Есть и особенности отдельных моделей. Например, у Claude Opus 5 по умолчанию уже используется уровень high. Поэтому без явной настройки вы сразу расходуете ресурсы на глубокие рассуждения. Кроме того, на уровнях xhigh и max попытка полностью отключить reasoning завершится ошибкой 400, для этих режимов внутренние рассуждения обязательны. Это первое, что стоит проверить, если счeт за Claude Opus 5 кажется завышенным. Без явной настройки эффорта вы платите за максимальный reasoning даже в задачах, где хватило бы low
Как работает глубина рассуждений через RouterAI
RouterAI предоставляет единый API для OpenAI, Anthropic и Google моделей. При этом каждая из них поддерживает собственные параметры управления reasoning. Поэтому возникает вопрос, как передать нужную настройку, не переписывая код под каждого провайдера.
Для этого RouterAI поддерживает два подхода:
-
можно использовать единый параметр reasoning, который автоматически преобразуется в формат нужной модели,
-
либо передавать нативные параметры провайдера, если они уже поддерживаются API.
Ниже рассмотрим оба варианта. Для всех экспериментов использовался один и тот же запрос, чтобы результаты можно было корректно сравнивать.
Способ 1: единый параметр reasoning
Параметр reasoning передается через extra_body, потому что он не входит в стандартную спецификацию OpenAI API. RouterAI автоматически преобразует унифицированный параметр в формат, который ожидает выбранный провайдер. Проверим, как это работает на примере Claude Opus 5.
Подготовка.
-
Убедитесь, что установлена библиотека openai:
pip install openai
-
Создайте переменную окружения с вашим API-ключом RouterA.
-
На macOS / Linux:
export ROUTERAI_API_KEY="ваш_ключ_сюда"
-
На Windows:
set ROUTERAI_API_KEY=ваш_ключ_сюда
-
На Windows PowerShell:
$env:ROUTERAI_API_KEY="ваш_ключ_сюда"
Если не хотите возиться с переменными, просто замените os.getenv("ROUTERAI_API_KEY") в коде на ваш API-ключ.
-
Отправим один и тот же запрос дважды с уровнями
lowиhighи сравним количествоcompletion_tokensиreasoning_tokens.
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("ROUTERAI_API_KEY"),
base_url="https://routerai.ru/api/v1",
)
prompt = """
Сравни микросервисную и монолитную архитектуры для стартапа из трех разработчиков.
Учитывай: скорость разработки, сложность поддержки, стоимость инфраструктуры,
порог входа, масштабируемость. Дай итоговую рекомендацию.
"""
def ask_claude(effort):
response = client.chat.completions.create(
model="anthropic/claude-opus-5",
messages=[{"role": "user", "content": prompt}],
extra_body={"reasoning": {"effort": effort}}
)
return response
print("=== Запрос с effort='low' ===")
r_low = ask_claude("low")
print(r_low.choices[0].message.content[:300] + "...")
print(f"completion_tokens: {r_low.usage.completion_tokens}")
if hasattr(r_low.usage, 'completion_tokens_details'):
print(f"reasoning_tokens: {r_low.usage.completion_tokens_details.reasoning_tokens}")
print("\n=== Запрос с effort='high' ===")
r_high = ask_claude("high")
print(r_high.choices[0].message.content[:300] + "...")
print(f"completion_tokens: {r_high.usage.completion_tokens}")
if hasattr(r_high.usage, 'completion_tokens_details'):
print(f"reasoning_tokens: {r_high.usage.completion_tokens_details.reasoning_tokens}")
print("\n=== Разница ===")
print(f"completion_tokens: {r_high.usage.completion_tokens - r_low.usage.completion_tokens}")
if hasattr(r_high.usage, 'completion_tokens_details') and hasattr(r_low.usage, 'completion_tokens_details'):
print(f"reasoning_tokens: {r_high.usage.completion_tokens_details.reasoning_tokens - r_low.usage.completion_tokens_details.reasoning_tokens}")
Результаты:

|
Уровень effort |
completion_tokens |
reasoning_tokens |
|
low |
956 |
0 |
|
high |
980 |
25 |
|
Разница |
+24 |
+25 |
Это подтверждает, что параметр reasoning работает через RouterAI и управляет глубиной рассуждений. При low модель не тратит токены на внутренний черновик, при high начинает использовать внутренние рассуждения.
Протестируем этот же подход на Gemini
Для Gemini у Google есть два механизма: thinking_level (Gemini 3) и thinking_budget (Gemini 2.5). Мы проверили управление глубиной рассуждений для Gemini через RouterAI, используя способ 1 (единый параметр reasoning в extra_body). Для теста была выбрана модель google/gemini-3-pro и тот же аналитический запрос, что и для Claude и GPT.
Результаты:
|
Уровень effort |
completion_tokens |
reasoning_tokens |
|
low |
2156 |
978 |
|
high |
2593 |
1186 |
|
Разница |
+437 |
+208 |
При повышении с low до high количество токенов рассуждений выросло на 208, а общее число выходных токенов на 437. Это показывает, что RouterAI успешно транслирует единый параметр reasoning и для моделей Gemini.
Уже на этом этапе видно, где закладывается перерасход: у Gemini reasoning включeн даже на low, поэтому для простых задач стоит сразу проверять, не переплачиваете ли вы за рассуждения, которые вам не нужны
Способ 2: нативные параметры провайдеров
OpenAI reasoning_effort
Для моделей OpenAI RouterAI поддерживает и нативный параметр reasoning_effort. Если вы уже используете OpenAI-совместимый API, этот вариант позволяет передавать настройки reasoning без изменений. Мы протестировали его на модели openai/gpt-5.6-terra.
Уточните точный идентификатор модели в каталоге RouterAI перед запуском.
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("ROUTERAI_API_KEY"),
base_url="https://routerai.ru/api/v1",
)
prompt = """ ... """ # тот же промпт, что и в способе 1
def ask_gpt(effort):
response = client.chat.completions.create(
model="openai/gpt-5.6-terra",
messages=[{"role": "user", "content": prompt}],
reasoning_effort=effort
)
return response
# ... аналогичный вывод, как в способе 1
Результаты:

|
Уровень reasoning_effort |
completion_tokens |
reasoning_tokens |
|
low |
509 |
0 |
|
high |
474 |
31 |
|
Разница |
–35 |
+31 |
При low модель не использует рассуждения (0 токенов), при high тратит 31 токен на внутренний черновик. Общее число выходных токенов при этом даже снизилось, модель сжала ответ, потому что уже продумала его внутри.
Anthropic: output_config.effort
Если способ 1 не сработал для Claude, у вас остается альтернативный способ, обратиться к нативному Anthropic-совместимому эндпоинту /api/v1/messages. Логика та же, раз параметр effort часть родного формата Anthropic Messages API, он и должен передаваться через родной эндпоинт.
Пример через curl:
curl https://routerai.ru/api/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: $ROUTERAI_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "anthropic/claude-opus-5",
"max_tokens": 1024,
"output_config": {"effort": "low"},
"messages": [
{"role": "user", "content": "Сравни микросервисную и монолитную архитектуры для стартапа из трех разработчиков. Учитывай: скорость разработки, сложность поддержки, стоимость инфраструктуры, порог входа, масштабируемость. Дай итоговую рекомендацию."}
]
}'
То же самое можно отправить через Python с библиотекой requests и теми же заголовками.
Результаты:

|
Уровень reasoning_effort |
completion_tokens |
reasoning_tokens |
|
Разница |
–16 |
+28 |
Этот способ пригодится, если по каким-либо причинам унифицированный параметр reasoning не подходит вашему окружению.
Сводка результатов по трем провайдерам
Мы прогнали один и тот же запрос (сравнение микросервисной и монолитной архитектур) через три модели с уровнями low и high. Вот что получилось:
|
Провайдер |
Модель |
Способ |
Показатель |
low |
high |
Разница |
|
Anthropic |
Claude Opus 5 |
единый reasoning |
reasoning_tokens |
0 |
25 |
+25 |
|
completion_tokens |
956 |
980 |
+24 |
|||
|
OpenAI |
GPT-5.6-terra |
родной reasoning_effort |
reasoning_tokens |
0 |
31 |
+31 |
|
completion_tokens |
509 |
474 |
–35 |
|||
|
|
Gemini 3 Pro |
единый reasoning |
reasoning_tokens |
978 |
1186 |
+208 |
|
completion_tokens |
2156 |
2593 |
+437 |
|||
Что это значит:
-
У всех трех провайдеров растет число токенов рассуждений (
reasoning_tokens) при повышении уровня effort. -
У Claude и GPT при
lowрежим рассуждений полностью выключен (0 токенов), приhighвключается. Это особенно наглядно показывает управление. -
У Gemini
reasoning_tokensвыросли на 208, аcompletion_tokensна 437. Это говорит о том, что модель глубже прорабатывает ответ.
При этом рост reasoning_tokens не означает, что итоговый ответ станет длиннее. Например, в тесте с GPT-5.6-terra количество токенов рассуждений увеличилось, а число completion_tokens даже снизилось. Это показывает, что параметр effort управляет объемом внутренних вычислений модели, а не длиной финального ответа. Поэтому, если нужен лаконичный ответ, это лучше отдельно указать в промпте, например: «отвечай по существу, без длинных вступлений».
Управление reasoning через RouterAI работает для всех трех провайдеров. Разница между уровнями low и high действительно отражается в расходе токенов, а значит, этот параметр можно использовать для осознанного баланса между качеством ответа и стоимостью запроса.
Сколько это стоит в рублях
Мы прогнали тестовый запрос через три модели и зафиксировали реальную стоимость.
|
Модель |
Уровень |
reasoning_tokens |
completion_tokens |
Стоимость, ₽ |
|
Claude Opus 5 |
low |
0 |
956 |
2,52 ₽ |
|
high |
25 |
980 |
2,58 ₽ |
|
|
GPT-5.6-terra |
low |
0 |
509 |
0,40 ₽ |
|
high |
31 |
474 |
0,37 ₽ |
|
|
Gemini 3 Pro |
low |
978 |
2156 |
2,32 ₽ |
|
high |
1186 |
2593 |
2,79 ₽ |
Цены округлены до копеек, рассчитаны по тарифам RouterAI и курсу на момент тестирования.
Что мы видим:
-
У Claude Opus 5 включение режима рассуждений (high вместо low) добавило к стоимости 0,06 ₽, при этом появились
reasoning_tokens. -
У GPT-5.6-terra переход с
lowнаhighдаже снизил стоимость с 0,40 ₽ до 0,37 ₽, потому что модель сжала финальный ответ, хотя внутри подумала (31 токен). -
У Gemini разница составила 0,47 ₽ (2,32 → 2,79 ₽). Модель выполнила больше внутренних рассуждений.
Разница в рублях между low и high на одном запросе копейки или единицы процентов от стоимости. Но на масштабе тысяч запросов в день даже такая небольшая разница превращается в заметную сумму в конце месяца. А если сравнивать low и xhigh (для OpenAI и Anthropic), разница в стоимости по документации может доходить до 3–5 раз, именно поэтому на сложных задачах имеет смысл поднимать уровень, а на простых опускать.
Как выбрать уровень reasoning
В наших тестах мы сравнивали только два крайних значения (low и high), чтобы наглядно показать, как меняются количество reasoning-токенов и стоимость запроса. На практике у большинства моделей доступны и промежуточные уровни, поэтому настройку лучше выбирать исходя из сложности задачи.
|
Тип задачи |
Рекомендуемый уровень |
|
Простая классификация, извлечение данных, быстрые уточняющие вопросы |
none или low |
|
Генерация текстов, анализ документов, типовые рабочие задачи |
medium |
|
Кодогенерация, агентные сценарии, многошаговые вычисления |
high |
|
Критически важные задачи, где качество важнее стоимости |
xhigh (если поддерживается моделью) |
Если вы тестируете задачу на OpenAI или Anthropic и не уверены, какой уровень выбрать, начните с medium, это золотая середина между ценой и качеством. Для Gemini 3, где промежуточного значения нет, начинайте с HIGH и понижайте до LOW, если результат избыточен для вашей задачи.
Универсального уровня не существует. Чем сложнее задача и выше цена ошибки, тем больше смысла увеличивать effort. Для простых запросов дополнительные reasoning-токены чаще всего не окупаются, поэтому разумнее использовать минимальный уровень или полностью отключать рассуждения, если модель это поддерживает.
Чек-лист перед продакшном
-
Все сравнения выполнялись на одном и том же запросе при изменении только уровня reasoning, что позволяет корректно сравнивать расход токенов и стоимость.
-
Параметр
reasoning_effortилиeffortуказан явно, а не оставлен на значения по умолчанию, которые отличаются у разных моделей. -
Для Anthropic учтено ограничение: на уровнях
xhighиmaxнельзя отключить reasoning – API вернет ошибку 400. -
reasoning_tokensуже входят в общее количествоcompletion_tokensи не тарифицируются отдельно. -
Если нужен короткий ответ, задайте это отдельно в промпте. Параметр effort на длину итогового текста напрямую не влияет.
Итог
Управление глубиной reasoning через RouterAI работает для всех трех семейств моделей (GPT, Claude и Gemini). При изменении уровня рассуждений меняется количество reasoning_tokens, а вместе с ним и стоимость обработки запроса.
При этом увеличение effort не означает автоматически более длинный ответ. Модель может потратить больше токенов на внутренние рассуждения и одновременно сократить финальный текст, как это произошло в тесте с GPT-5.6-terra.
Не стоит оставлять настройки reasoning на значениях по умолчанию. Для простых задач достаточно минимального уровня или полного отключения reasoning, а для сложной аналитики, программирования и многошаговых рассуждений имеет смысл повышать effort. Такой подход позволяет не тратить лишние токены на простые запросы и тем самым экономить на Claude, GPT, и Gemini через единый API.