Мы продолжаем адаптированный перевод статьи “The Prompt Report: A Systematic Survey of Prompt Engineering Techniques” (первую часть можно найти здесь). С переводом мне по-прежнему помогает коллега – Анастасия Тарабакина. 

В этой части мы обсудим такие техники промптинга, как Chain-of-Thought и декомпозиция. 

1. Промптинг Chain-of-Thought

Начнем с техник промптинга, которые заставляют модель демонстрировать пользователю внутренний процесс «рассуждения» над задачей (Thought Generation). 

«Цепочка рассуждений» (Chain-of-Thought или Chain-of-Thoughts, CoT) – самая распространенная техника из этой категории. Как правило, пользователь добавляет в промпт один или несколько примеров рассуждения, после чего дает модели аналогичную задачу и просит вместе с решением представить ход рассуждения (см. Рисунок 1). Такой подход повышает качество выдачи при решении математических и логических задач.

Рисунок 1. Промптинг Chain-of-Thought с одним примером. Пользователь дает модели математическую задачу (У Джека есть две корзины, в каждой - по три мяча. Сколько всего мячей у Джека?) Далее дается пример рассуждения (в одной корзине 3 мяча, соответственно, в двух – 2*3 = 6 мячей), после чего модель получает аналогичную задачу.
Рисунок 1. Промптинг Chain-of-Thought с одним примером. Пользователь дает модели математическую задачу (У Джека есть две корзины, в каждой - по три мяча. Сколько всего мячей у Джека?) Далее дается пример рассуждения (в одной корзине 3 мяча, соответственно, в двух – 2*3 = 6 мячей), после чего модель получает аналогичную задачу.

1.1 Chain-of-Thought промптинг без примеров (Zero-Shot Chain-of-Thought, Zero-Shot CoT)

В этой вариации CoT пользователь не добавляет в промпт примеры рассуждений, но добавляет фразу, служащую триггером для размышлений, например: «Рассуждай шаг за шагом» или «Сначала подумай логически». Есть и более развернутые фразы, содержащие элементы эмоционального промптинга: «Рассуждай шаг за шагом, чтобы не допустить ошибку». Основное преимущество этих техник – они не требуют примеров и потому легко применяются при решении любой задачи.

Step-back промптинг (Step-Back Prompting) – вариация CoT без примеров. Пользователь сначала задает модели наводящие вопросы, которые активируют знания общих понятий, законов и принципов, необходимых для решения конкретной задачи (см. Рисунок 2). Далее модель использует эти понятия в рассуждениях. Эффективность такого подхода подтверждается тестированием последних моделей (PaLM-2L и GPT-4) на бенчмарках.

Рисунок 2. Step-back промптинг. Перед тем, как модель начнет решать задачу по физике, пользователь задает ей наводящий вопрос: какой физический закон нужен, чтобы решить задачу? Модель «вспоминает» уравнение идеального газа и далее на его основе рассчитывает ответ. Из примера также следует, что при использовании обычного CoT промптинга (например, при добавлении фразы «Рассуждай шаг за шагом») модель может допустить ошибку.
Рисунок 2. Step-back промптинг. Перед тем, как модель начнет решать задачу по физике, пользователь задает ей наводящий вопрос: какой физический закон нужен, чтобы решить задачу? Модель «вспоминает» уравнение идеального газа и далее на его основе рассчитывает ответ. Из примера также следует, что при использовании обычного CoT промптинга (например, при добавлении фразы «Рассуждай шаг за шагом») модель может допустить ошибку.

Промптинг «по аналогии» (Analogical Prompting) схож с техникой Self-Generated In-Context Learning, где модель используется для генерации примеров для few-shot промптов. Единственное отличие – здесь модель самостоятельно генерирует примеры рассуждений (см. Рисунок 3). Использование таких синтетических примеров повышает качество решения математических задач и задач, связанных с генерацией кода.

Рисунок 3. Промптинг “по аналогии”. Пользователь дает модели математическую задачу и инструкцию: сначала самостоятельно вспомнить примеры решения аналогичных задач, которые, скорее всего, есть в обучающих данных, а потом на их основе решить новую.
Рисунок 3. Промптинг “по аналогии”. Пользователь дает модели математическую задачу и инструкцию: сначала самостоятельно вспомнить примеры решения аналогичных задач, которые, скорее всего, есть в обучающих данных, а потом на их основе решить новую.

