3,583 papers
arXiv:2610.27248 79 19 окт. 2026 г. FREE

Validation by Demonstration (ValiAssist): правила проверки ответов LLM из ваших же правок

КЛЮЧЕВАЯ СУТЬ
Критерии проверки «из головы» почти всегда дырявые. Что нужно, понимаешь только тогда, когда видишь конкретный плохой ответ. Метод ValiAssist позволяет превратить одну вашу правку в правило и прогнать его по всей пачке ответов LLM. Вы правите один ответ, а модель выводит из пары «было / стало» правило вида КОГДА — ТО. Это правило проверки, которое можно прочитать, сузить и применить к остальным ответам. Одна правка вместо десятка одинаковых решений.
Адаптировать под запрос
⚡

TL;DR

Validation by Demonstration (проверка через показ) — подход, в котором вы не пишете критерии проверки заранее, а правите один ответ модели. Затем LLM по вашей правке, исходному и исправленному тексту и контексту (код, ошибка) выводит правило в формате «КОГДА — ТО». Правило можно прочитать, поправить и применить ко всем остальным ответам.

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

Суть метода в четырёх шагах: правка → правило КОГДА-ТО → проверка правила → массовое применение. Условие («когда») описывает ситуацию и во входных данных, и в ответе. Действие («то») описывает, как менять ответ. Правила не фиксируются раз и навсегда: вы применяете их к новым примерам, смотрите, где сработали зря, и уточняете.

🔬

Схема метода

ШАГ 1: Берёте один ответ модели, правите его → пара «было / стало» + комментарий «почему»
ШАГ 2: LLM выводит правило из правки → КОГДА [условие по входу И ответу] → ТО [как менять]
ШАГ 3: Вы читаете правило, сужаете/расширяете условие → утверждённое правило
ШАГ 4: LLM проверяет остальные ответы: подходит условие? → если да, применяет действие
ШАГ 5: Смотрите, где правило сработало зря или промахнулось → возврат к шагу 3

Шаги 2 и 4 — отдельные запросы. Шаг 3 делает человек.

🚀

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

Задача: Владелец магазина одежды на Wildberries использует LLM для черновиков ответов на отзывы. Из 300 черновиков он поправил один: покупательница жалуется, что футболка села после стирки. Модель написала три абзаца извинений и предложила промокод. Владелец оставил два предложения, предложил обмен и убрал промокод. Теперь ему нужно превратить эту правку в правило и прогнать по остальным 299 ответам.

Промпт (шаг 2, вывод правила):

Ты помогаешь превратить мою правку в правило проверки.

Отзыв покупателя:
«Футболка села после первой стирки на 40 градусах. Брала L, теперь как S. Разочарована.»

Черновик ответа модели (было):
«Здравствуйте! Нам очень жаль, что вы столкнулись с такой ситуацией. Мы всегда стремимся делать лучшие товары и глубоко сожалеем о доставленных неудобствах. В качестве извинения дарим вам промокод на 10% на следующую покупку. Надеемся, вы дадите нам ещё один шанс!»

Мой вариант (стало):
«Здравствуйте! Жаль, что футболка села. Напишите нам в чат заказа — оформим обмен или возврат. Состав и режим стирки указаны на бирке: 30 градусов, без сушки.»

Мой комментарий: убрал воду, убрал промокод — на жалобы на качество промокоды не даём. Добавил конкретный шаг и ссылку на режим стирки.

Выведи правило в формате:
КОГДА: [условия, которые нужно проверять в отзыве И в черновике]
ТО: [что именно изменить в черновике]

Добавь:
- 2 примера отзывов, где правило должно сработать
- 2 примера, где правило срабатывать не должно, но легко ошибиться
- Что в моей правке осталось неясным (спроси, не додумывай)

Результат: Модель выдаст правило в формате КОГДА-ТО: условия (жалоба на качество, в черновике есть промокод или длинные извинения) и действия (убрать промокод, сократить, добавить шаг решения). Затем она покажет примеры, где правило должно и не должно сработать, и задаст уточняющие вопросы. Например, нужно ли убирать промокод при жалобе на доставку. Вы поправите условия и во втором запросе (шаг 4) отдадите правило вместе с остальными отзывами.

