3,583 papers
arXiv:2610.18089 85 13 окт. 2026 г. FREE

OSVerify: проверка решения через поиск конкретных ошибок и отдельную проверку каждой

КЛЮЧЕВАЯ СУТЬ
Одна и та же модель, одни и те же данные: умение отличать плохое решение от хорошего (мера AUROC, где 0,5 — монетка, а 1,0 — идеал) выросло с 0,68 до 0,90. Метод OSVerify позволяет проверять расчёт, текст или решение и ловить настоящие ошибки без потока ложных тревог. Фишка: ищи подозрения щедро, а проверяй каждое строго и отдельно. Модель перестаёт оценивать всё сразу и по очереди отвечает на узкий вопрос: «в шаге 4 неверно посчитан НДС — это правда?»
Адаптировать под запрос
⚡

TL;DR

OSVerify — двухступенчатая проверка текста или решения. Сначала один запрос ищет подозрительные места: сначала в целом документе, потом в его частях, потом в отдельных шагах. Затем каждое найденное подозрение проверяется отдельным запросом с вердиктом: «не существует», «мелочь» или «существенная ошибка». Решение отклоняется, если нашлась хотя бы одна существенная ошибка.

Когда просишь модель «проверь, всё ли верно», она выдаёт общий вердикт, и он шумный. На одну и ту же работу она то пропускает ошибку, то бракует нормальное. Причина в том, что искать изъян по всему тексту сразу тяжело. А вот проверить одно конкретное утверждение «в шаге 4 неверно посчитан НДС» та же модель умеет заметно лучше. В статье качество разделения на уровне отдельной ошибки (AUROC, мера «насколько вердикт отличает плохое от хорошего») выросло с 0,68 до 0,90. Это та же модель, на тех же данных.

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

🔬

Схема метода

ШАГ 1 (предложитель): разбей решение на части → 
      ищи ошибки в целом, в половинах, в мелких кусках → 
      список «подозрений» (где, что не так, почему это ломает решение)

ШАГ 2 (валидатор, ОТДЕЛЬНЫЙ запрос на каждое подозрение):
      получает задачу + решение + ОДНО подозрение →
      NOT-REAL (выдумка) / MINOR (мелочь) / SUBSTANTIAL (ломает решение)

ШАГ 3 (вердикт): есть хотя бы один SUBSTANTIAL → отклонить / на ручной разбор
      нет → пропустить дальше
      (опционально: валидатор запускается несколько раз, смотрим долю голосов «SUBSTANTIAL»)

Шаги 1 и 2 — разные запросы (разные чаты или разные вызовы), чтобы валидатор не подхватывал уверенный тон предложителя.

🚀

Пример применения

Задача: Основатель сервиса быстрой доставки в Казани через ChatGPT собрал юнит-экономику для питча инвесторам: средний чек 1 150 ₽, стоимость доставки, маржа, окупаемость точки за 11 месяцев. Таблицу на 40 строк никто не проверял. Перед встречей нужно убедиться, что в расчётах нет дыр, которые инвестор найдёт за пять минут.

Промпт (шаг 1, предложитель):

Ты — жёсткий аудитор финмоделей. Твоя задача — найти места, 
где расчёт может быть неверным. Лучше предложить лишнее подозрение, 
чем пропустить настоящую ошибку.

Ниже юнит-экономика сервиса быстрой доставки в Казани.
{вставить расчёт}


1. Разбей расчёт на две смысленные половины (граница — по логике, не по длине).
2. Каждую половину раздели ещё раз на две части.
3. Проверь ошибки на трёх уровнях: весь расчёт целиком (логика, допущения), 
   половины, отдельные куски (арифметика, единицы, источники цифр).



Список подозрений. Для каждого:
- Где: цитата проблемного места
- Что не так: конкретно
- Почему это ломает вывод: как это влияет на итог (окупаемость, маржа)
Если подозрений на каком-то уровне нет — напиши «нет».

Промпт (шаг 2, новый чат, по одному подозрению):

Ты — независимый рецензент. Тебе дали расчёт и одно утверждение 
о том, что в нём есть ошибка. Проверь именно это утверждение.

<Расчёт>{вставить расчёт целиком}
<Подозрение>{одно подозрение из шага 1}


1. Проверь, верно ли утверждение вообще. Если нет — ответ NOT-REAL.
2. Если ошибка настоящая — оцени, меняет ли она итоговый вывод 
   (окупаемость, маржу, решение инвестировать). 
   Меняет существенно — SUBSTANTIAL. Не меняет — MINOR.