Промптинг «Нить рассуждения» (Thread-of-Thought Prompting, ThoT) – специфическая вариация CoT, которая предполагает использование развернутого триггера размышлений. Вместо стандартного «Размышляй шаг за шагом» используется фраза «Проанализируй всю дополнительную информацию и пошагово объясни мне решение задачи. При необходимости добавляй разъяснения и делай обобщения» (см. Рисунок 4). Использование такого триггера повышает качество ответов на вопросы и информационного поиска, особенно в тех случаях, когда решение задачи требует привлечения большого объема информации.

Рисунок 4. Промптинг «Нить рассуждения». Пользователь предоставляет модели контекст задачи и использует специальную фразу-триггер. Модель генерирует рассуждение со ссылками на предоставленную информацию, после чего выдает итоговый ответ. Аналогичным образом, дополнительная информация может быть представлена в базе знаний RAG, а не в основном промпте.
Рисунок 4. Промптинг «Нить рассуждения». Пользователь предоставляет модели контекст задачи и использует специальную фразу-триггер. Модель генерирует рассуждение со ссылками на предоставленную информацию, после чего выдает итоговый ответ. Аналогичным образом, дополнительная информация может быть представлена в базе знаний RAG, а не в основном промпте.

Табличный Chain-of-Thought (Tabular Chain-of-Thought, Tab-CoT) относится к CoT-техникам без примеров. В промпт добавляется инструкция представить рассуждение в виде таблицы markdown (см. Рисунок 5). Табличный формат помогает модели структурировать рассуждение и выдать более точный ответ.

Рисунок 5. Табличный CoT-промптинг. Из примера видно, что табличный формат помогает работать с «многоступенчатыми» условиями и при этом затрачивать меньшее количество токенов на рассуждение (ср. 140 слов при использовании стандартного CoT без примеров и 28 слов при использовании табличного формата).
Рисунок 5. Табличный CoT-промптинг. Из примера видно, что табличный формат помогает работать с «многоступенчатыми» условиями и при этом затрачивать меньшее количество токенов на рассуждение (ср. 140 слов при использовании стандартного CoT без примеров и 28 слов при использовании табличного формата).

1.2 Chain-of-Thought с примерами (Few-Shot Chain-of-Thought)

В эту группу техник CoT-промптинга входят те, в которых модель получает несколько примеров рассуждений. Если используемые в промпте примеры рассуждений были составлены человеком, эту группу техник также называют Manual CoT или Golden CoT.

Контрастивный CoT-промптинг (Contrastive CoT) – это техника, в которой модель получает, как правильные, так и неправильные примеры рассуждения, показывающие, как размышлять не надо (см. Рисунок 6). Применение этой техники повышает качество выдачи при решении арифметических задач и поиске ответов на фактологические вопросы.

Рисунок 6. Контрастивный CoT-промптинг.
Рисунок 6. Контрастивный CoT-промптинг.

CoT с несколькими путями рассуждения (Uncertainty-Routed CoT). В этой технике модель генерирует несколько вариантов рассуждения и выбирает наиболее вероятный по принципу «большинства голосов»: какой ответ встречается чаще всего, тот и верный. При этом задается «порог встречаемости»: например, как минимум три рассуждения должны привести к одному и тому же ответу, чтобы модель выбрала его в качестве правильного. Если не один из ответов не достигает нужного порога, рассуждение строится заново – по принципу «жадной» генерации: модель каждый раз выбирает наиболее вероятный следующий токен. В качестве правильного берется ответ, полученный на основе такого рассуждения.

CoT, основанный на сложности рассуждений (Complexity-based CoT). В этой технике примеры рассуждений, которые включаются в промпт, отбираются по двум критериям: 

  • сложность задачи (длина условия);

  • количество шагов решения (чем больше – тем лучше).

Получив новую задачу, модель, как и в предыдущей технике, генерирует несколько путей решения и выбирает наиболее частотный ответ. Однако здесь также учитывается длина рассуждения: чем больше шагов включает решение, тем более вероятно, что полученный ответ верный (см. Рисунок 7). По результатам тестирований на бенчмарках, данная техника повышает качество решения математических задач.

Рисунок 7. CoT-промптинг, основанный на сложности рассуждений. Модель генерирует 5 возможных решений, 2 решения исключаются сразу из-за малого количества шагов. Из оставшихся трех, на основе частотности ответов, выбирается наиболее вероятное.
Рисунок 7. CoT-промптинг, основанный на сложности рассуждений. Модель генерирует 5 возможных решений, 2 решения исключаются сразу из-за малого количества шагов. Из оставшихся трех, на основе частотности ответов, выбирается наиболее вероятное.

