Промптинг с цепочкой рассуждений (chain-of-thought, CoT) просит модель записать ход своих рассуждений перед тем, как дать окончательный ответ. Идею описали Вэй и коллеги из Google в 2022 году, показавшие, что разобранные примеры с промежуточными шагами улучшают результаты на задачах по арифметике и логике.
Почему запись шагов помогает
Языковая модель порождает по одному токену, учитывая всё предшествующее. Если она должна ответить сразу, ответ предсказывается без промежуточной работы. Если она сначала записывает шаги, они становятся частью контекста, по которому предсказывается ответ. Рассуждение на странице — это рабочая память.
Zero-shot цепочка рассуждений
Простейшая форма добавляет инструкцию сначала порассуждать.
A warehouse ships 240 orders a day. 15% need gift wrap, which adds
4 minutes each. How many staff hours a day does gift wrap take?
Work through the problem step by step, then give the final answer
on its own line as "Answer: <number> hours".
Важны две детали. Просите рассуждение до ответа и задайте ответу фиксированный маркер, чтобы ваш код мог его найти.
Few-shot цепочка рассуждений
Здесь примеры показывают не только результат, но и рассуждение, поэтому модель имитирует метод.
Q: A plan costs $12 a month or $120 a year. How much does the yearly
plan save over 2 years?
Reasoning: Monthly for 2 years is 12 x 24 = $288. Yearly for 2 years
is 120 x 2 = $240. The difference is 288 - 240 = $48.
Answer: $48
Q: {{question}}
Reasoning:
Используйте это, когда у задачи есть конкретная процедура, которой нужно следовать.
Структурированные рассуждения
Для ответов, которые будет читать код, отделяйте размышление от результата тегами или полями.
Think through the eligibility rules inside <reasoning> tags.
Then give the decision inside <decision> tags as "approve" or "reject".
В JSON помещайте поле рассуждения перед полем вердикта. Поля порождаются по порядку, поэтому рассуждение после вердикта не может на него повлиять. См. промпты для структурированного вывода.
Модели с рассуждением меняют совет
Многие современные модели рассуждают внутри себя перед ответом, часто под настройкой, называемой thinking, reasoning effort или extended thinking. Для этих моделей:
- Не добавляйте «думай шаг за шагом». Они уже так делают, а инструкция может удлинить вывод, не улучшив его.
- Описывайте цель и ограничения и позволяйте модели выбрать подход.
- Используйте управление провайдера, чтобы задать, сколько рассуждений тратить, вместо формулировок промпта.
- Всё равно просите краткое обоснование в выводе, когда человеку нужно проверить ответ.
Явная цепочка рассуждений остаётся полезной с более маленькими и быстрыми моделями, которые не рассуждают внутри, и всякий раз, когда нужно видеть рассуждение в ответе.
Когда цепочка рассуждений помогает, а когда нет
| Задача | Помогает? |
|---|---|
| Многошаговая арифметика или логика | Да |
| Решения с несколькими правилами | Да |
| Отладка: поиск причины по симптомам | Да |
| Простая классификация или извлечение | Редко; добавляет расходы |
| Творческое письмо | Нет |
| Поиск факта в предоставленном тексте | Нет |
Цена реальна: рассуждение — это выходные токены, которые обычно дороже входных и добавляют задержку.
Предостережение об объяснениях
Записанное рассуждение — правдоподобный рассказ, а не гарантированный след того, как был получен ответ. Модель может прийти к выводу и написать обоснование, которое звучит верно. Относитесь к рассуждению как к тому, что нужно проверять, особенно когда решение влияет на людей.
Самосогласованность
Самосогласованность, описанная Вангом и коллегами в 2022 году, строится на цепочке рассуждений. Запустите один и тот же промпт с рассуждением несколько раз с включённой выборкой, чтобы пути различались, и возьмите самый частый окончательный ответ.
- Отправьте промпт CoT N раз, например 5, с температурой выше нуля.
- Извлеките окончательный ответ из каждого ответа.
- Верните ответ, который встречается чаще всего.
Разные пути рассуждений делают разные ошибки, но верные пути обычно сходятся. Голосование отсеивает случайные промахи.
Используйте, когда у задачи один верный ответ, который можно точно сравнить (число, метка, «да» или «нет»), и точность стоит N-кратных расходов.
Не используйте, когда ответы — свободный текст, по которому нельзя голосовать, или когда одного вызова уже достаточно. Если голоса разделились поровну, считайте это признаком того, что вопрос неоднозначен или промпт задан недостаточно.
От рассуждений к конвейерам
Если шаги задачи известны заранее, не просите один промпт рассуждать сразу обо всех. Дайте каждому шагу свой промпт. Это цепочка промптов. Если шаги зависят от информации, которую модель должна получить, сочетайте рассуждения с инструментами: это ReAct-промптинг.
Сначала проверьте промпт
Рассуждение не исправит неясный вопрос. Промпт CoT с расплывчатой целью или противоречивыми правилами тщательно рассуждает в сторону неверного ответа. Пропустите его через анализатор промптов PromptFlowEngine, прежде чем тратить токены на рассуждения.