Reasoning
Reasoning-модели перед ответом «думают»: генерируют внутренние рассуждения, которые не входят в основной текст, но тарифицируются как вывод. Глубина рассуждений регулируется уровнем усилия (effort): выше уровень, точнее ответ на сложных задачах, но дольше ожидание и дороже запрос.
Проверить модель можно по GET /v1/models: в capabilities.features есть reasoning. См. Модели.
Chat Completions
Заголовок раздела «Chat Completions»Уровень задаётся полем reasoning_effort.
curl https://api.waibee.com/v1/chat/completions \ -H "Authorization: Bearer $WAIBEE_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "openai/gpt-5.4-mini", "reasoning_effort": "high", "messages": [{ "role": "user", "content": "Сколько будет 17*23? Ответь числом." }] }'| Значение | Смысл |
|---|---|
none |
Рассуждения выключены |
minimal |
Минимум, для простых задач |
low |
Немного |
medium |
Разумный компромисс |
high |
Много, для сложных задач |
xhigh |
Максимум на этом эндпоинте |
Набор доступных уровней зависит от модели: неизвестное ей значение может быть проигнорировано или сведено к ближайшему поддерживаемому. Если поле не передано, применяется поведение модели по умолчанию.
Значение max на /v1/chat/completions недоступно и возвращает feature_not_supported (400):
{ "error": { "code": "feature_not_supported", "message": "Effort 'max' is not supported on /v1/chat/completions. Use 'xhigh', or call /v1/messages for 'max'." } }Клиенты, которые вместо строки присылают объект reasoning, тоже работают: роутер берёт из него effort. Остальные поля объекта могут не примениться, поэтому предсказуемее указывать reasoning_effort.
Messages
Заголовок раздела «Messages»На POST /v1/messages уровень задаётся полем effort внутри output_config. Здесь доступно и значение max.
curl https://api.waibee.com/v1/messages \ -H "x-api-key: $WAIBEE_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "anthropic/claude-sonnet-5", "max_tokens": 2048, "output_config": { "effort": "high" }, "messages": [{ "role": "user", "content": "Какова вероятность вынуть подряд два красных шара из 5 красных, 3 синих и 2 белых без возврата?" }] }'Рассуждения приходят отдельным блоком thinking перед текстом ответа:
{ "type": "message", "content": [ { "type": "thinking", "thinking": "..." }, { "type": "text", "text": "..." } ], "usage": { "input_tokens": 65, "output_tokens": 137, "output_tokens_details": { "thinking_tokens": 30 } }}Поле thinking в запросе (конфигурация расширенного мышления Anthropic) также проходит к модели без изменений, но у новых моделей Claude предпочтительнее output_config.effort.
Рассуждения в ответе Chat Completions
Заголовок раздела «Рассуждения в ответе Chat Completions»Формат зависит от модели, поэтому в ответе может быть два поля:
| Поле | Что содержит |
|---|---|
reasoning |
Текст рассуждений строкой, если модель отдаёт его открыто |
reasoning_details |
Массив блоков в формате модели: reasoning.text с текстом, reasoning.summary с пересказом рассуждений либо reasoning.encrypted с зашифрованным блобом |
Часть семейств моделей не раскрывает рассуждения и присылает только зашифрованные блоки: их нельзя прочитать, но можно передать обратно в следующем запросе, если клиент это поддерживает. Открытый текст выглядит так:
{ "message": { "role": "assistant", "content": "391", "reasoning": "17 * 20 = 340, плюс 17 * 3 = 51, итого 391.", "reasoning_details": [{ "type": "reasoning.text", "text": "...", "index": 0 }] }}В стриминге эти поля приходят фрагментами внутри delta, как обычный текст.
Токены и стоимость
Заголовок раздела «Токены и стоимость»Рассуждения оплачиваются как вывод. Их объём виден в usage:
/v1/chat/completions:completion_tokens_details.reasoning_tokens(входит вcompletion_tokens);/v1/messages:output_tokens_details.thinking_tokens(входит вoutput_tokens).
Подробнее про поля счётчиков: Токены и usage.
Что учитывать
Заголовок раздела «Что учитывать»- Первый токен приходит позже. На высоких уровнях модель молчит, пока думает: на сложных запросах это десятки секунд и больше. Для интерактивных интерфейсов включайте стриминг, чтобы соединение не выглядело зависшим, и не занижайте таймауты клиента.
- Уровень выбирается под задачу, а не «на всякий случай». Извлечение данных, короткие ответы и вызовы инструментов от высокого effort обычно не улучшаются, а стоят дороже.
max_tokensсчитается вместе с рассуждениями. Слишком тесный лимит обрывает ответ до того, как модель дойдёт до текста.- Рассуждения не заменяют инструкции. Если ответ систематически неверный, точнее сформулированный промпт даёт больше, чем повышение уровня.