Skip to main content
Модели reasoning «думают» перед тем, как ответить. При вызове через совместимый режим их вывод содержит несколько дополнительных элементов по сравнению с обычными моделями. На этой странице рассматриваются три вещи: как получить рассуждение, как обрабатывать многоходовые диалоги и как сделать структурированный вывод надежным.
Эта страница посвящена /v1/chat/completions в совместимом режиме. О нативных блоках thinking Claude (поле thinking на /v1/messages) см. Руководство по Claude Effort & Thinking. О нативных thinking_level и thought_signature Gemini см. Нативные вызовы Gemini.

Обзор

В режиме совместимости reasoning-модели делятся на три группы по признаку «выводят ли они текст рассуждений»:
Независимо от типа, ответ всегда в content. Если вы читаете только content, любая reasoning-модель интегрируется так же, как обычная модель; читайте reasoning_content только тогда, когда хотите показать рассуждение.

Содержимое рассуждения: reasoning_content

Модели, которые выводят текст размышлений, помещают цепочку рассуждений в reasoning_content, параллельно content. Без потоковой передачиmessage содержит оба:
Потоковая передача — сначала отправляется последовательность delta.reasoning_content; delta.content начинается только после завершения размышлений. Обязательно отображайте их отдельно (сворачивайте размышления, выводите ответ потоково), иначе UI сначала покажет стену мыслей:
Потоковое «взаимоисключение» между рассуждением и содержимым отличается у трех моделей — учитывайте все три варианта:
  • grok-4.3: во время размышления присутствует только ключ reasoning_content; во время ответа только content (другой ключ просто не появляется).
  • qwen3.6-plus: оба ключа присутствуют; неактивный — null.
  • glm-5.1: во время размышления content равен "" (пустая строка), а reasoning_content содержит значение.
Единый подход: считывайте с проверкой истинности (if reasoning: / if content:), чтобы пропускать все три пустых состояния — отсутствие, null и "".
Токены рассуждения могут намного превосходить ответ. В тестах на простой вопрос «1+1» grok-4.3 выдал сотни reasoning_tokens против всего нескольких токенов ответа. Размышления тарифицируются как output tokens, поэтому оцените, стоит ли включать / отображать их в сценариях, чувствительных к задержке и стоимости.

Сигнатуры мыслей и многоходовое взаимодействие

«thought signature» — это концепция Gemini native: в native multimodal / function calling модель возвращает зашифрованную thought_signature, которую нужно передавать обратно между ходами, чтобы сохранить непрерывность рассуждения (см. Gemini Native Calls и Gemini Function Calling). В совместимом режиме /v1/chat/completions reasoning-модели не сохраняют состояние:
  • Для multi-turn достаточно поместить content из предыдущего ответа assistant в историю сообщений;
  • Не нужно передавать обратно reasoning_content, и поле сигнатуры не появляется в ответе;
  • В тестировании gemini-3.1-flash-lite и grok-4.3 корректно сохраняли multi-turn-контекст, когда обратно передавался только content.
Если вам нужно сохранять сигнатуры мыслей Gemini между ходами или использовать нативные блоки мышления Claude в multi-turn, переключитесь на соответствующий native эндпоинт, а не на совместимый режим.

Структурированный вывод

Используйте response_format, чтобы модель выводила только JSON. Два типа:

Поддержка по моделям (проверено)

json_schema поддержка сильно различается — это главная ловушка в структурированном выводе:

Как надежно получать JSON в разных моделях

Не стоит считать, что json_schema работает на каждой модели. Для надежной совместимости между моделями используйте вместе:
  1. Отдавайте предпочтение json_object — он совместим с большим числом моделей, чем json_schema;
  2. В prompt явно укажите “возвращайте только JSON” и включите слово “json” (это требуется для qwen и повышает надежность для остальных тоже);
  3. Парсите осторожно: удаляйте ```json code fences, strip a <think>…</think> prefix, then json.loads, и корректно обрабатывайте сбои.

Сопутствующие ссылки