Перейти к содержимому

Рассуждения

Некоторые модели поддерживают режим рассуждений (reasoning) — встроенный механизм пошагового обдумывания задачи перед формированием ответа. В процессе рассуждения модель генерирует дополнительные токены рассуждения (reasoning tokens), которые не входят в итоговый ответ, но повышают его качество при решении сложных задач: логического вывода, математики, программирования и анализа.

Параметр reasoning_effort управляет количеством токенов рассуждения, которые модель сгенерирует перед ответом:

ЗначениеОписание
noneПолностью отключает процесс рассуждений. Модель с поддержкой рассуждений работает как обычная чат-модель — быстро и без генерации токенов рассуждений
low, minimalКраткая цепочка рассуждений. Модель генерирует минимум токенов рассуждений и быстро формирует ответ. Подходит для простых задач, где не требуется глубокий анализ
mediumСбалансированный уровень рассуждений. Базовый уровень критического мышления, часто используется по умолчанию
highВысокий бюджет токенов рассуждения для сложных многошаговых рассуждений: математика, аудит кода, сложная логика. Модель тратит больше времени и токенов на обдумывание
maxНаибольший доступный бюджет токенов рассуждения. Поддерживается только отдельными моделями

Чем выше уровень, тем больше токенов рассуждения сгенерирует модель и тем выше стоимость запроса. Уровень рассуждений можно задавать для каждого запроса независимо.

Доступные значения reasoning_effort зависят от модели. В колонке «По умолчанию» указано значение, которое используется, если не передавать параметр.

МодельnonelowmediumhighmaxПо умолчанию
qwen3-6-35b-a3bmedium
glm-5.2high
kimi-k2.6high
gemma-4-31b-itmedium
gpt-oss-120bmedium
Важно

Если передать параметры рассуждений модели, которая их не поддерживает, сервис вернет ошибку с кодом REASONING_UNSUPPORTED (см. Коды обработки запроса).

В Chat Completions API уровень рассуждений задается опциональным параметром reasoning_effort в теле запроса.

bash
curl https://gpt.mwsapis.ru/projects/<имя проекта>/openai/v1/chat/completions \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer <API-ключ сервисного аккаунта с ролью gpt.inferencer>" \
-d '{
"model": "gpt-oss-120b",
"reasoning_effort": "high",
"messages": [
{
"role": "user",
"content": "В коробке 5 красных шаров и 3 синих. Из коробки достают 2 шара без возвращения. Какова вероятность, что оба шара красные?"
}
]
}' | jq .
bash
{
"choices": [
{
"finish_reason": "stop",
"index": 0,
"logprobs": null,
"message": {
"content": "**Решение**\n\nВсего в коробке \\(5+3=8\\) шаров. \nМы вытаскиваем два шара **без возвращения**, поэтому события зависимы.\n\n1. Вероятность того, что первый вытянутый шар будет красным: \n\\[\nP(\\text{1‑й красный})=\\frac{5}{8}.\n\\]\n\n2. После того как первый шар оказался красным, в коробке осталось \\(8-1=7\\) шаров, из которых красных уже только \\(5-1=4\\). Поэтому вероятность, что второй шар тоже будет красным, равна \n\\[\nP(\\text{2‑й красный}\\mid \\text{1‑й красный})=\\frac{4}{7}.\n\\]\n\n3. Совместная вероятность двух независимых (последовательных) событий – произведение их условных вероятностей:\n\\[\nP(\\text{оба красные}) = \\frac{5}{8}\\cdot\\frac{4}{7}= \\frac{20}{56}= \\frac{5}{14}.\n\\]\n\nМожно также воспользоваться гипергеометрическим распределением:\n\n\\[\nP(\\text{оба красные})=\\frac{\\binom{5}{2}}{\\binom{8}{2}}=\n\\frac{10}{28}= \\frac{5}{14}.\n\\]\n\n---\n\n\\[\n\\boxed{P = \\dfrac{5}{14}\\approx 0{,}3571\\;(35{,}7\\%)} \n\\]",
"refusal": null,
"role": "assistant",
"tool_calls": []
}
}
],
"created": 1788216227,
"id": "chatcmpl-1ddf5895-f794-405f-bf76-97c5ee3aa73d",
"model": "gpt-oss-120b",
"object": "chat.completion",
"usage": {
"completion_tokens": 569,
"completion_tokens_details": {
"reasoning_tokens": 234
},
"prompt_tokens": 105,
"prompt_tokens_details": {
"cached_tokens": 32
},
"total_tokens": 674
}
}