Вердикт: NOT-REAL / MINOR / SUBSTANTIAL + 2–3 предложения обоснования.

Результат: Шаг 1 даст список из нескольких подозрений, часть из них будет натянутой. Шаг 2 для каждого подозрения вернёт один из трёх вердиктов с коротким обоснованием. Выдуманные претензии отсеются как NOT-REAL, мелочи уйдут в MINOR. Останутся те, что реально меняют окупаемость. Их основатель правит до питча.

🧠

Почему это работает

Слабость: когда модель оценивает целиком, ей нужно одновременно держать весь текст и искать, что в нём не так. Вердикт получается размытым. Одна и та же ошибка то замечена, то нет. Если запустить проверку 64 раза, результат улучшается, но быстро упирается в потолок. Просто «больше проверок» не помогает.

Сильная сторона: модель хорошо проверяет узкое конкретное утверждение, когда ей показали, куда смотреть. В статье опираются на наблюдение: модели часто не находят ошибку сами, но исправляют её, если место указано. Поиск и проверка — разные по сложности задачи.

Как метод это использует: этап поиска намеренно щедрый, с высоким охватом, пусть и с ложными срабатываниями. Этап проверки строгий и узкий и отсеивает лишнее. Так общая ошибка снижается: нужное находится, а лишнее выбрасывается.

Рычаги управления: - Глубина разбиения → в статье большая часть выигрыша приходит при двух уровнях (целое → половины → четверти). Для коротких текстов хватит одного. - Число запусков валидатора → чем строже требование «не потерять хорошее решение», тем больше повторов на одно подозрение нужно. Для обычной работы хватит 3–5. - Определение «существенной ошибки» → пропиши в промпте, что для твоей задачи мелочь, а что критично. В доказательстве мелкие неточности допустимы, в продакшене они могут стоить аварии. - Повторный поиск на корне → если запустить предложителя на всём документе два-три раза, охват растёт.

📋

Шаблон промпта

Предложитель:

Ты — придирчивый рецензент. Найди места, где {тип_материала} 
может быть ошибочным. Лучше лишнее подозрение, чем пропущенная ошибка.

{задача_или_цель}
Материал для проверки: {текст}


1. Раздели материал на две логические части (граница по смыслу).
2. Каждую часть раздели ещё на две.
3. Ищи ошибки на всех уровнях: целое (логика, допущения), 
   части (согласованность), мелкие куски (факты, цифры, формулировки).



Список подозрений. Каждое: 
- Где: {цитата}
- Что не так: {конкретно}
- Почему это ломает результат: {как влияет на {критерий_успеха}}
Нет подозрений на уровне — пиши «нет».

Валидатор (новый чат, по одному подозрению):

Ты — независимый рецензент. Проверь ТОЛЬКО указанное утверждение 
об ошибке.

<Материал>{полный текст}
<Задача>{задача_или_цель}
<Подозрение>{одно подозрение}


1. Верно ли утверждение? Нет → NOT-REAL.
2. Верно → меняет ли это {критерий_успеха}? 
   Да, существенно → SUBSTANTIAL. Нет → MINOR.


Вердикт + 2–3 предложения обоснования.

Правило итога: есть хотя бы одно SUBSTANTIAL → материал не проходит.

Что подставлять: {тип_материала} — расчёт, договор, отчёт, код; {критерий_успеха} — что делает ошибку существенной (деньги, юридический риск, работоспособность).

🚀 Быстрый старт — вставь в чат:

Вот шаблон OSVerify (двухэтапная проверка: поиск подозрений → отдельная проверка каждого). 
Адаптируй под мою задачу: {что проверяю}. 
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит, что проверяем и что считается существенной ошибкой в твоём случае. Без этого валидатор не отличит мелочь от дыры. Она возьмёт структуру двух запросов из шаблона и подстроит под твою задачу.

⚠️

Ограничения

⚠️ Проверено только на математических доказательствах: все бенчмарки — олимпиадные и исследовательские математические решения. Перенос на финмодели, договоры, код и тексты в статье не проверяли. Это разумная, но догадка.

⚠️ Полный метод требует многих вызовов: авторы делали 16 повторов проверки на каждое подозрение и подбирали порог на калибровочной выборке. Вручную в чате этого не повторить, нужен скрипт или автоматизация. В чате доступна упрощённая версия.