🧠

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

Слабость. Человек плохо формулирует критерии заранее: чтобы предусмотреть все случаи, нужно сначала увидеть плохие ответы. Правки при этом остаются «одноразовыми»: исправили один ответ, а на следующем те же ошибки. Критерии обычным текстом получаются расплывчатыми и дублируют друг друга.

Сильная сторона LLM. Модель хорошо делает две вещи. Первая — обобщать из примера: по паре «было → стало» и комментарию она угадывает, что именно изменилось и почему. Вторая — судить по условию, которое трудно проверить программно («жалоба на качество», «ответ слишком длинный»). Это семантические метки, и модель их присваивает неплохо.

Как метод их соединяет. Вы делаете то, что умеете, — правите конкретный пример. Модель делает то, что умеет, — превращает правку в правило. Формат «КОГДА — ТО» заставляет отделить условие (когда правило включается) от действия (что менять). Поэтому правило читаемо: вы видите, где оно сработает, и можете его сузить. Когда правило прогоняется по остальным примерам, видны ложные срабатывания, и вы уточняете условие.

Рычаги управления: - Комментарий к правке. Чем точнее объясните «почему», тем меньше модель домысливает. Без комментария правило будет угадано по тексту. - Условие «КОГДА». Сужайте его, если правило срабатывает зря. Расширяйте, если пропускает похожие случаи. - Примеры «не должно сработать». Они прямо показывают границы правила. - Контекст для условия. Добавьте в КОГДА не только ответ, но и исходные данные (отзыв, код, письмо клиента). В исследовании проверяющие судили именно по паре «вход + ответ». - Вопрос «что осталось неясным». Он заставляет модель задавать вопросы, а не выдумывать.

📋

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

Шаг 1–2. Вывод правила из правки:

Ты помогаешь превратить мою правку ответа в переиспользуемое правило проверки.

<Контекст>
Задача, для которой модель делала ответ: {задача}
Входные данные: {вход: письмо клиента / отзыв / код / запрос}


<Было>
{исходный ответ модели}


<Стало>
{мой исправленный ответ}


<Почему>
{мой комментарий: что не так было и почему я так исправил}


Выведи правило в формате:
КОГДА: [условия, которые нужно проверить во входных данных И в ответе модели]
ТО: [какое именно изменение нужно внести в ответ]

Затем:
1. Дай 2 примера, где правило должно сработать.
2. Дай 2 примера, где оно не должно сработать, но легко ошибиться.
3. Перечисли, что в моей правке осталось неясным. Задай вопросы, не додумывай.

Шаг 4. Применение ко всей пачке:

Вот утверждённые правила проверки:

<Правила>
Правило 1:
КОГДА: {условие}
ТО: {действие}

Правило 2:
КОГДА: {условие}
ТО: {действие}


Вот пары «вход — ответ модели»:
{пронумерованный список пар}

Для каждой пары:
1. Проверь условие КОГДА каждого правила. Процитируй фрагмент входа или ответа, на который опираешься.
2. Если условие выполнено — примени ТО и покажи исправленный ответ.
3. Если не выполнено — напиши «правило не применимо» и коротко почему.
4. В конце выведи таблицу: номер пары — какие правила сработали — изменён ли ответ.
5. Отдельно пометь пары, где ты не уверен, сработало ли правило.

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

Вот шаблон проверки через показ. Адаптируй под мою задачу: [твоя задача — например, ответы поддержки, посты, письма клиентам]. 
Задавай вопросы, чтобы заполнить поля.

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

LLM спросит, для какой задачи делались ответы, что было на входе, что именно вы исправили и почему. Это нужно для условия «КОГДА»: правило опирается и на входные данные, и на сам ответ. Она возьмёт структуру шаблона и соберёт готовый промпт под вашу задачу.

Важно: точный формат языка правил из статьи вынесен в приложение, которого в доступном тексте нет. Шаблон выше — реконструкция по описанию: КОГДА-условия над входом и ответом, ТО — правка.

⚠️

Ограничения

