Zero-shot CoT: «Давай подумаем шаг за шагом»
Zero-shot CoT: «Давай подумаем шаг за шагом»
В прошлом уроке мы узнали, ЧТО такое Chain of Thought. Теперь — самый простой способ его применить. Zero-shot CoT — это когда ты не даёшь модели примеров рассуждений, а просто просишь её «подумать шаг за шагом». Одна фраза в конце промпта — и модель начинает рассуждать.
Волшебная фраза
Вся техника сводится к добавлению в промпт одной из фраз:
- «Давай подумаем шаг за шагом.»
- «Рассуждай последовательно.»
- «Подумай шаг за шагом, прежде чем ответить.»
- «Let's think step by step.»
Эти фразы действуют как «спусковой крючок» — модель переходит в режим последовательного рассуждения.
До и после
Без CoT (вход):
У Маши было 40 яблок. Она отдала Пете половину, а Васе — треть
оставшихся. Сколько яблок осталось у Маши?
Выход (без CoT — ошибочный или неуверенный):
У Маши осталось 10 яблок.
Неверно. Правильный ответ — не 10.
С zero-shot CoT (вход):
У Маши было 40 яблок. Она отдала Пете половину, а Васе — треть
оставшихся. Сколько яблок осталось у Маши?
Давай подумаем шаг за шагом.
Выход (с CoT — правильный):
Шаг 1: У Маши было 40 яблок.
Шаг 2: Она отдала Пете половину.
Половина от 40 = 20 яблок.
Осталось: 40 - 20 = 20 яблок.
Шаг 3: Васе она отдала треть оставшихся.
Треть от 20 = 20 / 3 ≈ 6.67. Так как яблоки целые, округлим
до 6 или 7. Но в задачах обычно подразумевается точное деление,
если не сказано иное. 20 / 3 — не целое число. Вероятно, имеется
в виду 1/3 от 20 = 6 и 2/3 яблока. Возьмём 6 целых яблок
(или 7, если округлить вверх).
Шаг 4: Осталось: 20 - 6 = 14 яблок (или 13 если отдать 7).
Но давай пересчитаем. Если от трети подразумевается точное
математическое значение: 20 × (1 - 1/3) = 20 × 2/3 ≈ 13.33.
Целых яблок осталось 13 (и треть яблока).
Ответ: у Маши осталось 13 целых яблок (и ещё треть).
CoT не только дал правильный ответ, но и подсветил неоднозначность в условии задачи («треть оставшихся» при 20 яблоках не делится на 3 нацело). Без CoT модель просто выдала число.
Где размещать «волшебную фразу»
Фразу «Давай подумаем шаг за шагом» лучше всего размещать в конце промпта, после условия задачи. Тогда модель сначала «прочитает» задачу, а затем получит инструкцию к рассуждению.
Можно и в начале:
Давай подумаем шаг за шагом.
Задача: ...
Но в конце надёжнее — модель видит задачу, а затем «спусковой крючок».
Zero-shot CoT + формат
Можно комбинировать CoT с управлением выводом:
Реши задачу. Давай подумаем шаг за шагом.
После рассуждения дай ОТВЕТ одной строкой в формате:
ОТВЕТ: <число>
Задача: У Маши было 40 яблок. Она отдала Пете половину, а Васе —
треть оставшихся. Сколько яблок осталось у Маши?
Выход:
Шаг 1: 40 яблок, отдала половину = 20 Пете. Осталось 20.
Шаг 2: От оставшихся 20 отдала треть = 20/3 ≈ 6.67. Так как яблоки
целые — отдала 6 (или 7, но обычно в задачах подразумевается
округление вниз при «отдала»). Осталось 20 - 6 = 14 (или 13).
Но 1/3 от 20 = 6 + 2/3. Если отдала 6 — осталось 14.
Если отдала 7 — осталось 13. В математических задачах без доп.
уточнений берём точное значение: осталось 20 - 20/3 = 40/3 ≈ 13.33.
ОТВЕТ: 13 (и треть яблока)
Ограничения zero-shot CoT
Zero-shot CoT — мощная техника, но не панацея:
- Не помогает, если модель не знает предмета. Если задача требует фактов, которых модель не знает, рассуждение их не создаст.
- Может увести в неверное рассуждение. Иногда модель уверенно рассуждает шаг за шагом... и приходит к неверному ответу. Поэтому всегда проверяй логику, а не только ответ.
- Увеличивает verbosity. Модель тратит токены на рассуждение, а не на ответ. В production это стоит денег.
Проверь себя
Возьми задачу из жизни: «Стоит ли мне брать ипотеку на 15 лет под 10% или на 20 лет под 9%?» Как применить zero-shot CoT к этому вопросу? Напиши промпт.
Пример ответа: «Я хочу понять, что выгоднее: ипотека на 15 лет под 10% или на 20 лет под 9%. Сумма кредита — 5 000 000 ₽. Давай подумаем шаг за шагом: сравни общую переплату и ежемесячный платёж для обоих вариантов. После рассуждения дай рекомендацию в одном предложении.»
Итог
- Zero-shot CoT — самая простая форма Chain of Thought. Достаточно добавить «Давай подумаем шаг за шагом» в конец промпта.
- Одна фраза превращает «быстрый и возможно ошибочный» ответ в «медленный и точный».
- Размещай «волшебную фразу» в конце промпта, после условия задачи.
- Комбинируй CoT с форматом ответа, чтобы разделить «рассуждение» и «итоговый ответ».
- Ограничения: не помогает, если модель не знает фактов; может дать уверенное, но неверное рассуждение; увеличивает расход токенов.
Что дальше
Zero-shot CoT — быстрый старт. Но что, если модель рассуждает неправильно даже с CoT? Тогда нужен few-shot CoT — мы показываем модели ПРИМЕРЫ правильных рассуждений, и она учится рассуждать по образцу. Об этом — следующий урок.