К содержимому

«Думай по шагам»: когда это помогает, а когда мешает

Фраза «давай подумаем шаг за шагом» несколько лет была самым известным приёмом промт-инжиниринга. С появлением моделей, которые рассуждают перед ответом сами, совет устарел — а местами стал вредным. Статья о том, откуда взялся приём, как он работает и что делать вместо него с современными моделями, чтобы получить точный ответ на сложную задачу и не переплачивать за лишние размышления.

Откуда взялась «цепочка рассуждений»

В 2022 году вышли две работы, которые закрепили приём.

  • Wei и соавторы, «Chain-of-Thought Prompting Elicits Reasoning in Large Language Models» (Google). В промт добавляли несколько примеров, где перед ответом расписано решение по шагам. На арифметических, логических задачах и задачах на здравый смысл точность заметно росла. Модель на 540 млрд параметров с восемью такими примерами показала лучший на тот момент результат на наборе школьных текстовых задач по математике GSM8K. Важная оговорка из статьи: эффект проявлялся только у больших моделей, а маленьким такие примеры не помогали и даже вредили.
  • Kojima и соавторы, «Large Language Models are Zero-Shot Reasoners». Оказалось, что можно обойтись без примеров: достаточно добавить к вопросу фразу «Let's think step by step». Модель сама расписывала решение и чаще приходила к верному ответу.

Почему это работает: модель генерирует текст по одному токену, и каждый следующий опирается на уже написанное. Если ответ выдаётся сразу, у модели нет «места», чтобы выполнить промежуточные вычисления. Расписанные шаги становятся для неё черновиком, на который можно опереться.

Что изменилось: модели рассуждений

Современные модели — линейки o-серии и GPT-5 у OpenAI, Claude с режимом размышлений (thinking), Gemini с thinking — рассуждают перед ответом сами, во внутреннем черновике. Их этому специально обучали. Отсюда новые правила.

Не просите «думать по шагам». В руководстве OpenAI по моделям рассуждений прямо сказано: не нужно просить их рассуждать пошагово или объяснять рассуждения — они делают это внутри, а такие просьбы иногда ухудшают результат.

Пишите проще. OpenAI советует короткие и ясные инструкции: модель сама найдёт путь к решению, сложные «строительные леса» из шагов ей не нужны. В свежих рекомендациях к GPT-5.5 то же: короткие промты, ориентированные на результат, обычно лучше длинных описаний процесса.

Управляйте глубиной параметром, а не словами. У моделей рассуждений есть настройка объёма размышлений: reasoning_effort у OpenAI, effort у Anthropic, бюджет thinking у Google. Низкий уровень — быстрее и дешевле, высокий — для сложных задач. Начинайте с низкого или среднего и повышайте, только если качества не хватает.

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

Плохо:
Подумай шаг за шагом. Сначала прочитай код, потом найди функции,
потом проверь каждую функцию, потом...

Лучше:
Найди причину, по которой функция calculateTotal возвращает неверную
сумму при скидке больше 50%. Готово, когда: причина указана с номером
строки, предложено исправление, и ты проверил его на примерах из
теста test_discount.

Обратная проблема: модель думает слишком много

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

  • понизить уровень effort — самый надёжный способ;
  • попросить выбрать подход и держаться его. Пример из руководства Anthropic, по смыслу: «выбери подход и доведи его до конца; пересматривай решение, только если появилась новая информация, которая ему противоречит»;
  • убрать «перестраховочные» инструкции. Фразы вроде «если сомневаешься — проверь ещё раз» и «будь максимально тщательным» писали для старых моделей, которые делали слишком мало. Новые воспринимают их буквально и перерабатывают;
  • ограничить контекст — избыток документов тоже провоцирует лишние размышления.

Когда пошаговое рассуждение всё ещё полезно

Приём не умер, он сместился.

Модели без режима размышлений. Небольшие и быстрые модели, которые отвечают сразу, по-прежнему выигрывают от просьбы рассуждать. Чтобы рассуждения не мешали разбирать ответ, разделите их тегами:

Реши задачу. Сначала распиши рассуждения в тегах <thinking>,
затем дай итоговый ответ в тегах <answer> — только число.

Программа берёт содержимое <answer>, а <thinking> можно сохранить в лог для отладки.

Направить размышления. Даже модели, которые думают сами, можно подсказать, о чём думать. Например, в агентных сценариях Anthropic предлагает такую инструкцию: после получения результата инструмента оценить его качество и спланировать следующий шаг, прежде чем действовать.

Цепочка промтов. Если важно проверить промежуточный результат или задать конвейер, разбейте задачу на отдельные запросы. Самый частый вариант — самопроверка:

  1. Первый запрос: написать черновик.
  2. Второй: проверить черновик по списку критериев и перечислить проблемы.
  3. Третий: исправить черновик по списку проблем.

Каждый шаг — отдельный вызов, его можно залогировать, оценить или перезапустить, не начиная всё сначала.

Рассуждения не равны правде

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

  • проверяйте результат, а не красоту рассуждений — запустите код, пересчитайте число, сверьте цитату;
  • для фактов из документов просите опираться на цитаты (подробнее — в статье «Длинный промт: разметка, документы и цитаты»);
  • в важных задачах задайте проверку в критериях готовности: «ответ проверен на тестах», «каждое утверждение подкреплено ссылкой на раздел».

Шпаргалка

Модель и задача Что делать
Модель рассуждений, сложная задача Короткий промт с целью и критериями успеха; effort — средний или высокий
Модель рассуждений, простая задача Низкий effort; без просьб «подумать»
Модель думает слишком долго Понизить effort; попросить выбрать подход и держаться его
Быстрая модель без режима размышлений Попросить рассуждать в <thinking>, ответ — в <answer>
Нужно проверить промежуточный результат Цепочка промтов: черновик → проверка → исправление

Источники