API GUIDE

Reasoning effort: low / medium / high / xhigh — гайд по выбору

Когда ставить low, когда medium, когда high и зачем вообще нужен xhigh. Реальные сценарии, замеры качества и стоимости через Codex Key.

·reasoning · api · optimization · gpt-5

Reasoning effort: low / medium / high / xhigh — гайд по выбору

Параметр reasoning_effort есть у всех моделей GPT-5 через Codex Key. Он не меняет тарифный коэффициент, но напрямую влияет на длину ответа, качество и latency. Разбираем, когда какой уровень включать.

TL;DR

УровеньЗадачиAvg output tokensAvg latencyКачество
lowКлассификация, короткий ответ, чат80-2000.5-1.5sБазовое
medium (default)Генерация кода, обычный chat, summarization300-8001.5-4sХорошее
highMulti-step reasoning, сложный код, ревью800-25004-12sВысокое
xhighИсследования, доказательства, deep analysis2000-800012-40sМаксимум

Как это работает

reasoning_effort управляет внутренней цепочкой рассуждений модели. На high и xhigh модель тратит больше токенов на "thinking" (часть из них видимая, часть нет, в зависимости от модели), прежде чем выдать финальный ответ.

Важно: вы платите за все токены reasoning, включая невидимые. На xhigh запрос может потребить в 5-10 раз больше токенов, чем low.

low — когда

  • Классификация: "это спам / не спам?", "intent: search / buy / help?"
  • Структурированный extract: имя, email, дата из текста
  • Короткий чат-ответ: "перефразируй вежливее", "переведи строку"
  • Routing: определи, в какой подсистеме обработать запрос
resp = client.chat.completions.create(
    model="gpt-5.4",
    messages=[{"role": "user", "content": "intent: 'хочу вернуть деньги'"}],
    extra_body={"reasoning_effort": "low"},
    max_tokens=50,
)

На таких задачах low даёт качество в пределах 1-2% от medium, но в 3-5 раз дешевле.

medium — когда

Default. Используйте, если не знаете, какой уровень подходит.

  • Генерация функций, тестов, миграций
  • Обычный chat с пользователем
  • Code-completion (но в IDE обычно используется low)
  • Summarization документа
  • RAG-ответы по контексту

high — когда

Включайте, если на medium модель не справляется:

  • Multi-file рефакторинг
  • Архитектурные решения с trade-off анализом
  • SQL-планирование с join'ами и подзапросами
  • Code-review с поиском edge-cases
  • Сложный debugging
resp = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": "найди race condition в этом коде: ..."}],
    extra_body={"reasoning_effort": "high"},
)

В нашей практике переход с medium на high даёт +10-25% точности на reasoning-задачах, ценой +50-100% токенов в ответе.

xhigh — когда

Редко. Реально полезен только для:

  • Исследовательские задачи: вывести доказательство, спроектировать алгоритм с нуля
  • Анализ длинных документов с поиском неочевидных связей
  • Decompilation, reverse engineering, security analysis
  • Multi-step планирование с глубиной 10+ шагов

Для большинства продакшен-сценариев xhigh — overkill. Если вы не видите ощутимого качественного скачка относительно high, оставайтесь на high.

Комбинация с моделью

reasoning_effort мультиплицирует эффект выбора модели:

Модель × EffortКогда
gpt-5.4 + lowДешёвый router, classifier
gpt-5.4 + mediumDefault для 80% задач
gpt-5.4 + highКогда нужно качество, но gpt-5.5 дорого
gpt-5.5 + mediumСложные задачи без перерасхода
gpt-5.5 + highHardcore reasoning, ревью архитектуры
gpt-5.5 + xhighТолько исследования

Реальные замеры на одной задаче

Задача: "найди и исправь утечку памяти в Go-сервисе на 800 строк".

КонфигурацияOutput tokensLatencyКорректность
gpt-5.4 + low1801.1s22%
gpt-5.4 + medium5203.4s58%
gpt-5.4 + high12408.7s74%
gpt-5.5 + medium6806.2s79%
gpt-5.5 + high185014.3s91%
gpt-5.5 + xhigh420031.2s93%

Видно: скачок high → xhigh даёт +2% точности при ×2.3 росте токенов. Не стоит.

Дешёвый паттерн: эскалация

def solve(task: str) -> str:
    for effort in ("low", "medium", "high"):
        resp = client.chat.completions.create(
            model="gpt-5.4",
            messages=[...],
            extra_body={"reasoning_effort": effort},
        )
        if validate(resp):    # ваша eval-функция
            return resp.choices[0].message.content
    # last resort
    resp = client.chat.completions.create(model="gpt-5.5", ...)
    return resp.choices[0].message.content

Этот паттерн снижает средний счёт в 2-3 раза vs всегда high.

Итог

  • low для рутины и роутинга
  • medium для дефолта
  • high когда medium явно недотягивает
  • xhigh только для исследований

Замеряйте через свои evals. Не верьте интуиции — reasoning_effort часто переоценивают.