⚠️ Человек остаётся в контуре: метод не заменяет эксперта. Он сокращает число плохих кандидатов, которые доходят до человека, но не гарантирует правильность тех, что прошли.

⚠️ Щедрый поиск рождает выдуманные ошибки: без строгого второго этапа метод превращается в генератор ложных тревог. Валидатор с размытым определением «существенного» пропустит их.

⚠️ Гарантия «не потерять хорошее» требует калибровки: чтобы почти не отбраковывать верные решения, порог подбирают по набору заведомо верных образцов. Без них такой настройки нет.

⚠️ Дообучение валидатора (RL) читателю недоступно: оно поднимает выигрыш с 46% до 57%, но без обучения модели это не повторить. Результаты ниже описаны без дообучения.

🔍

Как исследовали

Исследователи из Стэнфорда проверяли метод на трёх математических наборах: Putnam100 (олимпиадные задачи), Hard2Verify (решения с разметкой шагов экспертами) и FirstProof-Eval (исследовательский уровень с ручной разметкой). Проверяющими нарочно взяли относительно слабые модели, gpt-oss-120b и gpt-5-mini. Так имитируется ситуация, когда задача сложнее, чем модель может решить сама. Эталонные решения и формальные проверяющие программы от проверяющего скрыли.

Сравнивали с тремя подходами: обычный «модель-судья», голосование (16 независимых вердиктов), а также многоагентные дебаты и ещё один метод проверки. Мерили две вещи: сколько плохих решений отсеяно и сколько хороших потеряно. На практике это сводится к вопросу: сколько неверных кандидатов придётся показывать человеку, если терять не более 5% верных.

Результат: при 5% потерь верных решений доля отсеянных плохих у gpt-oss-120b выросла с 38% до 70% на Putnam100 и с 36% до 58% на FirstProof-Eval. Число плохих кандидатов, доходящих до человека, сократилось в среднем на 46%. Дообучение валидатора подняло это до 57%.

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

Метод проверили и на реальных работах. В статье из Annals of Mathematics он нашёл 45 подтверждённых проблем, в свежем препринте — 88. Авторы работ признали ошибки и принятые исправления. Он также помог закрыть три открытые гипотезы из программы Ленглендса, эксперты подтвердили доказательства.

💡

Адаптации и экстраполяции

🔧 Техника: убрать «лучше лишнее» → меньше ложных тревог, но выше риск пропуска

Если перебор подозрений утомляет, замени в роли предложителя «Лучше предложить лишнее подозрение, чем пропустить» на «Предлагай только подозрения, в которых уверен хотя бы наполовину». Подозрений станет меньше, но часть реальных ошибок не попадёт в список. Для критичных документов оставляй оригинал.

Экстраполяция: правило для агента-ревьюера в файле инструкций

Это моя идея, в статье её нет. Если у тебя Claude Code или Cursor делает код или документ, добавь в CLAUDE.md:

## Ревью перед сдачей
Перед тем как сообщить, что работа готова:
1. Составь список конкретных подозрений на ошибки (где, что не так, чем это ломает результат), отдельно для всего изменения, для каждого файла и для каждой функции.
2. Каждое подозрение проверь отдельно, как независимый рецензент: NOT-REAL / MINOR / SUBSTANTIAL.
3. Если есть хотя бы одно SUBSTANTIAL — исправь и повтори. Если нет — сдавай.
🔗

Ресурсы

  • One-Sided Verification Under Limited Expert Review — Fan Nie, Haotian Ye, Shurui Liu, Zihao Wang, Stefano Ermon, James Zou, Stanford University
  • Сайт проекта: https://osverify.github.io/
  • Код: https://github.com/OSVerify
  • Бенчмарки: Putnam100, Hard2Verify, First Proof (FirstProof-Eval)

📋 Дайджест исследования

Ключевая суть

Одна и та же модель, одни и те же данные: умение отличать плохое решение от хорошего (мера AUROC, где 0,5 — монетка, а 1,0 — идеал) выросло с 0,68 до 0,90. Метод OSVerify позволяет проверять расчёт, текст или решение и ловить настоящие ошибки без потока ложных тревог. Фишка: ищи подозрения щедро, а проверяй каждое строго и отдельно. Модель перестаёт оценивать всё сразу и по очереди отвечает на узкий вопрос: «в шаге 4 неверно посчитан НДС — это правда?»

Принцип работы

