TL;DR
Когда вы даёте LLM цепочку рассуждений с ошибкой и просите её продолжить — модель почти всегда идёт вперёд как ни в чём не бывало. Она не перепроверяет ваши шаги. Она достраивает здание на кривом фундаменте. Это проблема не конкретной модели — это системное поведение большинства LLM при работе с частичными рассуждениями.
Исследователи выделили пять типов ошибок, которые можно внедрить в промежуточные шаги рассуждения, и проверили как 13 разных моделей на них реагируют. Главная находка: уязвимости неодинаковые. Одни ошибки убивают точность у малых моделей, но крупные их замечают. Другие — и GPT-5, и маленькая Gemma одинаково не видят. А третьи вообще не влияют ни на кого.
Практический итог: лишний контекст безвреден, единицы измерения — слепое пятно даже у топовых моделей, а арифметические ошибки модели либо исправляют сами (крупные), либо тиражируют дальше (малые). Понимание этой карты уязвимостей меняет то, как стоит строить промпты с цепочкой рассуждений и проверять ответы.
Схема метода (таксономия уязвимостей)
ТИП 1: MathError → арифметическая ошибка в шаге (3+4=8)
Эффект: -18% точности в среднем, малые модели теряют 50-60%
Крупные модели: часто ИСПРАВЛЯЮТ сами
ТИП 2: UnitConversion → смена единиц в середине (минуты → секунды)
Эффект: -20-30% точности ДАЖЕ у крупных моделей
⚠️ Главное слепое пятно — универсальное
ТИП 3: SkippedSteps → убраны промежуточные шаги
Эффект: -15% точности
Модель угадывает ответ напрямую
ТИП 4: Sycophancy → "автор задачи считает, что 3/4×4000 = -8528"
Эффект: -7% точности у малых моделей
Модели умеренно устойчивы к ложным авторитетам
ТИП 5: ExtraSteps → лишние, нерелевантные шаги добавлены
Эффект: 0-6% точности — практически никакого вреда
✅ Лишний контекст безопасен
Все пять типов проверялись как единый промпт (частичное решение + вопрос → модель дополняет).
Пример применения
Задача: Вы делаете финансовую модель для запуска подписки на Кинопоиске. Вы уже посчитали первые шаги вручную и просите LLM продолжить расчёт. Шаги переведены из месячных данных в годовые — и где-то закралась ошибка в конвертации.
Промпт:
Я считаю юнит-экономику для нового тарифа.
Вот мои расчёты:
— Средний чек: 399 руб/месяц
— Отток: 8% в месяц
— LTV = 399 / 0.08 = 4987 руб
— За год в рублях: 4987 × 12 = 59 844 руб
[Дальше продолжи расчёт: посчитай LTV в долларах по курсу 90 руб/$,
и ROI при CAC = $15]
⚠️ Прежде чем продолжать — проверь мои шаги выше на корректность.
Если видишь ошибку в единицах или арифметике — укажи и исправь
перед тем как идти дальше.
Результат:
Без финальной инструкции ⚠️ Прежде чем продолжать... — модель с высокой вероятностью пойдёт дальше с ошибочным LTV×12 (LTV уже учитывает бесконечный горизонт, умножать на 12 — математическая ошибка). С инструкцией — поймает и исправит. Особенно надёжно работает на крупных моделях (Claude Sonnet, GPT-5, Gemini Flash).
Почему это работает
LLM не перепроверяет — она достраивает. Модель видит частичное рассуждение и её задача — продолжить текст в том же стиле и направлении. У неё нет встроенного "стоп-контроля" который говорит: "подожди, на шаге 2 ошибка". Она воспринимает данные в промпте как контекст, которому нужно соответствовать, не как утверждения которые нужно проверять.
Единицы — особая слабость потому что модель работает с числами как с токенами, а не с физическими величинами. Ей безразлично написано "240 минут" или "14 400 секунд" — оба варианта синтаксически корректны. Семантическое несоответствие (это одно и то же значение, но в разных единицах) она не отслеживает автоматически.
Лишний контекст не вредит — потому что модели хорошо умеют фильтровать нерелевантную информацию при наличии чёткой задачи. Это разрешение: если вы объясняете модели контекст многословно — ответ не ухудшится. Вреден не объём, а противоречие в данных.
Рычаги управления:
- Добавить "проверь предыдущие шаги перед продолжением" → включает режим критики, а не достройки
- Указать конкретно "особо проверь единицы измерения" → компенсирует главное слепое пятно
- Убрать от греха подальше "автор/эксперт считает что..." → сицофантия слабая, но зачем рисковать?
Шаблон промпта
Вот моё частичное решение задачи:
[Задача/вопрос]
Мои шаги:
[шаг 1]
[шаг 2]
[шаг 3]
...
⚠️ Проверь мои шаги до того как продолжать:
— Нет ли арифметических ошибок?
— Единицы измерения согласованы на каждом шаге?
— Нет ли пропущенной логики?
Если всё верно — продолжи и дай финальный ответ.
Если нашёл ошибку — укажи где и исправь, потом продолжи.
Плейсхолдеры:
- {задача} — условие или вопрос, который решаете
- {шаги} — ваши расчёты, которые модель должна продолжить
- Секцию ⚠️ можно расширить под контекст: добавить "проверь логику предположений" для стратегических расчётов
🚀 Быстрый старт — вставь в чат:
Вот шаблон верификации частичного решения. Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит что за задача, какие шаги уже есть и на что особо обратить внимание — потому что это определяет какой тип проверки нужен (арифметика, единицы, логика).
Ограничения
⚠️ Малые модели (3-8B параметров): Верификация работает хуже. Та же модель, которой поручаешь проверить — и есть модель, которая не замечает ошибок. В Chat-режиме это не ваша проблема (ChatGPT/Claude — всегда крупные), но важно знать если используете локальные модели.
⚠️ Только математические рассуждения: Исследование тестировалось на задачах школьной математики (GSM8K). Насколько эффект переносится на логические рассуждения, правовой анализ или стратегию — не проверялось. Вероятно, принцип работает шире, но цифры будут другие.
⚠️ Единицы — слепое пятно даже у топов: Инструкция "проверь единицы" помогает, но не на 100%. Если точность критична (финансовые расчёты, дозировки) — всегда делайте финальную ручную проверку единиц.
⚠️ Размер не гарантирует робастность: В одном измерении (согласованность при разных формулировках) небольшая 8B-модель обогнала некоторые 70B-модели. Устойчивость к ошибкам — не прямая функция от размера.
Как исследовали
Команда взяла датасет GSM8K — задачи школьной математики с целочисленными ответами — и сделала хитрую вещь: вместо того чтобы давать модели полную задачу, они давали ей частичное решение с намеренно внедрённой ошибкой. Задача модели — продолжить и дать ответ. Потом сравнивали точность на чистых и испорченных цепочках.
Всего проверили 13 моделей — от крошечной Ministral 3B до GPT-5 и Claude Sonnet 4.5, и от полностью открытых до проприетарных. Это важно: картина всегда рисовалась на одном-двух флагманах, теперь видно системный паттерн поперёк всего спектра. Особо интересный момент: MathError и Sycophancy генерировались детерминированно по правилам, а UnitConversion и ExtraSteps — с помощью Claude Sonnet 4.5. То есть та самая модель, которую тестировали — частично создавала тестовые данные. Авторы это открыто признают.
Самый неожиданный результат — GPT 4o-mini терял 25% точности на арифметических ошибках, тогда как заметно меньший по репутации Gemini 3 Flash — только 1%. Размер модели явно не единственный фактор. Ещё интереснее: на примерах видно три разных стратегии поведения — одни модели слепо копируют ошибку (GPT 4o-mini в примере с Марком), другие явно исправляют и объясняют почему (Gemini 3 Flash), третьи молча исправляют без объяснений (Mistral Large). Эти поведенческие паттерны важнее сухих цифр.
Оригинал из исследования
Пример MathError — как внедряется ошибка:
Question:
Mark started the day with 14 buttons. His friend Shane gave him 3 times
that amount of buttons. Then his other friend Sam asked if he could have
half of Mark's buttons. How many buttons did Mark end up with?
Clean Partial Solution:
Shane gave Mark 14 × 3 = 42 buttons
After that Mark had 42 + 14 = 56 buttons
Perturbed Partial Solution:
Shane gave Mark 14 × 3 = 42 buttons
After that Mark had 42 + 14 = 54 buttons [arithmetic error introduced]
Контекст: Модели давали перверженное частичное решение и просили завершить расчёт. GPT 4o-mini принял 54 как данность и вычислил 27. Gemini 3 Flash — заметил "опечатку", пересчитал правильно и получил 28.
Адаптации и экстраполяции
💡 Адаптация: Явный указатель на единицы в технических задачах
Если вы пишете промпт с данными в разных единицах (рубли и доллары, часы и минуты, проценты и доли) — добавляйте явный "чекпоинт единиц":
Вот данные для анализа:
— Выручка: 2,4 млн руб/мес
— CAC: $120 (курс 90 руб/$)
— Конверсия: 3.2% (из 100 лидов)
— Отток: 0.08 (доля, не проценты)
⚠️ Перед расчётом: приведи все данные к единой системе единиц.
Покажи список: что во что конвертируешь и по какому правилу.
Потом считай.
Это напрямую компенсирует главное слепое пятно — UnitConversion.
🔧 Техника: Явная верификация vs. молчаливая коррекция
По умолчанию крупные модели молча исправляют ошибки (Mistral Large в примере). Это опасно — вы не знаете что они исправили. Чтобы видеть исправления:
Если найдёшь ошибку в моих шагах — НЕ исправляй молча.
Сначала: "Ошибка на шаге N: [что написано] → [должно быть]."
Потом продолжай с правильным значением.
Делает процесс прозрачным — вы видите где ваша логика разошлась с реальностью.
💡 Экстраполяция: "Лишний контекст безвреден" как разрешение
Находка про ExtraSteps (0-6% потери) — это ещё и разрешение быть многословным. В сложных задачах часто бывает импульс "не перегружать модель". Теперь знаем: объём нерелевантного контекста почти не вредит точности. Можно добавлять предысторию, объяснять мотивацию, давать примеры — модель отфильтрует лишнее и найдёт ключевую задачу.
Ресурсы
Название работы: Fragile Thoughts: How Large Language Models Handle Chain-of-Thought Perturbations
Код и результаты: github.com/Mystic-Slice/CoTPerturbation
Авторы: Ashwath Vaithinathan Aravindan, Mayank Kejriwal
Организации: University of Southern California, Los Angeles; USC Information Sciences Institute
