3,583 papers
arXiv:2610.19314 77 13 окт. 2026 г. FREE

PersEvalBench: LLM-судья путает «не учёл предпочтение» с «учёл лишнее»

КЛЮЧЕВАЯ СУТЬ
26,6% ответов, где ассистент не учёл предпочтение пользователя, модель-судья записала как «учёл лишнее». Метод позволяет проверять ответы ассистента, который помнит пользователя, и видеть, какую роль судья дал каждому факту из истории. Фишка: судья находит нужный факт, но неверно определяет его роль. Актуален ли он, чей он, на какую задачу распространяется, насколько жёсткий. Поэтому каждому факту заранее назначают роль IGNORE / SUPPORT / DOMINATE (не влияет / может направлять / обязан быть выполнен) и только потом сверяют ответ. Это способ увидеть, где судья ошибается, а не доказанное лекарство от ошибок.
Адаптировать под запрос
⚡

TL;DR

Исследование показывает, где LLM-судья ломается при проверке персонализации. Вы даёте ему историю диалога, новый запрос и ответ ассистента. Судья должен решить: RIGHT (память о пользователе использована верно), UNDER (нужное не учтено) или OVER (учтено то, что не должно влиять). Авторы собрали бенчмарк с контролируемыми ошибками и проверили, насколько судьи находят их по сравнению с людьми.

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

Метод из статьи — не лечение, а способ видеть проблему. Каждому факту о пользователе заранее назначают роль: IGNORE (не должен влиять), SUPPORT (может направлять), DOMINATE (обязан быть выполнен). Ответ сверяют с ролями и выбирают один из трёх вердиктов. Рабочую версию судьи для своей задачи можно собрать по этим определениям (шаблон ниже).

🔬

Схема метода

ШАГ 1: Выписать из истории факты о пользователе → список (чей, на что распространяется, актуален ли, насколько жёсткий, переносится ли на новую задачу)
ШАГ 2: Назначить каждому факту роль → IGNORE / SUPPORT / DOMINATE
ШАГ 3: Сверить ответ с ролями → RIGHT / UNDER / OVER + тип ошибки

Всё это можно уместить в один промпт.

Шаги 1–2 заимствованы из того, как авторы строили эталонные сценарии. Там же были «формулировка с таблицей состояний» и «сначала доказательства». Результатов их сравнения в доступном тексте нет. Что именно улучшает такая разметка, неизвестно.

🚀

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

Задача: Вы делаете телеграм-бота-помощника по путешествиям на базе LLM. Нужно проверять сотню его ответов в неделю с помощью LLM-судьи. Типичный случай: пользователь раньше говорил «летаю только прямыми рейсами, у меня маленький ребёнок». Потом написал: «в Сочи в этот раз еду один, пересадка не проблема». Бот предложил только прямой рейс Москва — Сочи за 14 500 ₽. Рядом в истории есть чужой факт: «жена не ест глютен». К перелёту он отношения не имеет.

Промпт:

Ты проверяешь, как ассистент использовал информацию о пользователе из истории диалога.

<История>
[Эпизод 1, март] Пользователь: «Летаю только прямыми рейсами, с нами маленький ребёнок».
[Эпизод 2, октябрь] Пользователь: «Хочу в Сочи на выходные. В этот раз еду один, пересадка не проблема, главное — подешевле».
[Там же] Пользователь: «Жена, кстати, не ест глютен, так что в отель с завтраком не смотрю».


<Запрос>
Подбери билеты Москва — Сочи на 14–16 ноября.


<Ответ_ассистента>
Нашёл прямой рейс Москва — Сочи за 14 500 ₽. Прямые рейсы — самый удобный вариант, особенно с ребёнком.