В этом примере:

  • usage.completion_tokens — общее количество исходящих токенов, включая токены рассуждений.
  • usage.completion_tokens_details.reasoning_tokens — количество токенов, затраченных на рассуждения. Входит в completion_tokens.

Входящие и исходящие токены (включая reasoning tokens) тарифицируются отдельно.

При включенном stream: true модель сначала передает токены рассуждений в поле reasoning_content каждого чанка, а затем — итоговый ответ в поле content.

bash
curl https://gpt.mwsapis.ru/projects/<имя проекта>/openai/v1/chat/completions \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer <API-ключ сервисного аккаунта с ролью gpt.inferencer>" \
-d '{
"model": "gpt-oss-120b",
"reasoning_effort": "high",
"stream": true,
"stream_options": {
"include_usage": true
},
"messages": [
{
"role": "user", "content": "В коробке 5 красных шаров и 3 синих. Из коробки достают 2 шара без возвращения. Какова вероятность, что оба шара красные?"
}
]
}'
bash
{"id":"chatcmpl-e091d341-6351-495e-956d-2b9d3a1b2f38","created":1788216422,"model":"gpt-oss-120b","choices":[{"delta":{"content":"","role":"assistant"},"finish_reason":null,"index":0}],"object":"chat.completion.chunk"}
{"id":"chatcmpl-e091d341-6351-495e-956d-2b9d3a1b2f38","created":1788216422,"model":"gpt-oss-120b","choices":[{"delta":{"reasoning":"The"},"finish_reason":null,"index":0}],"object":"chat.completion.chunk"}
...
{"id":"chatcmpl-e091d341-6351-495e-956d-2b9d3a1b2f38","created":1788216422,"model":"gpt-oss-120b","choices":[{"delta":{"content":"%)."},"finish_reason":null,"index":0}],"object":"chat.completion.chunk"}
{"id":"chatcmpl-e091d341-6351-495e-956d-2b9d3a1b2f38","created":1788216422,"model":"gpt-oss-120b","choices":[{"delta":{},"finish_reason":"stop","index":0}],"object":"chat.completion.chunk"}
{"id":"chatcmpl-e091d341-6351-495e-956d-2b9d3a1b2f38","created":1788216422,"model":"gpt-oss-120b","choices":[],"usage":{"completion_tokens":589,"prompt_tokens":105,"prompt_tokens_details":{"cached_tokens":96},"total_tokens":694},"object":"chat.completion.chunk"}

Порядок передачи данных при streaming:

  1. Чанки с reasoning — токены рассуждений.
  2. Чанки с content — итоговый ответ модели.
  3. Финальный чанк с usage — статистика использования токенов.

В Responses API уровень рассуждений задается опциональным параметром reasoning.effort.