⚠️ Одного примера мало: по одной правке можно вывести много разных правил. Модель выберет одно, не обязательно ваше. Поэтому в метод встроены проверка человеком и примеры «не должно сработать».

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

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

⚠️ Одна область и одна модель: проверяли на проверке обратной связи по коду в учебном курсе Python, правила выводила GPT-4o. Переносимость на ответы поддержки, тексты или письма — логичная, но в статье не проверялась.

⚠️ Небольшая выборка: 16 преподавателей, в основном сравнение с обычными текстовыми критериями.

🔍

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

Сначала команда посмотрела, как люди проверяют ответы LLM без всякой поддержки. Десять преподавателей по Python просматривали сгенерированные комментарии к работам студентов. Из 178 эпизодов проверки примерно в 70% люди сверяли ответ с кодом студента и правили его по контексту. Но правка оставалась локальной, одни и те же суждения приходилось повторять. Отсюда идея: правка — это неявное правило «если в ситуации X, то ответ должен меняться так».

Затем сделали пробную систему на GPT-4o, которая превращает правку в структурное правило КОГДА-ТО. Её сравнили с обычными критериями на естественном языке (12 участников в предварительном исследовании). Там при критериях текстом люди создавали заметно больше дублей. Из 83 созданных критериев составили словарь: чаще всего просили краткость (около трети), запрет на готовые решения (около четверти), обязательные темы в ответе, стиль кода, структуру и тон.

В основном исследовании 16 преподавателей работали в обеих условиях. С ValiAssist ответы соответствовали их же критериям в 91% случаев против 57% у текстового базового варианта. Точность исправления плохих критериев выросла с 32% до 77%. Журналы показали, что преподаватели не писали критерии один раз, а несколько раз прогоняли, смотрели и правили. Правило уточняется через показ, где оно срабатывает. Оставшаяся часть методологии в доступном тексте обрезана.

💡

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

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

Перед применением правила ко всей пачке попросите модель сначала прогнать 10 случайных пар и вывести отдельно те, где она сомневается:

Прежде чем применять правило ко всем, прогони его на 10 случайных парах. 
Покажи, где ты сомневаешься, сработало ли условие. 
Предложи, как уточнить КОГДА, чтобы убрать сомнения.

Словарь типичных намерений (из статьи) как стартовый список критериев. Если не знаете, с чего начать, просмотрите десять типичных намерений: краткость; запрет на готовые решения; обязательные темы; стиль; структура; суть, а не частный случай; объём совета; пояснение ошибки; позитивный тон. Спросите себя, какие из них применимы к вашим ответам, и покажите модели одну правку на каждое.

🔗

Ресурсы

  • ValiAssist: Scaling LLM-generated Programming Feedback Validation by Demonstration — Xiaohang Tang, Rehema Abulikemu, Peng Gao, Yan Chen, Virginia Tech (США)
  • Упомянутые родственные работы: EvalGen, EvalLM, Evalet, Policy Maps (проверка и критерии для генерации); FixPropagator (перенос исправления на другие работы); Programming by Demonstration (общий подход)

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

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

Критерии проверки «из головы» почти всегда дырявые. Что нужно, понимаешь только тогда, когда видишь конкретный плохой ответ. Метод ValiAssist позволяет превратить одну вашу правку в правило и прогнать его по всей пачке ответов LLM. Вы правите один ответ, а модель выводит из пары «было / стало» правило вида КОГДА — ТО. Это правило проверки, которое можно прочитать, сузить и применить к остальным ответам. Одна правка вместо десятка одинаковых решений.

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

Пять шагов по кругу: правка → правило → ваша проверка → массовый прогон → уточнение. Условие (КОГДА) смотрит и на входные данные, и на ответ. Действие (ТО) говорит, что именно менять. Условие и действие разнесены, поэтому видно, где правило включится, и его можно подрезать. Шаги 2 и 4 — отдельные запросы к модели. Шаг 3 делаете вы. Это как рецепт, который вы сначала читаете, а потом отдаёте на кухню. Если повар солит всё подряд, вы правите строчку в рецепте, а не переучиваете повара.

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