Шаг 1. Выпиши все факты о пользователе. Для каждого укажи: чей факт, на какую задачу он распространяется, актуален ли сейчас, насколько жёсткий, переносится ли на этот запрос.
Шаг 2. Назначь каждому факту роль: IGNORE (не должен влиять на ответ), SUPPORT (может направлять), DOMINATE (ответ обязан это выполнить).
Шаг 3. Сравни ответ с ролями. Дай один вердикт:
- RIGHT: применимое использовано верно, неприменимое не использовано;
- UNDER: применимое опущено или учтено слишком слабо;
- OVER: использовано то, что не должно влиять, или ему дан слишком большой вес.
Если вердикт не RIGHT, назови один главный тип ошибки: полное или частичное упущение, явное нарушение, нерелевантное использование, утечка из другой области, домысел, устаревшее состояние, чрезмерное доминирование, недовес.
Для каждого вывода процитируй реплику из истории.

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

🧠

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

Слабость LLM-судьи. Просьба «оцени, хорошо ли ассистент использовал память» в лоб приводит к смешению двух вопросов. Первый — есть ли в ответе след истории. Второй — должна ли эта история влиять на ответ. Судья легко находит факт и его след. Но решение «факт устарел», «чужой» или «не из этой области» он принимает неточно. Поэтому в статье 26,6% ошибок типа UNDER получили вердикт OVER.

Сильная сторона. Модель хорошо работает с явной структурой. Когда нужно перечислить факты, сопоставить их с ответом и процитировать источник, она это делает. Читателю остаётся проверять видимые решения, а не угадывать, как рассуждал судья.

Как метод использует силу против слабости. Он разделяет решение на два вопроса. Сначала: какую роль должен играть каждый факт. Потом: сыграл ли он эту роль в ответе. Но здесь честная оговорка: авторы измерили, где судья ошибается, а не то, что такая декомпозиция чинит ошибки. Это гипотеза, которую надо проверять на своих данных.

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

📋

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

Ты проверяешь, как ассистент использовал информацию о пользователе из истории диалога.

<История>
{полная_история_диалога}


<Запрос>
{целевой_запрос_пользователя}


<Ответ_ассистента>
{ответ_ассистента}


Шаг 1. Выпиши все факты о пользователе из истории. Для каждого укажи: чей это факт, на какую область распространяется, актуален ли сейчас (не отменён ли позже), насколько он жёсткий (требование или пожелание), переносится ли на этот запрос.
Шаг 2. Назначь каждому факту роль: IGNORE (не должен влиять на ответ), SUPPORT (может направлять ответ), DOMINATE (ответ обязан это выполнить).
Шаг 3. Сравни ответ с ролями и дай один вердикт:
- RIGHT: применимое использовано верно, неприменимое не использовано;
- UNDER: применимое опущено или учтено слишком слабо;
- OVER: использовано то, что не должно влиять, или ему дан слишком большой вес.
Если вердикт не RIGHT, назови один главный тип ошибки из списка: {список_типов_ошибок}.
Для каждого вывода процитируй реплику из истории.

Формат ответа: таблица фактов → вердикт → тип ошибки → цитаты.

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

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

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

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

LLM спросит, что считается «историей» в вашей системе, какие факты о клиенте бывают, когда они устаревают и чем отличается чужой факт от своего. Эти ответы нужны, чтобы роли IGNORE / SUPPORT / DOMINATE получили смысл для вашей области. Она возьмёт структуру из шаблона и адаптирует под вашу задачу.

⚠️

Ограничения

⚠️ Лечение не проверено: Статья показывает, где судья ошибается. Что именно исправит ошибки, она не доказывает. В доступной части результатов сравнения форматов «сначала доказательства» и «таблица состояний» нет. Шаблон выше — моя сборка по определениям авторов, а не проверенный промпт.

⚠️ Судья слабее человека: На ошибках «не учёл» разрыв с людьми самый большой. Нельзя полагаться на LLM-судью как на единственный фильтр. Выборку нужно проверять вручную.

⚠️ Подсветка не спасает: Если вы подчеркнёте судье нужные реплики, это почти не поможет. Не тратьте время на сложный поиск релевантных кусков, если проблема в оценке роли факта.

⚠️ Урезанная история вредит: Если дать судье только последние реплики или один запрос, он начнёт видеть ошибки там, где их нет. В статье это объясняется именно потерей релевантных ходов, а не длиной контекста.

