# Как экономить токены в GPT, Claude и Gemini через единый API

Режим рассуждений позволяет модели дольше обрабатывать задачу перед ответом, что повышает качество, но увеличивает расход токенов и стоимость запроса. Поэтому важно уметь управлять глубиной reasoning и не использовать максимальный уровень там, где достаточно базового.

В этой статье покажем, **как управлять глубиной рассуждений у GPT, Claude и Gemini** **через единый API [RouterAI](/ "RouterAI")**, какие параметры поддерживает каждый провайдер и сколько токенов и рублей стоит каждый уровень reasoning.

## Что такое reasoning

Обычная модель отвечает сразу, одним проходом. Reasoning-модель сначала генерирует внутреннюю цепочку рассуждений, которую вы не видите в финальном ответе, а уже потом формулирует итоговый текст.

Эта дополнительная стадия влияет на качество выполнения задач с несколькими шагами: математика, отладка кода, планирование сложного действия. Растет и цена, так как черновик вам все равно приходится оплачивать.

Разберемся, какие параметры отвечают за глубину рассуждений у каждого провайдера и как настроить их через единый API, не переплачивая за reasoning там, где он не нужен.

## Как устроен режим рассуждений у GPT, Claude и Gemini

Идея thinking ИИ у всех одна, но возможность влиять на внутренние рассуждения реализована по-разному.

<table markdown="0">
<colgroup>
<col width="156">
<col width="195">
<col width="346">
</colgroup>
<tbody>
<tr>
<td>
<p dir="ltr">Провайдер</p>
</td>
<td>
<p dir="ltr">Параметр</p>
</td>
<td>
<p dir="ltr">Значения</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">OpenAI (GPT-5.x)</p>
</td>
<td>
<p dir="ltr">reasoning_effort</p>
</td>
<td>
<p dir="ltr">зависит от модели: minimal, low, medium, high, <br>у части моделей еще none, xhigh, max</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">Anthropic (Claude Opus 5, Sonnet 5)</p>
</td>
<td>
<p dir="ltr">output_config.effort</p>
</td>
<td>
<p dir="ltr">low, medium, high, xhigh, max</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">Google (Gemini 3)</p>
</td>
<td>
<p dir="ltr">thinking_level</p>
</td>
<td>
<p dir="ltr">LOW, HIGH</p>
</td>
</tr>
</tbody>
</table>

Главное отличие заключается в подходе к настройке. 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](/ "RouterAI") предоставляет единый API для OpenAI, Anthropic и Google моделей. При этом каждая из них поддерживает собственные параметры управления reasoning. Поэтому возникает вопрос, как передать нужную настройку, не переписывая код под каждого провайдера.

Для этого RouterAI поддерживает два подхода:&nbsp;

- можно использовать единый параметр reasoning, который автоматически преобразуется в формат нужной модели,&nbsp;

- либо передавать нативные параметры провайдера, если они уже поддерживаются API.

Ниже рассмотрим оба варианта. Для всех экспериментов использовался один и тот же запрос, чтобы результаты можно было корректно сравнивать.

## Способ 1: единый параметр reasoning

Параметр `reasoning` передается через `extra_body`, потому что он не входит в стандартную спецификацию OpenAI API. RouterAI автоматически преобразует унифицированный параметр в формат, который ожидает выбранный провайдер. Проверим, как это работает на примере **Claude Opus 5**.

**Подготовка.&nbsp;**

1. Убедитесь, что установлена библиотека openai:

`pip install openai`

1. Создайте переменную окружения с вашим 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-ключ.

1. Отправим один и тот же запрос дважды с уровнями `low`&nbsp; и `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}")`

**Результаты:**

