TL;DR
CoT-PoT — техника, которая проверяет ответ не через повторение, а через смену языка мышления. Сначала модель решает задачу словами шаг за шагом (CoT — Chain-of-Thought), потом — через код и вычисление (PoT — Program-of-Thought). Совпадение двух принципиально разных подходов — сильный сигнал что ответ верный.
Обычная проверка "реши ещё несколько раз" почти бесполезна: модель воспроизводит один паттерн рассуждений с вариацией слов. Если в расчёте допущена ошибка — она воспроизведётся в большинстве попыток. Это не разные мнения, это перефразирование одной ошибки.
CoT и PoT ошибаются по-разному: словесный анализ может напутать в арифметике ("53 − 35 = 8"), а код может неверно сформулировать логику (перепутать деление с остатком от деления). Когда оба метода приходят к одному ответу — это согласие двух независимых систем, а не случайность. В исследовании 78.6% задач закрывались ровно двумя запросами без дальнейшей проверки.
Схема метода
ШАГ 1: Реши задачу словами (CoT)
→ пошаговое рассуждение на естественном языке
ШАГ 2: Реши ту же задачу через Python-код (PoT)
→ код + результат выполнения
ШАГ 3: Сравни ответы
→ Совпали → высокая уверенность, принимаем
→ Не совпали → ищем ошибку, запрашиваем ещё раз
Все три шага выполняются в одном промпте, если модель поддерживает выполнение кода (ChatGPT с Code Interpreter, Claude с Artifacts).
Пример применения
Задача: Проверить расчёт юнит-экономики перед питчем инвесторам. Одна цифра выглядит странно — нужна уверенность, что LTV и LTV/CAC посчитаны правильно.
Промпт:
Перед тобой задача по юнит-экономике. Реши её двумя разными способами.
Исходные данные:
- Средний чек: 4 200 ₽
- Маржинальность: 40%
- Среднее время жизни клиента: 18 месяцев
- Стоимость привлечения клиента (CAC): 6 500 ₽
**Способ 1 — Рассуждение словами:**
Пройди по шагам: посчитай LTV, потом LTV/CAC. Объясни каждый шаг.
**Способ 2 — Python-код:**
Напиши и выполни код, который считает те же величины. Выведи результат.
После обоих способов:
- Если ответы совпали → напиши "Результат подтверждён двумя методами: [итог]"
- Если не совпали → укажи расхождение и найди где ошибка
Результат:
Модель покажет два решения подряд. В первом — пошаговый расчёт словами: LTV = 4200 × 0.4 × 18 = X, LTV/CAC = X / 6500. Во втором — Python-код с переменными и print(). Если результаты совпадают — финальная строка подтверждает это явно. Если расходятся — модель находит где именно сломалась логика или вычисление. Вы получаете не просто ответ, а верифицированный ответ с двойной логикой.
Почему это работает
LLM плохо замечает собственные ошибки. Если попросить "проверь ещё раз" — модель читает свой же текст и соглашается с собой. Это как самопроверка диктанта: видишь то, что написал, а не то, что есть на самом деле.
У модели есть два принципиально разных режима мышления. Словесный (CoT) — гибкий, человекоподобный, но склонен к арифметическим ошибкам и пропускам. Программный (PoT) — точный в вычислениях, но может неверно сформулировать саму логику задачи. Ошибки этих режимов почти не пересекаются — это и есть ключ.
Совпадение = резонанс двух независимых систем. Когда конкретный ответ получен и через словесную логику, и через формальный код — вероятность случайного совпадения неверных ответов крайне мала. Исследование показало: если CoT и PoT сошлись, ответ был либо правильным, либо задача была вообще за пределами возможностей модели — и тогда даже 40 попыток не помогут. Авторы назвали это "безопасным результатом" — честнее, чем обещать "всегда верно".
Рычаги управления:
- "Результат подтверждён" — явный триггер делает итог однозначным, не нужно сравнивать вручную
- "Найди где ошибка" при расхождении → модель глубже анализирует конфликт двух ответов
- Для сложных задач после расхождения: третий запрос — "какой из двух ответов скорее верный и почему"
- Без Code Interpreter: убери шаг выполнения, оставь структуру двух подходов — принцип работает, надёжность чуть ниже
Шаблон промпта
Реши задачу двумя способами.
{задача_или_данные}
**Способ 1 — Рассуждение словами:**
Пройди по шагам, объясняя каждый. Приди к конкретному ответу.
**Способ 2 — Python-код:**
Напиши и выполни код, который решает ту же задачу. Покажи результат.
После обоих способов:
- Если ответы совпали → "Результат подтверждён: [ответ]"
- Если не совпали → найди расхождение и определи где ошибка
Плейсхолдеры:
- {задача_или_данные} — формулировка задачи, числа, условия, контекст
🚀 Быстрый старт — вставь в чат:
Вот шаблон CoT-PoT для двойной проверки ответа.
Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы заполнить нужные данные.
[вставить шаблон выше]
LLM спросит исходные данные и условия — потому что без них невозможно запустить оба способа и сравнить результаты. Она возьмёт структуру "реши дважды + сравни" и подставит твою конкретику.
Ограничения
⚠️ Требует выполнения кода: PoT-шаг в полной силе работает в ChatGPT с включённым Code Interpreter или в Claude с Artifacts. Без выполнения кода модель напишет код, но не запустит его — сравнение менее надёжно, хотя принцип двух подходов всё равно улучшает качество по сравнению с одним запросом.
⚠️ Лучше всего для количественных задач: Математика, финансы, логика с однозначным ответом. Для открытых задач ("напиши текст", "придумай стратегию") метод не применим — там нет объективного критерия совпадения.
⚠️ Расхождение — тоже ценный результат: Если CoT и PoT не сошлись — это сигнал "задача сложнее чем кажется". Не угадывай правильный ответ, копай глубже.
⚠️ "Стоп на двух" работает статистически: Метод закрывает 78% задач двумя запросами. Оставшиеся 22% требуют дополнительных итераций — особенно сложная математика олимпийского уровня.
Как исследовали
Команда взяла пять датасетов с принципиально разными типами задач: школьная математика (GSM8K), олимпийная математика (MATH), финансовый анализ по реальным отчётам (FinQA), задачи с арифметическими ловушками (SVAMP) и задачи с таблицами (TabMWP). На каждой задаче прогоняли до 40 запросов, чередуя CoT и PoT, и сравнивали с классическим голосованием большинством.
Самый любопытный вывод — не в точности, а в таблице вероятностей. Параметр a₂ — вероятность что ответ верный при условии совпадения CoT и PoT — оказался ≥ 0.991 для всех шести протестированных моделей, от GPT-3.5 до DeepSeek R1. Это почти детерминированный сигнал: если оба метода сошлись, ответ либо правильный, либо задача за пределами возможностей модели в принципе. Авторы честно назвали это "безопасным результатом" — не "всегда верно", а "лучшее что мы можем получить".
Неожиданно хорошо метод срабатывал именно для мощных reasoning-моделей типа DeepSeek R1 — у них больший процент задач закрывался за два запроса. Логика: чем сильнее модель, тем выше внутренняя уверенность в правильных ответах, тем быстрее CoT и PoT сходятся.
Адаптации и экстраполяции
Суть метода — не в CoT vs PoT, а в двух режимах с разными типами ошибок. Этот принцип применим шире, чем математика.
🔧 "Аналитик vs Практик" для бизнес-решений
Попроси оценить ситуацию дважды — через структурный разбор и через "нутром опытного практика". Если оба указывают в одну сторону — сигнал сильнее, чем один глубокий анализ.
Оцени эту бизнес-идею двумя способами.
{описание идеи}
**Способ 1 — Структурный анализ:**
Разбери по критериям: рынок, конкуренция, бизнес-модель, риски.
Итог: стоит двигаться или нет?
**Способ 2 — Gut check опытного предпринимателя:**
Без таблиц. Что сразу бросается в глаза? Какой инстинкт?
Итог: стоит двигаться или нет?
Если оценки совпали → "Сигнал однозначен: [вывод]"
Если разошлись → "Противоречие. Вот в чём оно: [разбор]"
⚠️ Это экстраполяция принципа, не оригинальный метод. Математической гарантии нет — но "два разных режима > повторение одного" работает шире, чем математика.
Ресурсы
Self-Consistency from Only Two Samples: CoT–PoT Ensembling for Efficient LLM Reasoning — Raman Saparkhan (Carnegie Mellon University Qatar), Majd Hawasly, MD Rizwan Parvez, Mohammad Raza (Qatar Computing Research Institute, HBKU)
Связанные работы: Self-Consistency (Wang et al., 2022), Adaptive Consistency (Aggarwal et al., 2023), Chain-of-Thought (Wei et al., 2022), Program-of-Thought (Chen et al., 2023; Gao et al., 2023)