⚠️ Данные синтетические: Сценарии построены на сервисных задачах (бронирование, заказ) и сгенерированы моделью, проверенной людьми на выборке в 100 сценариев. Переносить цифры на ваш домен нельзя.

⚠️ Результаты частично скрыты: Данные по одному из сильнейших судей отсутствуют в публичной версии.

🔍

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

Авторы поставили вопрос иначе, чем обычно: проверили не ассистента, а того, кто его оценивает. Они взяли 20 сервисных областей из набора Schema-Guided Dialogue, развернули их в 48 типов задач и 480 затравок, а модель превратила их в 456 спецификаций. После проверки осталось 403 сценария, по два ответа на каждый (правильный и с одной контролируемой ошибкой), всего 806 ответов. Ошибки бывают девяти подтипов трёх семейств: «недоучёл», «переучёл» и «неверное состояние».

Сценарии устроены в трёх вариантах. История должна сохраниться, перенестись в другую задачу или перестать действовать. Каждому факту заранее присвоена роль (игнорировать, поддерживать или выполнять обязательно). Таким образом правильный ответ определён заранее, а не угадан.

Людей проверили на 100 сценариях. Разметка ошибок подтвердилась в 88% случаев, роли фактов совпали в 86,3%. Затем сравнили людей и четырёх судей, чьи результаты опубликованы (Kimi K2.5, GLM-5, DeepSeek-V3.2, Qwen3-32B; результаты пятого, Claude Opus 4.6, не приведены). На «недоучёл» люди нашли 94,4% ошибок, лучший судья — 63,9%. 26,6% таких ошибок судьи назвали «переучёл».

Любопытные детали. Констатный ответ «всегда OVER» набирает 67,7% распознанных ошибок, но бракует каждый правильный ответ. Поэтому нужно смотреть и долю ложных тревог. Судьи работают в разных режимах: Kimi K2.5 находит больше, но чаще бракует правильное, Qwen3-32B почти не ложно тревожит, но находит мало. А на «переучёл» люди оказались слабее (56%), чем лучшие модели. Если убрать из истории ходы с применимым фактом, ложные тревоги вырастают на 55,2 пункта. Если убрать столько же нерелевантных, то на 2,0. Так показано, что дело в потере нужной истории, а не в длине.

Вывод для практики: проблема не в доступе к доказательствам, а в суждении, какую роль должен играть факт.

💡

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

🔧 Техника: отдельный вердикт по каждому факту → меньше путаницы в направлении

Вместо одного вердикта на весь ответ просите оценку каждой роли:

Для каждого факта из таблицы напиши отдельно: роль (IGNORE/SUPPORT/DOMINATE), как факт проявился в ответе (не проявился / слабо / сильно), и совпадает ли это с ролью. Только после этого дай общий вердикт.

Это моя идея, статьёй не проверена. Она основана на том, что и UNDER, и OVER — следствия одного неверно назначенного веса.

Экстраполяция для инструкций агенту с памятью. Если ваш агент хранит правила или предпочтения (например, в CLAUDE.md), для каждого указывайте область действия и срок: «действует только в проекте X», «отменяет предыдущее правило Y», «относится только к клиенту Z». Так вы заранее задаёте роли, а не заставляете модель угадывать их по контексту. Вывод по мотивам статьи, прямо она это не проверяла.

🔗

Ресурсы

  • PersEvalBench: Can LLM Evaluators Judge Contextually Appropriate Use of Persona Information?
  • Авторы: Xinyi Liu, Hooshang Nayyeri, Emine Yilmaz, Dilek Hakkani-Tur, Charith Peris, Hari Thadakamalla (Amazon; University of Illinois Urbana-Champaign; University College London)
  • Основа сценариев: Schema-Guided Dialogue (Rastogi et al., 2020)
  • Близкие работы: Personalized Judge (Dong et al., 2024); работы про избирательное использование предпочтений (Hu et al., 2026; Yoon et al., 2026; Feng et al., 2026)

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

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