![Результаты тестирования API RouterAI: управление глубиной рассуждений Claude Opus 5 через параметр effort. При low reasoning_tokens=0, при high=25, completion_tokens растут с 956 до 980. Демонстрация экономии токенов.](https://b51bc417-3ee0-451a-a83b-8a681d027a96.selstorage.ru/public/e7834e48fc318d03d21c9c4476b53705.png)

<table markdown="0">
<colgroup>
<col width="182">
<col width="262">
<col width="248">
</colgroup>
<tbody>
<tr>
<td>
<p dir="ltr">Уровень effort</p>
</td>
<td>
<p dir="ltr">completion_tokens</p>
</td>
<td>
<p dir="ltr">reasoning_tokens</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">low</p>
</td>
<td>
<p dir="ltr">956</p>
</td>
<td>
<p dir="ltr">0</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">high</p>
</td>
<td>
<p dir="ltr">980</p>
</td>
<td>
<p dir="ltr">25</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">Разница</p>
</td>
<td>
<p dir="ltr">+24</p>
</td>
<td>
<p dir="ltr">+25</p>
</td>
</tr>
</tbody>
</table>

Это подтверждает, что параметр 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.

**Результаты:**

<table markdown="0">
<colgroup>
<col width="180">
<col width="259">
<col width="245">
</colgroup>
<tbody>
<tr>
<td>
<p dir="ltr">Уровень effort</p>
</td>
<td>
<p dir="ltr">completion_tokens</p>
</td>
<td>
<p dir="ltr">reasoning_tokens</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">low</p>
</td>
<td>
<p dir="ltr">2156</p>
</td>
<td>
<p dir="ltr">978</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">high</p>
</td>
<td>
<p dir="ltr">2593</p>
</td>
<td>
<p dir="ltr">1186</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">Разница</p>
</td>
<td>
<p dir="ltr">+437</p>
</td>
<td>
<p dir="ltr">+208</p>
</td>
</tr>
</tbody>
</table>

При повышении с low до high количество токенов рассуждений выросло на 208, а общее число выходных токенов на 437. Это показывает, что RouterAI успешно транслирует единый параметр reasoning и для моделей Gemini.

Уже на этом этапе видно, где закладывается перерасход: у Gemini reasoning включeн даже на low, поэтому для простых задач стоит сразу проверять, не переплачиваете ли вы за рассуждения, которые вам не нужны

## Способ 2: нативные параметры провайдеров&nbsp;

### OpenAI reasoning\_effort

Для моделей OpenAI RouterAI поддерживает и нативный параметр `reasoning_effort`. Если вы уже используете OpenAI-совместимый API, этот вариант позволяет передавать настройки `reasoning` без изменений. Мы протестировали его на модели `openai/gpt-5.6-terra`.

Уточните точный идентификатор модели в [каталоге RouterAI](/models "каталоге 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`

**Результаты:**

![Результаты управления глубиной рассуждений GPT-5.6-terra через RouterAI с параметром reasoning_effort. При low reasoning_tokens=0, completion_tokens=589. При high reasoning_tokens=31, completion_tokens=474. Разница: -35 completion, +31 reasoning — модель сжимает ответ за счёт внутренних рассуждений.](https://b51bc417-3ee0-451a-a83b-8a681d027a96.selstorage.ru/public/d427d86c1edebbaa394f90f7bc0ea201.png)

<table markdown="0">
<colgroup>
<col width="241">
<col width="180">
<col width="274">
</colgroup>
<tbody>
<tr>
<td>
<p dir="ltr">Уровень reasoning_effort</p>
</td>
<td>
<p dir="ltr">completion_tokens</p>
</td>
<td>
<p dir="ltr">reasoning_tokens</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">low</p>
</td>
<td>
<p dir="ltr">509</p>
</td>
<td>
<p dir="ltr">0</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">high</p>
</td>
<td>
<p dir="ltr">474</p>
</td>
<td>
<p dir="ltr">31</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">Разница</p>
</td>
<td>
<p dir="ltr">–35</p>
</td>
<td>
<p dir="ltr">+31</p>
</td>
</tr>
</tbody>
</table>

При 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 и теми же заголовками.

**Результаты:**

![Результаты управления глубиной рассуждений Claude Opus 5 через нативный Messages API RouterAI с параметром output_config.effort. При low: completion=981, reasoning=0. При high: completion=965, reasoning=28. Разница: -16 completion, +28 reasoning — модель тратит токены на внутренние рассуждения, немного сокращая финальный ответ.](https://b51bc417-3ee0-451a-a83b-8a681d027a96.selstorage.ru/public/18faaff68d8e213d9933260a1cb3d676.png)

**&nbsp;**

<table markdown="0">
<colgroup>
<col width="241">
<col width="180">
<col width="274">
</colgroup>
<tbody>
<tr>
<td>
<p dir="ltr">Уровень reasoning_effort</p>
</td>
<td>
<p dir="ltr">completion_tokens</p>
</td>
<td>
<p dir="ltr">reasoning_tokens</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">Разница</p>
</td>
<td>
<p dir="ltr">–16</p>
</td>
<td>
<p dir="ltr">+28</p>
</td>
</tr>
</tbody>
</table>

Этот способ пригодится, если по каким-либо причинам унифицированный параметр `reasoning` не подходит вашему окружению.

## Сводка результатов по трем провайдерам

Мы прогнали один и тот же запрос (сравнение микросервисной и монолитной архитектур) через три модели с уровнями `low` и `high`. Вот что получилось:

<table markdown="0">
<colgroup>
<col width="110">
<col width="105">
<col width="137">
<col width="144">
<col width="69">
<col width="70">
<col width="102">
</colgroup>
<tbody>
<tr>
<td>
<p dir="ltr">Провайдер</p>
</td>
<td>
<p dir="ltr">Модель</p>
</td>
<td>
<p dir="ltr">Способ</p>
</td>
<td>
<p dir="ltr">Показатель</p>
</td>
<td>
<p dir="ltr">low</p>
</td>
<td>
<p dir="ltr">high</p>
</td>
<td>
<p dir="ltr">Разница</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">Anthropic</p>
</td>
<td>
<p dir="ltr">Claude Opus 5</p>
</td>
<td>
<p dir="ltr">единый reasoning</p>
</td>
<td>
<p dir="ltr">reasoning_tokens</p>
</td>
<td>
<p dir="ltr">0</p>
</td>
<td>
<p dir="ltr">25</p>
</td>
<td>
<p dir="ltr">+25</p>
</td>
</tr>
<tr>
<td colspan="3">&nbsp;</td>
<td>
<p dir="ltr">completion_tokens</p>
</td>
<td>
<p dir="ltr">956</p>
</td>
<td>
<p dir="ltr">980</p>
</td>
<td>
<p dir="ltr">+24</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">OpenAI</p>
</td>
<td>
<p dir="ltr">GPT-5.6-terra</p>
</td>
<td>
<p dir="ltr">родной reasoning_effort</p>
</td>
<td>
<p dir="ltr">reasoning_tokens</p>
</td>
<td>
<p dir="ltr">0</p>
</td>
<td>
<p dir="ltr">31</p>
</td>
<td>
<p dir="ltr">+31</p>
</td>
</tr>
<tr>
<td colspan="3">&nbsp;</td>
<td>
<p dir="ltr">completion_tokens</p>
</td>
<td>
<p dir="ltr">509</p>
</td>
<td>
<p dir="ltr">474</p>
</td>
<td>
<p dir="ltr">–35</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">Google</p>
</td>
<td>
<p dir="ltr">Gemini 3 Pro</p>
</td>
<td>
<p dir="ltr">единый reasoning</p>
</td>
<td>
<p dir="ltr">reasoning_tokens</p>
</td>
<td>
<p dir="ltr">978</p>
</td>
<td>
<p dir="ltr">1186</p>
</td>
<td>
<p dir="ltr">+208</p>
</td>
</tr>
<tr>
<td colspan="3">&nbsp;</td>
<td>
<p dir="ltr">completion_tokens</p>
</td>
<td>
<p dir="ltr">2156</p>
</td>
<td>
<p dir="ltr">2593</p>
</td>
<td>
<p dir="ltr">+437</p>
</td>
</tr>
</tbody>
</table>

**Что это значит:**

- У всех трех провайдеров растет число токенов рассуждений (`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` действительно отражается в расходе токенов, а значит, этот параметр можно использовать для осознанного баланса между качеством ответа и стоимостью запроса.

## Сколько это стоит в рублях

Мы прогнали тестовый запрос через три модели и зафиксировали реальную стоимость.&nbsp;

<table markdown="0">
<colgroup>
<col width="125">
<col width="110">
<col width="165">
<col width="175">
<col width="128">
</colgroup>
<tbody>
<tr>
<td>
<p dir="ltr">Модель</p>
</td>
<td>
<p dir="ltr">Уровень</p>
</td>
<td>
<p dir="ltr">reasoning_tokens</p>
</td>
<td>
<p dir="ltr">completion_tokens</p>
</td>
<td>
<p dir="ltr">Стоимость, ₽</p>
</td>
</tr>
<tr>
<td rowspan="2">
<p dir="ltr">Claude Opus 5</p>
</td>
<td>
<p dir="ltr">low</p>
</td>
<td>
<p dir="ltr">0</p>
</td>
<td>
<p dir="ltr">956</p>
</td>
<td>
<p dir="ltr">2,52 ₽</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">high</p>
</td>
<td>
<p dir="ltr">25</p>
</td>
<td>
<p dir="ltr">980</p>
</td>
<td>
<p dir="ltr">2,58 ₽</p>
</td>
</tr>
<tr>
<td rowspan="2">
<p dir="ltr">GPT-5.6-terra</p>
</td>
<td>
<p dir="ltr">low</p>
</td>
<td>
<p dir="ltr">0</p>
</td>
<td>
<p dir="ltr">509</p>
</td>
<td>
<p dir="ltr">0,40 ₽</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">high</p>
</td>
<td>
<p dir="ltr">31</p>
</td>
<td>
<p dir="ltr">474</p>
</td>
<td>
<p dir="ltr">0,37 ₽</p>
</td>
</tr>
<tr>
<td rowspan="2">
<p dir="ltr">Gemini 3 Pro</p>
</td>
<td>
<p dir="ltr">low</p>
</td>
<td>
<p dir="ltr">978</p>
</td>
<td>
<p dir="ltr">2156</p>
</td>
<td>
<p dir="ltr">2,32 ₽</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">high</p>
</td>
<td>
<p dir="ltr">1186</p>
</td>
<td>
<p dir="ltr">2593</p>
</td>
<td>
<p dir="ltr">2,79 ₽</p>
</td>
</tr>
</tbody>
</table>

Цены округлены до копеек, рассчитаны по тарифам 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-токенов и стоимость запроса. На практике у большинства моделей доступны и промежуточные уровни, поэтому настройку лучше выбирать исходя из сложности задачи.

<table markdown="0">
<colgroup>
<col width="476">
<col width="222">
</colgroup>
<tbody>
<tr>
<td>
<p dir="ltr">Тип задачи</p>
</td>
<td>
<p dir="ltr">Рекомендуемый уровень</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">Простая классификация, извлечение данных, быстрые уточняющие вопросы</p>
</td>
<td>
<p dir="ltr">none или low</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">Генерация текстов, анализ документов, типовые рабочие задачи</p>
</td>
<td>
<p dir="ltr">medium</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">Кодогенерация, агентные сценарии, многошаговые вычисления</p>
</td>
<td>
<p dir="ltr">high</p>
</td>
</tr>
<tr>
<td>
<p dir="ltr">Критически важные задачи, где качество важнее стоимости</p>
</td>
<td>
<p dir="ltr">xhigh (если поддерживается моделью)</p>
</td>
</tr>
</tbody>
</table>

Если вы тестируете задачу на OpenAI или Anthropic и не уверены, какой уровень выбрать, начните с medium, это золотая середина между ценой и качеством. Для Gemini 3, где промежуточного значения нет, начинайте с HIGH и понижайте до LOW, если результат избыточен для вашей задачи.&nbsp;

Универсального уровня не существует. Чем сложнее задача и выше цена ошибки, тем больше смысла увеличивать 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.

&nbsp;