Три шага. Поиск, проверка, вердикт. 1. Предложитель делит материал пополам, потом ещё раз пополам. Ищет ошибки в целом, в половинах и в мелких кусках. Выдаёт список: где, что не так, почему это ломает вывод. 2. Валидатор получает материал и ОДНО подозрение. Отвечает: ВЫДУМКА, МЕЛОЧЬ или СУЩЕСТВЕННО. 3. Нашлась хотя бы одна СУЩЕСТВЕННО — материал отклоняем. Это как таможня с двумя постами. Первый пост тормозит всех подозрительных. Второй вскрывает чемодан и решает, контрабанда ли это. Поиск и проверка — две разные задачи, и в один запрос их лучше не совать. Запускай их в разных чатах. Иначе валидатор поведётся на уверенный тон предложителя.

Почему работает

Просишь «проверь, всё ли верно» — модель держит весь текст и ищет изъян вслепую. Вердикт плывёт. Одну и ту же ошибку она то видит, то пропускает. Гонишь такую проверку 64 раза — результат растёт и быстро упирается в потолок. Больше прогонов не лечит. С узким вопросом всё иначе. В статье опираются на наблюдение: модели часто не находят ошибку сами, но исправляют её, если показать место. Найти иголку в стоге сена сложнее, чем проверить, иголка ли это. Щедрый поиск даёт охват вместе с лишним мусором. Строгая проверка мусор выбрасывает. Реальные находки остаются. Два уровня разбиения (целое, половины, четверти) дают большую часть выигрыша. Для коротких текстов хватит одного.

Когда применять

Проверка расчётов, договоров, отчётов и кода → особенно когда ошибка стоит денег, а перечитывать 40 строк глазами нет сил. Например, перед питчем инвесторам, отправкой договора или релизом. Важная оговорка: в статье метод проверяли только на математических доказательствах. Перенос на финмодели и договоры — разумная догадка, а не доказанный факт. НЕ подходит, если нужна гарантия правильности. Человек остаётся в контуре: метод режет число плохих кандидатов, но не обещает, что прошедшие верны. Полная версия (16 повторов на подозрение, подбор порога) требует скрипта. В обычном чате работает упрощённая.

Мини-рецепт

1. Реши, что страшно: выпиши, что для твоей задачи мелочь, а что дыра. Для расчёта окупаемости дыра — это то, что меняет итоговый срок. Без этого валидатор не отличит одно от другого.
2. Запусти охотника: дай роль <роль>придирчивый аудитор, попроси разбить материал пополам, потом ещё раз. Разреши лишние подозрения: лучше перебдеть.
3. Требуй три поля: где (цитата), что не так, почему это ломает вывод. Нет подозрений на уровне — пусть пишет «нет».
4. Открой новый чат под каждое подозрение: вставь материал целиком и ОДНО подозрение. Попроси вердикт ВЫДУМКА, МЕЛОЧЬ или СУЩЕСТВЕННО плюс 2–3 предложения обоснования.
5. Для важного повтори проверку: прогони валидатор 3–5 раз на подозрение и посмотри, сколько голосов за СУЩЕСТВЕННО.
6. Подведи итог: хоть одно СУЩЕСТВЕННО — правь материал или отдавай человеку. Ноль — идёшь дальше.

Примеры

[ПЛОХО]: `Проверь, всё ли верно в моём расчёте окупаемости точки доставки` [ХОРОШО, шаг 1]: `Ты жёсткий аудитор финмоделей. Лучше лишнее подозрение, чем пропущенная ошибка. Раздели расчёт на две части, каждую ещё на две. Ищи ошибки в целом, в частях и в мелких кусках. По каждой выдай: Где (цитата), Что не так, Почему это ломает срок окупаемости. Расчёт: {вставить}` [ХОРОШО, шаг 2, новый чат]: `Ты независимый рецензент. Проверь ТОЛЬКО это утверждение об ошибке. Расчёт: {вставить}. Подозрение: «в шаге 4 НДС посчитан от суммы без доставки». Если утверждение неверно — ВЫДУМКА. Если верно, но срок окупаемости не меняется — МЕЛОЧЬ. Если меняет — СУЩЕСТВЕННО. Обоснуй в 2–3 предложениях.`
Источник: One-Sided Verification Under Limited Expert Review
ArXiv ID: 2610.18089 | Сгенерировано: 2026-10-14 23:40

Проблемы LLM