26,6% ответов, где ассистент не учёл предпочтение пользователя, модель-судья записала как «учёл лишнее». Метод позволяет проверять ответы ассистента, который помнит пользователя, и видеть, какую роль судья дал каждому факту из истории. Фишка: судья находит нужный факт, но неверно определяет его роль. Актуален ли он, чей он, на какую задачу распространяется, насколько жёсткий. Поэтому каждому факту заранее назначают роль IGNORE / SUPPORT / DOMINATE (не влияет / может направлять / обязан быть выполнен) и только потом сверяют ответ. Это способ увидеть, где судья ошибается, а не доказанное лекарство от ошибок.

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

Процесс из трёх шагов. Сначала выписываем факты о пользователе и описываем каждый: чей, на что распространяется, не отменён ли, требование это или пожелание. Потом назначаем роли: IGNORE (не должен влиять), SUPPORT (может направлять), DOMINATE (ответ обязан это выполнить). В конце сверяем ответ с ролями и выдаём вердикт: RIGHT (всё верно), UNDER (нужное недоучтено) или OVER (учтено лишнее или дан слишком большой вес). Сначала решаем, какую роль должен играть факт, и только потом смотрим, сыграл ли он её. Это как проверять экзамен по ключам: сначала пишем эталонные ответы, потом сверяем с ними работу студента. Судья больше не угадывает на ходу, что считать правильным. К каждому решению он прикладывает цитату из истории, поэтому спорный вердикт видно сразу.

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

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

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

Проверка ботов и ассистентов с памятью о пользователе → оценка сотен ответов в неделю, особенно когда в истории есть устаревшие пожелания, чужие факты (жена, коллега, прошлый заказ) или отменённые договорённости. Подходит для турбота, поддержки, ассистента по заказам: везде, где важно не забыть нужное и не притянуть лишнее. НЕ подходит как единственный фильтр: на ошибках «не учёл» разрыв судьи с людьми самый большой, выборку нужно проверять вручную. Цифры из статьи не переносите на свой домен: данные синтетические, сервисные сценарии, человек проверил 100 из них.

Мини-рецепт

1. Дай всю историю: не последние реплики, а целиком. Урезанная история заставляет судью видеть ошибки там, где их нет.
2. Вставь шаблон судьи: история, запрос, ответ ассистента, три шага (факты, роли, вердикт).
3. Оставь нужные типы ошибок: полное или частичное упущение, явное нарушение, нерелевантное использование, утечка из другой области, домысел, устаревшее состояние, чрезмерное доминирование, недовес. Лишние выкинь.
4. Требуй цитаты: для каждого решения судья показывает реплику, на которую опирался.
5. Проверь выборку руками: возьми 20-30 вердиктов и сравни со своей оценкой. Особенно те, где судья говорит OVER.
6. Крути настройки: если судья слишком злой или слишком добрый, смени модель или порог. Модели сильно различаются по настроению.
7. Не знаешь, как заполнить поля? Вставь шаблон в чат и попроси: Адаптируй этот шаблон судьи под мою задачу: проверяю ответы бота поддержки, который помнит клиента. Задавай вопросы, чтобы заполнить поля.

Примеры

[ПЛОХО] Ситуация: пользователь раньше писал «летаю только прямыми рейсами, с нами маленький ребёнок». Потом: «в Сочи в этот раз еду один, пересадка не проблема, главное подешевле». Бот предложил только прямой рейс за 14 500 ₽ и сослался на ребёнка. Рядом в истории лежит чужой факт: «жена не ест глютен». : Оцени, хорошо ли ассистент использовал информацию о пользователе из истории
[ХОРОШО] : Ты проверяешь, как ассистент использовал информацию о пользователе. Шаг 1: выпиши все факты из истории. Для каждого укажи: чей факт, на какую задачу распространяется, актуален ли сейчас, требование это или пожелание. Шаг 2: назначь роль каждому факту: IGNORE, SUPPORT или DOMINATE. Шаг 3: сравни ответ с ролями и дай вердикт RIGHT, UNDER или OVER. Если не RIGHT, назови один главный тип ошибки: устаревшее состояние, утечка из другой области, недовес. К каждому выводу процитируй реплику из истории. Что получим: таблицу, где «прямые рейсы» помечены как устаревшее (IGNORE), «еду один, пересадка не проблема» как актуальное (DOMINATE), а глютен жены как не относящийся к запросу (IGNORE). Вердикт скорее всего: использовано устаревшее состояние. Гарантии, что судья не перепутает направление ошибки, нет. Но роли и цитаты лежат на виду, и спорное решение проверяется глазами за минуту.
Источник: PersEvalBench: Can LLM Evaluators Judge Contextually Appropriate Use of Persona Information?
ArXiv ID: 2610.19314 | Сгенерировано: 2026-10-15 05:10