bash
curl https://gpt.mwsapis.ru/projects/<имя проекта>/openai/v1/responses \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer <API-ключ сервисного аккаунта с ролью gpt.inferencer>" \
-d '{
"model": "gpt-oss-120b",
"reasoning": {
"effort": "high"
},
"store": false,
"input": "В коробке 5 красных шаров и 3 синих. Из коробки достают 2 шара без возвращения. Какова вероятность, что оба шара красные?"
}' | jq .
bash
{
"background": false,
"created_at": 1788216863,
"error": null,
"id": "resp_aaecc6919ee1481c",
"incomplete_details": null,
"instructions": null,
"max_output_tokens": 130967,
"model": "gpt-oss-120b",
"object": "response",
"output": [
{
"id": "rs_95e9ed807b498944",
"summary": [],
"type": "reasoning",
"content": [
{
"text": "We need to parse the problem: \"В коробке 5 красных шаров и 3 синих. Из коробки достают 2 шара без возвращения. Какова вероятность, что оба шара красные?\" In English: In a box there are 5 red balls and 3 blue balls. Two balls are drawn without replacement. What is the probability that both balls are red?\n\nSolution: total balls = 8. Without replacement, probability of both red = (5/8) * (4/7) = 20/56 = 5/14 ≈ 0.3571. That's the usual answer.\n\nWe can give solution approach perhaps explanation of combinatorics: number of ways to choose 2 red from 5 = C(5,2) = 10; total ways to choose any 2 balls from 8 = C(8,2) = 28; probability = 10/28 = 5/14.\n\nThus answer: 5/14 ≈ 0.357.\n\nWe can also add alternative approach: hypergeometric distribution.\n\nThus answer: 5/14.\n\nBut we should be careful about exact answer. Usually answer: 10/28 = 5/14.\n\nCould present as 5/14 or ≈0.357.\n\nThus the probability that both drawn balls are red is 5/14 ≈ 0.357.\n\nThus output in Russian.",
"type": "reasoning_text"
}
],
"encrypted_content": null,
"status": null
},
{
"id": "msg_aaf268799e10a420",
"content": [
{
"annotations": [],
"text": "Всего в коробке \\(5+3=8\\) шаров.\n\nДля двух извлечений без возвращения удобнее воспользоваться гипергеометрическим распределением.\n\n**Подсчёт через сочетания**\n\n- Число способов выбрать любые 2 шара из 8: \n \\[\n \\binom{8}{2}=28.\n \\]\n\n- Число способов выбрать 2 красных шара из 5: \n \\[\n \\binom{5}{2}=10.\n \\]\n\nВероятность того, что оба выбранных шара красные, равна отношению этих количеств:\n\\[\nP(\\text{оба красные})=\\frac{\\binom{5}{2}}{\\binom{8}{2}}=\\frac{10}{28}=\\frac{5}{14}\\approx0{,}357.\n\\]\n\n**Эквивалентный расчёт пошагово**\n\n\\[\nP(\\text{первый красный})=\\frac{5}{8},\\qquad \nP(\\text{второй красный}\\mid\\text{первый красный})=\\frac{4}{7}.\n\\]\n\n\\[\nP(\\text{оба красные})=\\frac{5}{8}\\cdot\\frac{4}{7}= \\frac{20}{56}= \\frac{5}{14}.\n\\]\n\n**Ответ:** \\(\\displaystyle \\frac{5}{14}\\) (≈ 0.357).",
"type": "output_text",
"logprobs": null
}
],
"role": "assistant",
"status": "completed",
"type": "message",
"phase": null
}
],
"parallel_tool_calls": true,
"reasoning": {
"effort": "high"
},
"status": "completed",
"temperature": 1,
"tool_choice": "none",
"tools": [],
"top_p": 1,
"truncation": "disabled",
"usage": {
"input_tokens": 105,
"input_tokens_details": {
"cached_tokens": 64
},
"output_tokens": 613,
"output_tokens_details": {
"reasoning_tokens": 296
},
"total_tokens": 718
}
}

В этом примере:

  • usage.output_tokens — общее количество исходящих токенов, включая токены рассуждений.
  • usage.output_tokens_details.reasoning_tokens — количество токенов, затраченных на рассуждения. Входит в output_tokens.

Входящие и исходящие токены (включая reasoning tokens) тарифицируются отдельно.

Токены рассуждений тарифицируются как исходящие токены. Они включаются в общий объем completion_tokens (для Chat Completions API) или output_tokens (для Responses API) и тарифицируются по тем же правилам, что и токены итогового ответа.

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

  • Используйте none, чтобы полностью отключить рассуждения — модель будет работать как обычная чат-модель, без генерации токенов рассуждений. Это самый быстрый и дешевый режим.
  • Используйте low (minimal) для простых задач — коротких ответов, перевода, перефразирования. Модель сгенерирует краткую цепочку рассуждений, что снизит время ответа и стоимость.
  • Используйте medium для задач средней сложности или когда важно соблюсти баланс между качеством и стоимостью.
  • Используйте high для задач, требующих многошагового логического вывода — математики, программирования, аудита кода, анализа данных, решения нестандартных задач.
  • Если уровень рассуждений не указан, то модель использует значение по умолчанию.