ПроблемаСутьКак обойти
Общая проверка «всё ли верно?» даёт шумный вердиктПросишь проверить расчёт, договор или код целиком. Модель выдаёт общий вердикт. На одну и ту же работу она то пропускает ошибку, то бракует нормальное. Модели трудно держать весь текст и искать изъян сразу. Повтор той же проверки помогает лишь до потолка. Десятки прогонов дают почти то же, что несколькоРаздели проверку на два запроса. Первый запрос только ищет подозрения, щедро и с лишними. Второй проверяет одно подозрение и даёт вердикт. Подробности в методе ниже

Методы

МетодСуть
Поиск подозрений + отдельная проверка каждого — точный вердиктЧто делать. Шаг 1. Попроси найти места, где материал может быть ошибочным. Лучше лишнее подозрение, чем пропуск. Пусть модель разобьёт материал на две части по смыслу, потом каждую ещё на две. Ошибки ищи на трёх уровнях: целое (логика, допущения), части (согласованность), мелкие куски (цифры, факты). Формат подозрения: Где (цитата) / Что не так / Почему это ломает результат. Шаг 2. Для каждого подозрения открой новый чат. Дай материал, задачу и ОДНО подозрение. Попроси вердикт: NOT-REAL (выдумка), MINOR (мелочь), SUBSTANTIAL (ломает результат) и 2–3 предложения обоснования. Шаг 3. Есть хоть одно SUBSTANTIAL — материал отклоняй или отдавай человеку. Почему работает. Искать ошибку по всему тексту трудно. Проверить одно названное утверждение намного легче. Щедрый первый шаг даёт охват. Строгий второй шаг отсеивает выдумки. Отдельный чат нужен, чтобы проверяющий не подхватил уверенный тон автора подозрения. Настройки. Для коротких текстов хватит одного уровня разбиения. Два уровня дают основную часть выигрыша. Важные решения проверяй 3–5 раз на каждое подозрение и смотри долю голосов за SUBSTANTIAL. Прямо пропиши, что в твоей задаче мелочь, а что критично. Иначе проверяющий не отличит одно от другого. Когда нет. Короткий текст из пары фраз, где нечего разбивать. Субъективные вещи, где нет критерия ошибки. Метод сокращает число плохих кандидатов, но не заменяет эксперта. Оговорка. Строго проверено на математических доказательствах. Перенос на расчёты, договоры и код выглядит разумным, но это догадка
📖 Простыми словами

One-Sided Verification Under Limited Expert Review

arXiv: 2610.18089

Когда ты просишь нейросеть найти ошибки в сложном расчёте целиком, она тупо захлёбывается контекстом. Ей нужно одновременно держать в памяти полотно данных и выискивать косяки — в итоге модель выдаёт размытый вердикт и мажет мимо явных факапов. Даже если прогнать один и тот же запрос 64 раза подряд, качество быстро упрётся в потолок: толпа невнимательных проверяющих не заменит одного въедливого аудитора. Метод OSVerify решает это через разделение труда: сначала грубый поиск зацепок, потом точечный разнос.

Это как проверка сметы на ремонт: если бегло глянуть на итоговые пять миллионов, цифра покажется нормальной. Но если прораб сначала выделит подозрительные строчки — вроде закупки золотых гвоздей или стяжки в три слоя, — а потом по каждому пункту потребует чек, надуть тебя уже не выйдет. Вместо разглядывания общей картины ты берешь лупу для каждого косяка.

Работает метод в два жестких этапа: иерархический поиск подозрительных мест и точечная верификация. Сначала модель сканирует документ сверху вниз — от целого текста к кускам и конкретным шагам, составляя список сомнительных моментов. Затем каждое подозрение уходит в отдельный изолированный запрос с четким вердиктом: не существует, мелочь или существенная ошибка. Нашлась хотя бы одна критическая лажа — весь документ летит в мусорку.

Фишку тестировали на сложных рассуждениях, но принцип универсален. Считаешь ли ты юнит-экономику для казанского стартапа со средним чеком 1 150 ₽, пишешь ли код или проверяешь договор перед сделкой — логика одна. Любой сложный аудит ломается, если валить всё в один промпт, но взлетает, когда ты дробишь поиск на детекцию аномалий и изолированный фактчекинг.

Короче: хватит просить ChatGPT «проверить текст целиком» — это гарантированный слив важных деталей. Заставляй модель сначала набросать список сомнений, а потом методично бей по каждому отдельным запросом. Либо ты тратишь пару лишних вызовов API на двухступенчатую проверку, либо инвестор разнесет твою финмодель на пятой минуте встречи.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с