Проблемы LLM

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

Методы

МетодСуть
Сначала роли фактов, потом проверка ответа — разделяет «должно влиять» и «влияло»Судья делает три шага в одном запросе. 1. Выписать факты из истории. Для каждого указать: чей он, к какой области относится, актуален ли сейчас, требование это или пожелание, переносится ли на новый запрос. 2. Назначить роль: «игнорировать» (не должен влиять), «учитывать» (может направлять), «обязателен» (ответ должен выполнить). 3. Сверить ответ с ролями. Вердикт один из трёх: верно / упущено нужное / использовано лишнее. При ошибке назвать один главный тип и привести цитаты. Для каждого вывода процитируй реплику из истории. Почему должно работать: два разных вопроса больше не смешиваются. Первый: есть ли в ответе след факта. Второй: должен ли факт там быть. Судья хорошо находит следы, а слабое место, оценка роли, становится видимым. Ты проверяешь явные решения, а не угадываешь ход мыслей судьи. Важно: это гипотеза. Проверена сама диагностика ошибок, но не то, что разбивка их снижает. Сравни на своих размеченных примерах. Работает: ответы зависят от истории, где факты бывают устаревшими, чужими или разной жёсткости. Не работает: короткий контекст без противоречий, где проверка и так очевидна
📖 Простыми словами

PersEvalBench: CanLLMEvaluators Judge Contextually AppropriateUseof Persona Information?

arXiv: 2610.19314

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

Это как официант, который запомнил, что три года назад ты худел, и теперь вырывает у тебя из рук торт со словами "вам же нельзя сладкое". Формально проявил заботу, но по факту сморозил глупость — контекст изменился, ты пришёл праздновать день рождения. LLM-судья ведёт себя ровно так же: видит знакомый факт из профиля и радостно лепит ложный аппрув там, где ассистенту надо было дать по рукам за неуместную инициативу.

Новый бенчмарк PersEvalBench разложил эту лажу по полочкам через категории RIGHT, UNDER и OVER. Главный провал вскрылся на границах: в 26.6% случаев судьи клеймят недобор как перебор. Бот проигнорировал свежее уточнение и впарил старый шаблон, а AI-судья вопит: «слишком много лишней памяти!» вместо того, чтобы заметить очевидное — модель просто забила на новые вводные клиента.

Проверяли на диалогах, но грабли универсальны. Та же беда ждёт любые рекомендательные движки, умные CRM и автономных агентов, куда прикручена долговременная память. Как только ты поручаешь одной LLM проверять другую без жёстких фильтров, она начинает пропускать дичь — вроде навязывания веганского меню на запрос о покупке дрели, просто потому что «жена клиента не ест мясо». Слепой контроль в таких задачах создаёт лишь иллюзию надёжности.

Главный вывод: оценивать работу с памятью в один промпт — гарантированный слив качества. Хватит верить вердиктам в духе «память использована корректно». Дроби проверку: сначала отдельным шагом валидируй релевантность факта текущей задаче, затем проверяй его свежесть, и только потом оценивай форму ответа. Иначе твой сервис будет годами кормить людей протухшим контекстом, а карманный AI-аудитор продолжит бодро рапортовать, что всё работает идеально.

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

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

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