CoT с участием аннотаторов (Active Prompting). В этой технике модель получает набор тренировочных задач и для каждой из них генерирует несколько вариантов рассуждения. Далее для каждой задачи рассчитывается степень неопределенности решения. Задачи, с которыми модель испытывает наибольшие затруднения, передаются специалистам-аннотаторам, которые составляют эталонные решения (см. Рисунок 8).

Рисунок 8. CoT с участием аннотаторов. Из сета тренировочных задач выбираются задачи с наиболее неоднозначным решением (Most Uncertain Questions), и решения для них составляются людьми.
Рисунок 8. CoT с участием аннотаторов. Из сета тренировочных задач выбираются задачи с наиболее неоднозначным решением (Most Uncertain Questions), и решения для них составляются людьми.

CoT с памятью рассуждений (Memory-of-Thought). Модель сначала получает сет неразмеченных примеров рассуждений и предварительно обрабатывает его. Затем, получив тестовый вопрос, модель извлекает из памяти наиболее релевантные примеры рассуждений и добавляет их в промпт. На их основе генерируется ответ на тестовый вопрос (см. Рисунок 9). Данная техника помогает моделям отвечать на фактологические вопросы и решать арифметические задачи, а также задачи, основанные на обыденном знании.

Рисунок 9. Пример техники CoT с памятью рассуждений. Модель предварительно обрабатывает неразмеченные примеры рассуждений (pre-think). Затем, получив тестовый вопрос («Какое суждение противоречит здравому смыслу?») подтягивает релевантные примеры и дает ответ.
Рисунок 9. Пример техники CoT с памятью рассуждений. Модель предварительно обрабатывает неразмеченные примеры рассуждений (pre-think). Затем, получив тестовый вопрос («Какое суждение противоречит здравому смыслу?») подтягивает релевантные примеры и дает ответ.

Автоматический CoT (Auto-CoT). Цепочки рассуждений для типовых вопросов предварительно генерируются самой моделью. Далее, при получении тестового вопроса, модель добавляет заранее сгенерированные цепочки в промпт в качестве примеров (см. Рисунок 10). 

Рисунок 10. Автоматический CoT. Модель получает сет типовых вопросов, вопросы кластеризуются по смыслу (clustering). Далее для каждого кластера вопросов генерируется цепочка рассуждений. Заранее сгенерированные цепочки используются в качестве примеров для решения тестовых вопросов.
Рисунок 10. Автоматический CoT. Модель получает сет типовых вопросов, вопросы кластеризуются по смыслу (clustering). Далее для каждого кластера вопросов генерируется цепочка рассуждений. Заранее сгенерированные цепочки используются в качестве примеров для решения тестовых вопросов.

2. Декомпозиция

Далее мы рассмотрим техники, основанные на декомпозиции, т.е. разделении сложных задач на небольшие подзадачи. Некоторые из этих техник очень похожи на CoT-техники, которые заставляют модель «раздробить» задачу на несколько этапов. Однако, если мы самостоятельно разобьем сложную инструкцию на последовательность простых шагов, это еще сильнее повысит качество выдачи.

Промптинг «От простого к сложному» (Least-to-Most Prompting) предполагает, что пользователь сначала просит модель разбить задачу на подзадачи. Далее модель последовательно решает каждую подзадачу, добавляя ответы, полученные на каждом этапе, к исходному промпту. Этот процесс продолжается, пока модель не придет к финальному ответу (см. Рисунок 11). Техника особенно эффективна при решении задач, связанных с символьными преобразованиями (например, требующих использования математических формул), и задач, требующих обобщения (например, создание краткого содержания текста).

Рисунок 11. Промптинг «От простого к сложному». Модель поэтапно решает задачу про водную горку (по условию, Эми тратит 4 минуты на то, чтобы подняться на горку, и 1 минуту, чтобы скатиться. До закрытия горки 15 минут). Модель сначала вычисляет, сколько времени занимает один «прокат», а затем, используя результат предыдущего шага, считает, сколько раз Эми успеет скатиться с горки до закрытия.
Рисунок 11. Промптинг «От простого к сложному». Модель поэтапно решает задачу про водную горку (по условию, Эми тратит 4 минуты на то, чтобы подняться на горку, и 1 минуту, чтобы скатиться. До закрытия горки 15 минут). Модель сначала вычисляет, сколько времени занимает один «прокат», а затем, используя результат предыдущего шага, считает, сколько раз Эми успеет скатиться с горки до закрытия.