Человек плохо пишет критерии заранее. Чтобы предусмотреть все случаи, нужно сначала увидеть плохие ответы. Правки при этом одноразовые: поправили один ответ, а в следующем та же ошибка. У модели свои сильные стороны. Она хорошо обобщает по паре «было → стало» с комментарием. Она неплохо ставит смыслового ярлыки вроде «жалоба на качество» или «слишком длинно». Программой такое условие не проверить. Вы делаете то, что умеете (правите конкретный пример), а модель делает то, что умеет (превращает правку в правило). Если просто попросить модель «сформулируй критерии» словами, получится больше дублей. Плохие критерии потом хуже исправляются. Об этом говорится в статье. Громких цифр эффекта в доступном тексте нет: проверяли на 16 преподавателях, в основном сравнивали с обычными словесными критериями. Качество правила зависит от вас: - Комментарий «почему» уменьшает домыслы модели. - Примеры «не должно сработать» задают границы. - Вопрос «что осталось неясным» заставляет модель спрашивать, а не выдумывать.

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

Массовые ответы LLM → ответы поддержки, отзывы, письма клиентам, комментарии к коду, особенно когда вы раз за разом делаете одну и ту же правку. НЕ подходит, если проверка формальная (длина, формат, наличие слова): это проще сделать скриптом. Также не подходит, если вы правили один ответ и сами не уверены, почему так. Помните про границы исследования. Проверяли на обратной связи по коду в учебном курсе Python, правила выводила GPT-4o. В статье это отдельная система с подсветкой совпадений, а не промпт в чате. Вручную вы повторите логику, но не те же цифры. Перенос на другие задачи логичен, но не проверен.

Мини-рецепт

1. Поправь один ответ: выбери типичный плохой черновик и исправь его так, как нужно тебе.
2. Напиши «почему»: одна-две фразы, что было не так. Не оставляй модель гадать.
3. Отдай модели три куска: вход (отзыв, письмо, код), «было» и «стало». Попроси правило в формате КОГДА — ТО.
4. Потребуй границы: 2 примера, где правило должно сработать, и 2, где не должно, но легко ошибиться.
5. Заставь спросить: пусть перечислит, что в правке осталось неясным. Ответь на вопросы.
6. Подрежь условие: сузь КОГДА, если оно хватает лишнего. Расширь, если пропускает похожие случаи.
7. Прогони по пачке: отдельным запросом отдай утверждённые правила и все пары «вход — ответ». Пусть цитирует фрагмент, на который опирается.
8. Проверь выборочно: посмотри несколько срабатываний и отдельно пары, помеченные «не уверен». Нашёл промах — вернись к шагу 6.

Примеры

[ПЛОХО] Задача: владелец магазина одежды разбирает 300 черновиков ответов на отзывы. Один он уже поправил. : Составь критерии хорошего ответа на отзыв покупателя
[ХОРОШО] : Помоги превратить мою правку в правило проверки. Отзыв: «Футболка села после первой стирки, брала L, теперь как S». Было: три абзаца извинений и промокод на 10%. Стало: два предложения, обмен или возврат через чат заказа, режим стирки с бирки. Почему: на жалобы на качество промокоды не даём, воду убираем. Выведи правило в формате КОГДА (что проверить в отзыве И в черновике) — ТО (что изменить). Дай 2 примера, где правило сработает, и 2, где не должно, но легко ошибиться. Что в моей правке неясно, спроси, не додумывай. Модель вернёт примерно такое правило. КОГДА: в отзыве жалоба на качество, а в черновике есть промокод или длинные извинения. ТО: убрать промокод, сократить до двух предложений, добавить конкретный шаг решения. Она спросит, убирать ли промокод при жалобе на доставку. Ты ответишь, поправишь условие и вторым запросом отдашь правило вместе с остальными 299 отзывами.
Источник: ValiAssist: Scaling LLM-generated Programming Feedback Validation by Demonstration
ArXiv ID: 2610.27248 | Сгенерировано: 2026-10-22 17:50

Методы

