Подсказки с рассуждением по шагам
Получение пошагового рассуждения
«Подсказки с рассуждением по шагам» — бесплатный урок AI Prompt Engineering на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Prompt Engineering, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Prompt Engineering содержит 4 уроков всего.
Рассуждение как бюджет токенов
Цепочка рассуждений (CoT) в промпте побуждает модель сформулировать промежуточные шаги рассуждения перед финальным ответом. Ключевая идея такова: трансформеры выполняют фиксированный объём вычислений для каждого токена, поэтому возможность генерировать токены рассуждений фактически предоставляет модели больше последовательных вычислений для получения ответа.
Требование немедленно дать ответ ограничивает доступный для сложной задачи объём вычислений; CoT снимает это ограничение, распределяя вычисления между генерируемыми токенами.
# Direct: model must compute everything before the first token
DIRECT = 'Q: ' + q + '\nA:'
# CoT: model can use tokens as scratch space
COT = 'Q: ' + q + '\nA: Let us reason step by step.'CoT без примеров
Известная фраза-триггер «Давайте подумаем шаг за шагом» (Kojima и др., 2022) побуждает модель рассуждать, используя без примеров. Это работает, поскольку модели, дообученные следовать инструкциям, усвоили закономерность: такая фраза обычно предшествует решению с объяснением.
CoT без примеров дёшев и удивительно эффективен, но качество его рассуждений контролируется хуже, чем качество CoT по нескольким примерам с тщательно подобранными образцами.
def zero_shot_cot(question):
stage1 = llm('Q: ' + question + '\nA: Let us think step by step.')
# Extract the final answer in a second, constrained call
stage2 = llm(stage1 + '\nTherefore, the final answer is:')
return parse_answer(stage2)CoT по нескольким примерам
CoT по нескольким примерам (Wei и др., 2022) предоставляет образцы, включающие цепочку рассуждений, а не только ответ. Это обучает и тому, как рассуждать, и нужному формату, благодаря чему цепочки становятся надёжнее и последовательнее, чем при использовании варианта без примеров.
Подбирайте образцы, стиль, детализация и длина рассуждений в которых соответствуют тому, что Вы хотите воспроизводить. Непоследовательные рассуждения в образцах приводят к непоследовательным цепочкам.
FS_COT = (
'Q: Roger has 5 balls, buys 2 cans of 3. How many balls?\n'
'A: 5 + 2*3 = 5 + 6 = 11. The answer is 11.\n\n'
'Q: ' + question + '\nA:'
)Отделение рассуждений от ответа
Всегда делайте финальный ответ пригодным для автоматического извлечения: завершайте цепочку фиксированным маркером, например «Ответ: X» или полем JSON. Разбор цепочек в свободной форме ненадёжен.
В продуктах, ориентированных на пользователей, можно скрывать цепочку и показывать только разобранный ответ, сохраняя рассуждения во внутренней рабочей области.
import re
def extract(chain):
m = re.search(r'[Tt]he answer is\s*(.+?)[.\n]', chain)
if not m:
raise ValueError('no answer marker found')
return m.group(1).strip()Достоверность не гарантируется
Важно учитывать: словесно изложенная цепочка может не отражать настоящие вычисления модели. Исследования показывают, что модели могут выдавать правдоподобные рассуждения, которые задним числом рационализируют ответ, обусловленный скрытыми смещениями, например положением варианта ответа.
Не считайте CoT достоверным объяснением или журналом аудита. Он повышает точность во многих задачах, но не показывает фактический механизм работы модели.
# Faithfulness probe: perturb an irrelevant cue (e.g., always make
# option A correct in the few-shot). If the chain still 'justifies'
# choosing A, the stated reasoning is unfaithful to the real cause.Параметры декодирования для CoT
Для одной детерминированной цепочки низкая температура уменьшает разброс результатов. Однако CoT особенно хорошо сочетается с выборкой: при умеренной температуре можно получить несколько разнообразных цепочек и объединить их результаты, что рассматривается в разделе о самосогласованности.
Не используйте жадное декодирование, если намерены выбирать несколько путей: жадный метод устраняет разнообразие и делает объединение результатов бессмысленным.
single = llm(COT, temperature=0.0) # one stable chain
paths = [llm(COT, temperature=0.7) for _ in range(10)] # diverseСтруктурированное рассуждение и рассуждение по таблицам
Для сложных задач задавайте структуру цепочки: нумерованные шаги, таблицу состояний или разделение на этап планирования и этап выполнения. Структура уменьшает число пропущенных шагов и делает промежуточное состояние проверяемым.
Подходы с поддержкой программ идут дальше: они выдают исполняемый код в качестве рассуждения и передают арифметические вычисления интерпретатору, устраняя целый класс вычислительных ошибок.
PAL = (
'Solve by writing Python. Q: ' + q + '\n'
'A:\ndef solve():\n'
' # the model writes code here, then we exec() it\n'
)
# Offload arithmetic to a deterministic interpreterДлина, стоимость и задержка
CoT увеличивает число выходных токенов, повышая стоимость и задержку. Для простых элементов эти затраты ничего не дают, а для сложных задач необходимы. Практичный подход — adaptive-рассуждение: запускайте CoT только тогда, когда недорогая оценка сложности или ответ с низкой уверенностью напрямую этого требуют.
В моделях рассуждений со встроенным обдумыванием вместо этого управляйте бюджетом усилий на рассуждение, а не задавайте цепочку самостоятельно.
def adaptive(question):
direct = llm('Q: ' + question + '\nA (answer only):', temperature=0)
if confidence(direct) > 0.85:
return direct
return zero_shot_cot(question) # escalate to reasoning only if neededCoT для моделей, предназначенных для рассуждений
Современные модели рассуждений автоматически выполняют длительное внутреннее обдумывание. Перегружать их подробными инструкциями «Давайте подумаем шаг за шагом» может быть избыточно или даже контрпродуктивно, поскольку это мешает обученному процессу мышления.
Для таких моделей отдавайте предпочтение кратким формулировкам задач и явным требованиям к формату ответа, а параметр усилий на рассуждение настраивайте вместо ручного составления цепочек.
# Reasoning-native model: let it think, just constrain the output
resp = reasoning_model(
prompt=question,
reasoning_effort='medium',
output_format='Final answer on the last line as: ANSWER=<x>'
)Когда CoT даёт обратный эффект
CoT может ухудшать результаты в задачах, где обдумывание подавляет правильную интуицию, при простом сопоставлении с образцом или когда формулирование рассуждений порождает ошибки, которых модель не допустила бы при неявном рассуждении. Кроме того, длинные цепочки увеличивают поверхность атаки для внедрения инструкций в запрос.
Сравнивайте CoT с прямым ответом для каждой задачи; никогда не предполагайте, что запросы на рассуждение полезны всегда.
def should_use_cot(task_acc_cot, task_acc_direct, cot_cost_mult):
gain = task_acc_cot - task_acc_direct
# Only adopt CoT if accuracy gain justifies the token multiplier
return gain > MIN_GAIN and gain / cot_cost_mult > MIN_EFFICIENCYВвод CoT в эксплуатацию
Применение CoT в эксплуатации: подбирайте согласованные примеры (или полагайтесь на встроенное рассуждение модели), требуйте пригодный для разбора маркер answer, создавайте несколько цепочек для сложных элементов, по возможности проверяйте арифметику выполнением кода и включайте рассуждение только с учётом оценки сложности, чтобы контролировать затраты.
Записывайте цепочки для автономного анализа, но никогда не выдавайте их за эталонные объяснения.
def production_solve(q):
if easy(q):
return extract(llm(DIRECT_PROMPT.format(q=q), temperature=0))
chains = [llm(FS_COT.format(q=q), temperature=0.7) for _ in range(8)]
return majority_vote([extract(c) for c in chains])Быстрая проверка
Рассмотрите, почему CoT помогает и в каких случаях — нет.
Итоги
Главные выводы:
- CoT обменивает дополнительные токены на дополнительные последовательные вычисления; он помогает в многошаговых задачах, но не в тривиальных.
- CoT без примеров использует фразу-триггер; CoT с несколькими примерами предоставляет согласованные примеры рассуждений.
- Всегда завершайте рассуждение пригодным для машинного извлечения маркером ответа; цепочки не являются достоверными объяснениями.
- Создавайте несколько цепочек для сложных элементов, поручайте арифметику коду и включайте CoT только с учётом сложности.
- Для моделей со встроенным рассуждением предпочитайте краткие запросы и бюджет усилий на рассуждение вместо подробных инструкций по построению цепочки.
Часто задаваемые вопросы
Урок «Подсказки с рассуждением по шагам» бесплатный?
Да — полный текст урока «Подсказки с рассуждением по шагам» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Prompt Engineering, подпишись на CoddyKit PRO. Курс AI Prompt Engineering содержит 4 уроков всего.
Чему я научусь в уроке «Подсказки с рассуждением по шагам»?
Получение пошагового рассуждения Ты практикуешь AI Prompt Engineering с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AI Prompt Engineering?
Предыдущий опыт не требуется. AI Prompt Engineering на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Подсказки с рассуждением по шагам»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AI Prompt Engineering?
Да. Каждый урок AI Prompt Engineering включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Подсказки с рассуждением по шагам
- Выборка с самосогласованностью
- Исследование дерева мыслей
- Когда подсказки с рассуждением помогают