В технике DECOMP (Decomposed Prompting) модель на примерах обучается вызывать различные инструменты с помощью функций. Например, модель может научиться обращаться к поисковой системе через API. Далее, когда модель получит задачу и раздробит ее на подзадачи, она сможет делегировать отдельные подзадачи разным инструментам (см. Рисунок 12). Применение этой техники позволяет получить более качественные результаты по сравнению с классическим вариантом «От простого к сложному».

Рисунок 12. Техника DECOMP. Модель получает синтетическую задачу: собрать последовательность из первых букв во фразе – и декомпозирует ее. Получается следующий список шагов: разбить фразу на слова – найти первую букву в каждом слове – объединить первые буквы. Далее каждая задача передается соответствующей функции (split – разбить фразу, merge – объединить первые буквы).
Рисунок 12. Техника DECOMP. Модель получает синтетическую задачу: собрать последовательность из первых букв во фразе – и декомпозирует ее. Получается следующий список шагов: разбить фразу на слова – найти первую букву в каждом слове – объединить первые буквы. Далее каждая задача передается соответствующей функции (split – разбить фразу, merge – объединить первые буквы).

Техника «Спланируй и реши» (Plan-and-Solve Prompting) – это усовершенствованная версия CoT без примеров. Здесь модели дается развернутая инструкция: «Сначала проанализируй проблему и придумай план ее решения. Затем выполни план и реши проблему шаг за шагом» (см. Рисунок 13). Тестирование на ризонинговых датасетах показывает, что эта техника позволяет получить более точные рассуждения в сравнении со стандартным CoT без примеров.

Рисунок 13. Техника «Спланируй и реши». Модель получает задачу: 20 человек записались на занятия по танцам. Из них 20% записались на направление контемпорари. Из оставшихся людей 25% записались на джаз-дэнс, а остальные – на хип-хоп. Сколько процентов от общего числа людей записались на хип-хоп? При стандартном CoT-промпте модель допускает логическую ошибку в решении: она рассчитывает 25% записавшихся на джаз-дэнс от общего количества людей, а не от оставшихся 80%, как сказано в условии. Если же модель получает расширенную инструкцию и, следуя ей, сначала определяет основные шаги решения, а затем для каждого составляет алгоритм и вычисляет ответ, ошибки удается избежать.
Рисунок 13. Техника «Спланируй и реши». Модель получает задачу: 20 человек записались на занятия по танцам. Из них 20% записались на направление контемпорари. Из оставшихся людей 25% записались на джаз-дэнс, а остальные – на хип-хоп. Сколько процентов от общего числа людей записались на хип-хоп? При стандартном CoT-промпте модель допускает логическую ошибку в решении: она рассчитывает 25% записавшихся на джаз-дэнс от общего количества людей, а не от оставшихся 80%, как сказано в условии. Если же модель получает расширенную инструкцию и, следуя ей, сначала определяет основные шаги решения, а затем для каждого составляет алгоритм и вычисляет ответ, ошибки удается избежать.

Техника «Древо мыслей» (Tree-of-Thought, ToT) предполагает, что модель составляет древовидную схему возможных решений задачи. Для исходной проблемы предлагается несколько вариантов первого шага решения и выбирается наиболее эффективный. Затем, исходя из того, какой первый шаг был выбран, генерируются варианты следующего (см. пример древа мыслей на рисунке 14). Эта техника особенно полезна для решения задач, требующих планирования.

Рисунок 14. Техника «Древо мыслей»
Рисунок 14. Техника «Древо мыслей»

Техника «Мысленная рекурсия» (Recursion-of-Thought) похожа на классический вариант CoT, с одним существенным отличием. Когда внутри цепочки рассуждений встречается сложная подзадача, она помещается в отдельный промпт (или отправляется в другую модель) и решается отдельно. Далее полученное решение вставляется в исходный промпт, и работа над исходной задачей возобновляется (см. Рисунок 15). Таким образом, можно решать сложные, многоступенчатые задачи, полное решение которых в пределах одного промпта было бы невозможным из-за ограничений контекстного окна. Обычно для рекурсии требуется дообучение – в «словарь» модели добавляется специальный токен, который позволяет отправить подзадачу в отдельный промпт или передать ее другой модели. Однако аналогичного эффекта можно добиться и через текстовый промптинг.