МетодСуть
Правило из одной правки — проверка всей пачки ответовШаг 1. Исправь один плохой ответ модели вручную. Напиши коротко, почему так исправил. Шаг 2. Отдай модели четыре вещи: входные данные, исходный ответ, твою версию и комментарий. Попроси вывести правило в формате КОГДА: [условия по входу И по ответу] и ТО: [что изменить в ответе]. Шаг 3. Прочитай правило сам. Сузь условие, если оно хватает лишнее. Расширь, если пропускает похожее. Шаг 4. Отдельным запросом дай утверждённые правила и пачку ответов. Пусть модель для каждого процитирует фрагмент, на который опирается, и применит ТО. Пусть пометит случаи, где не уверена. Шаг 5. Просмотри, где правило сработало зря или промахнулось. Вернись к шагу 3. Почему работает: ты правишь пример, это легко. Модель обобщает правку в правило, это её сильная сторона. Разделение на условие и действие делает правило читаемым и настраиваемым. Усилители: в запросе на вывод правила проси 2 примера «должно сработать» и 2 примера «не должно, но легко ошибиться». Они показывают границы правила. Проси также перечислить, что в правке осталось неясным. Пусть задаёт вопросы, а не додумывает. Когда да: много однотипных ответов (десятки и сотни), есть повторяющиеся ошибки: ответы поддержки, отзывы, письма, комментарии к коду. Когда нет: один ответ или разовая задача. По одной правке модель может вывести не то правило, которое ты имел в виду. Условия вроде «жалоба на качество» оценивает сама модель и ошибается. Поэтому проверяй часть результатов вручную

Тезисы

ТезисКомментарий
Критерии проще вывести из плохого примера, чем придумать заранееЧеловек не может предусмотреть все случаи, пока не увидит конкретную ошибку. Когда ты правишь ответ, ты сразу понимаешь, чего хотел. Такое знание трудно записать списком «из головы». Применяй: не пиши длинный список требований к ответам. Возьми один плохой ответ, исправь и попроси модель превратить правку в правило. Комментарий «почему» обязателен: без него модель угадывает причину по тексту
📖 Простыми словами

ValiAssist: ScalingLLM-generated Programming Feedback Validation by Demonstration

arXiv: 2610.27248

Писать для нейросети идеальные инструкции заранее — абсолютно гиблое дело: ты никогда не предугадаешь, где именно она накосячит. Подход Validation by Demonstration ломает эту парадигму. Вместо того чтобы мучительно выдумывать критерии из головы, ты просто руками правишь один косячный ответ, а модель сама анализирует разницу и формулирует правило в формате «КОГДА — ТО». Ты учишь систему на живом примере, а не унылой теорией.

Это как объяснять задачу стажёру. Если вывалить на него талмуд регламентов на сорок страниц, он всё равно выдаст лажу в первом же ответе клиенту. Но стоит один раз взять его текст и показать правку: «смотри, вот здесь сопли вырезаем и предлагаем обмен» — в голове щёлкает моментально. Ты превращаешь одноразовую правку в понятный рабочий стандарт без бесконечного переписывания промптов.

Инструмент ValiAssist берёт контекст, черновик и твою версию, превращая это в железобетонный логический фильтр. Никакой размытой фигни вроде «отвечай вежливее». Получается чёткий алгоритм: если покупатель жалуется на брак — предложить замену, а промокод не давать. Ты лишь бегло подтверждаешь полученное правило, жмёшь кнопку — и оно мгновенно лечит сотни аналогичных ответов.

Тестировали метод на проверке кода, но принцип абсолютно универсален. Ответы на отзывы маркетплейсов, саппорт-тикеты, холодные письма или модерация — везде всплывает одна проблема. Хватит тратить часы на вычитку сотен похожих черновиков: поправь один косяк, сгенерируй правило и забудь. Ручной микроменеджмент превращается в масштабируемый конвейер.

Главный вывод: прекрати годами вылизывать «идеальные системные промпты» вслепую. Покажи один раз руками, дай модели вытащить логику и раскати её на весь массив данных. Это бережёт нервы и гарантирует, что алгоритм не наступит на одни и те же грабли. Тот, кто перестанет править ответы поштучно, сэкономит вагон времени и ресурсов.

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

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

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