Рисунок 15. Техника «Мысленная рекурсия». Модель решает математическую задачу (сложение трехзначных чисел) и декомпозирует ее на три подзадачи: сложение единиц, десятков и сотен. Каждая задача выполняется отдельным промптом, после чего результаты объединяются в исходном промпте.
Рисунок 15. Техника «Мысленная рекурсия». Модель решает математическую задачу (сложение трехзначных чисел) и декомпозирует ее на три подзадачи: сложение единиц, десятков и сотен. Каждая задача выполняется отдельным промптом, после чего результаты объединяются в исходном промпте.

Техника Program-of-Thoughts применяется преимущественно для решения сложных математических задач и задач программирования. Она используется в моделях, обученных на задачах генерации кода (например, Codex). Модель сразу представляет подзадачи на языке программного кода, т.е. в виде соответствующей функции. Далее интерпретатор кода (например, Python) поэтапно выполняет функции, и итоговый ответ передается в модель (см. Рисунок 16). Существенный недостаток моделей, с которыми применяется эта техника, – они менее эффективно решают задачи, связанные с обработкой естественного языка.

Рисунок 16. Техника Program-of-Thoughts. Модель получает задачу, требующую сложных расчетов: «В последовательности чисел Фибоначчи каждое следующее число равно сумме двух предыдущих. Если первые два числа равны 0 и 1 соответственно, чему равно 50-е число последовательности?» Если модель составляет план решения на естественном языке и самостоятельно выполняет вычисления, ответ получается неверный. Если же решение сразу составляется на Python и расчеты передаются ему же, модель выдает правильный ответ.
Рисунок 16. Техника Program-of-Thoughts. Модель получает задачу, требующую сложных расчетов: «В последовательности чисел Фибоначчи каждое следующее число равно сумме двух предыдущих. Если первые два числа равны 0 и 1 соответственно, чему равно 50-е число последовательности?» Если модель составляет план решения на естественном языке и самостоятельно выполняет вычисления, ответ получается неверный. Если же решение сразу составляется на Python и расчеты передаются ему же, модель выдает правильный ответ.

Аналогичным образом работает техника Faithful CoT, только в ней модель параллельно рассуждает на естественном языке и на языке программного кода (см. Рисунок 17).

Рисунок 17. Техника Faithful CoT. Модель сначала генерирует инструкцию на естественном языке: «Напиши функцию, которая позволит выполнить следующее действие». Далее функция пишется уже на языке программирования, и все расчеты снова передаются Python. Если того требует задача, могут использоваться и другие языки программирования.
Рисунок 17. Техника Faithful CoT. Модель сначала генерирует инструкцию на естественном языке: «Напиши функцию, которая позволит выполнить следующее действие». Далее функция пишется уже на языке программирования, и все расчеты снова передаются Python. Если того требует задача, могут использоваться и другие языки программирования.

Техника «Скелет размышлений» (Skeleton-of-Thought) позволяет значительно ускорить процесс генерации ответа. Получив исходный запрос, модель создает «скелет» решения – выделяет основные подзадачи. Далее подзадачи обрабатываются параллельно (= одновременно), и полученные решения объединяются для генерации итогового ответа (см. Рисунок 18).

Рисунок 18. Техника «Скелет размышлений» 
Рисунок 18. Техника «Скелет размышлений» 

Заключительная техника в этом блоке – метакогнитивный промптинг (Metacognitive Prompting). Промпты в этой технике включают пять элементов, соответствующих тем пяти этапам, которые проходит человек, решая задачу:

  1. уточнение вопроса;

  2. первичное решение;

  3. оценка первичного решения;

  4. выбор итоговой стратегии; 

  5. оценка степени уверенности в выбранной стратегии.

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

____________________

Продолжение следует. В следующих статьях цикла мы обсудим:

3. другие продвинутые техники промптинга: Ensembling и Self-Criticism;

4. мультимодальные и мультиязыковые техники;

5. техники промптинга для ИИ-агентов;

6. способы предотвращения промпт-инъекций и снижения риска галлюцинаций.

Надеемся, было полезно. Приглашаем подписаться, если вам нравится наш выбор публикаций по ИТ (стараемся выбирать и переводить терминологически насыщенные статьи, для расширения понятийного аппарата в ИТ-переводах)

Комментарии (2)


  1. rmasemargl
    14.10.2025 23:13

    Этот автор у меня в заблокированных. Администрация хабра, поясните, почему я вижу его посты в ленте? Чёпный список не работает, похоже.


  1. fixikus
    14.10.2025 23:13

    Ну и упоролись же вы в свои ии, правда выхлопа нуль