TL;DR
GER-Eval — метод оценки текстов в два шага: сначала LLM создаёт критерии оценки под задачу (название, описание, шкалу), потом оценивает по ним выход. Вместо готовых человеческих критериев ("оцени по связности и точности") модель формулирует свои ("оцени по глубине аргументов, новизне идей, структурной ясности"), которые лучше соответствуют её внутреннему представлению о качестве текста.
Обычно мы даём модели готовые критерии оценки, которые придумали люди. Но модель может понимать "связность" или "точность" не так, как мы. Исследование показало: модели стабильно применяют свои критерии (согласованность 70-90% между разными промптами), но плохо согласуются с человеческими оценками в фактических задачах. На диалогах и эмпатии — отлично (корреляция с людьми 0.8-0.9), на биомедицинских текстах — провал (корреляция 0.2-0.3). Критерии одной модели плохо работают в другой — каждая "понимает" качество по-своему.
Метод решает через явное разделение этапов: сначала модель артикулирует что именно она будет оценивать (создаёт список критериев с описаниями), потом применяет их к текстам. Это делает оценку прозрачнее — видно по каким именно параметрам модель судит, а не чёрный ящик с итоговой оценкой.
Схема метода
ШАГ 1 (Генерация критериев):
Промпт с описанием задачи → Модель создаёт список критериев
Каждый критерий = [название + описание + шкала оценки]
ШАГ 2 (Применение):
Промпт с критерием + текст для оценки → Модель даёт оценку по шкале + объяснение
Оба шага — отдельные запросы. Сначала получаешь набор критериев, потом прогоняешь через них каждый текст.
Пример применения
Задача: Ты пишешь тексты для Telegram-канала про стартапы. Нужно оценить три черновика поста про новый раунд Skillbox — какой лучше зайдёт аудитории?
ШАГ 1 — Создаём критерии:
Промпт:
Задача: оценка постов для Telegram-канала про российские стартапы и венчур.
Аудитория: основатели, инвесторы, люди из tech-индустрии. Читают в метро, между встречами.
Создай критерии оценки таких постов. Для каждого критерия укажи:
- Название
- Описание (что именно оцениваем)
- Шкалу (от 1 до 5, где 5 — отлично)
Результат: Модель выдаст 5-7 критериев, например: "Хукность первой строки", "Плотность инсайта", "Конкретика вместо общих слов", "Мемность/вирусность формулировок", "Релевантность для российского рынка". Каждый с описанием что именно проверять.
ШАГ 2 — Оцениваем черновики:
Промпт (для каждого черновика):
Критерий: Плотность инсайта
Описание: Сколько неочевидных мыслей на 100 слов. Пост должен давать новое понимание, а не пересказывать новость.
Шкала: 1-5 (5 = каждый абзац — новый угол зрения)
Оцени черновик:
[вставить текст поста]
Дай оценку и объясни почему.
Результат: Для каждого черновика получишь оценки по всем критериям с объяснениями. Увидишь не просто "этот лучше", а "этот проигрывает по хукности (2/5), но выигрывает по конкретике (5/5)".
Почему это работает
Проблема статичных критериев: Когда мы даём LLM человеческие критерии ("оцени по связности"), модель может трактовать их не так, как мы задумали. "Связность" для GPT может означать грамматические связки, а для нас — логический поток мысли. Мы получаем оценки, но не понимаем на основе чего модель их выставила.
Сильная сторона LLM: Модели хорошо артикулируют свои внутренние паттерны — если попросить сформулировать критерий, они опишут что конкретно будут проверять. Это превращает неявное "ощущение качества" в явный чек-лист.
Как метод использует это: Разделение на два этапа заставляет модель сначала объяснить себе что такое хороший текст для этой задачи, потом применить эти объяснения. Первый этап работает как калибровка — модель формулирует набор проверок, второй — как последовательное применение этих проверок.
Рычаги управления:
- Контекст при генерации критериев → добавь примеры хороших/плохих текстов в первый промпт — критерии станут специфичнее под домен
- Количество критериев → скажи "не больше 3 критериев" для быстрой оценки или "7-10 критериев" для детального разбора
- Few-shot в применении → во втором шаге покажи пример "текст X получил 4/5 потому что..." — модель точнее откалибрует шкалу
- Формат вывода → попроси в первом шаге "критерии в формате таблицы" или "критерии с примерами" для разной степени детализации
Шаблон промпта
ШАГ 1 — Генерация критериев
Задача: {описание_задачи}
Аудитория/Контекст: {для_кого_текст}
Создай критерии оценки для этой задачи. Для каждого критерия укажи:
- Название (кратко, суть)
- Описание (что конкретно проверяем)
- Шкалу оценки (например, 1-5 или высокий/средний/низкий)
[Опционально — добавь примеры:]
Вот пример хорошего результата: {пример_хорошего}
Вот пример плохого результата: {пример_плохого}
Что подставлять:
- {описание_задачи} — что оцениваем: "посты в соцсетях", "тексты холодных писем", "ответы саппорта"
- {для_кого_текст} — кто читает, в каком контексте, какие ожидания
- Примеры (опционально) — реальные тексты с пометками что в них хорошо/плохо
Модель вернёт список критериев. Сохрани их для второго шага.
ШАГ 2 — Применение критериев
Критерий: {название_критерия}
Описание: {описание_критерия}
Шкала: {шкала_оценки}
Оцени следующий текст по этому критерию:
{текст_для_оценки}
Дай оценку по шкале и объясни почему.
[Опционально — few-shot:]
Пример: текст "{пример_текста}" получил {оценка} потому что {объяснение}.
Что подставлять:
- {название_критерия}, {описание_критерия}, {шкала_оценки} — копируешь из вывода первого шага
- {текст_для_оценки} — текст который оцениваешь
- Few-shot пример (опционально) — если нужна калибровка шкалы
Повтори этот промпт для каждого критерия и каждого текста.
🚀 Быстрый старт — вставь в чат:
Я хочу использовать двухэтапную оценку: сначала ты создашь критерии, потом оценишь по ним мои тексты.
Вот шаблон:
[вставить ШАГ 1 выше]
Задай мне вопросы, чтобы заполнить {описание_задачи}, {для_кого_текст} и понять нужны ли примеры.
LLM спросит что именно ты оцениваешь, для какой аудитории, какие есть примеры — чтобы сгенерировать релевантные критерии. После получения критериев скажи "теперь оцени вот этот текст по первому критерию" — модель возьмёт паттерн из ШАГа 2 и применит.
Ограничения
⚠️ Фактические задачи: Для текстов где важна точность фактов (биомедицина, технические тексты, дата-ориентированные отчёты) метод проваливается. Корреляция с человеческими оценками падает до 0.2-0.3. Модель создаст критерий "медицинская точность", но не сможет надёжно его применить — у неё нет базы знаний для проверки фактов.
⚠️ Разные модели = разные оценки: Критерии созданные в GPT-4o, не работают в Claude или Llama. Каждая модель "понимает" качество текста по-своему. Если создал критерии в одной модели — применяй их в той же. Переносить на другую — получишь другие оценки.
⚠️ Два запроса минимум: Для полной оценки нужен минимум один запрос на генерацию критериев + по запросу на каждый критерий для каждого текста. Оценить 3 текста по 5 критериям = 16 запросов (1 для генерации + 15 для применения). Расход токенов выше чем простая оценка "в лоб".
⚠️ Субъективные домены — сильная зона: Метод отлично работает там где важны стиль, тон, вовлечённость, креативность (посты, диалоги, креативы). На таких задачах согласованность 80-90%. Но на объективных критериях (грамматика, факты, числовая точность) — слабее.
Как исследовали
Команда из Амстердамского университета взяла четыре бенчмарка с человеческими оценками: диалоги (USR), новостные саммари (SummEval), биомедицинские саммари (SumPubMed) и instruction-following (HelpSteer2). Всего тысячи текстов с оценками людей по критериям вроде "связность", "точность", "вовлечённость".
Протестировали пять моделей: GPT-4o, GPT-4o-mini, Llama-3.3-70B, Mixtral-8x22B, Qwen2.5-72B. Каждую модель попросили сгенерировать критерии оценки для каждого датасета (три варианта промпта: только описание задачи, описание + примеры контекста, описание + хорошие/плохие примеры), потом оценить тексты по этим критериям (zero-shot и few-shot с демонстрациями).
Что измеряли: (1) Сколько критериев создаёт модель и насколько они уникальны, (2) совпадают ли сгенерированные критерии с человеческими (alignment), (3) насколько стабильно модель применяет свои критерии (согласованность между zero-shot и few-shot), (4) насколько оценки модели коррелируют с человеческими.
Главный инсайт: Модели создают 5-7 критериев на задачу, 80-90% уникальных (не повторяются). GPT-4o показал 100% совпадение с человеческими критериями на диалогах при few-shot промптинге, но на биомедицинских текстах согласие упало до 60% и ниже.
Что удивило: Критерии не переносятся между моделями. Когда критерии созданные GPT-4o применяли через Llama — корреляция оценок проваливалась почти до нуля на биомедицине (ICC < 0.2), но держалась на диалогах (ICC ≈ 0.7-0.8). Это значит каждая модель "видит" качество текста через свои паттерны — что для GPT "хорошая связность", для Llama может быть средней.
Практический вывод: Двухэтапная оценка работает, но только внутри одной модели и лучше всего на субъективных критериях (тон, стиль, вовлечённость). На фактах и специализированных доменах — ненадёжно.
Адаптации и экстраполяции
🔧 Техника: Создание персонализированных чек-листов
Вместо одноразовой оценки используй первый шаг для создания многоразового чек-листа. Сгенерировал критерии для оценки постов в соцсетях? Сохрани их как промпт-шаблон и применяй к каждому новому посту. Это превращает GER-Eval в фабрику персональных рубрик под твои задачи.
Измени в ШАГе 1:
После создания критериев выведи их в формате готового промпта: "Оцени следующий {тип_контента} по критериям: 1. [Критерий 1]: [описание] (шкала: [шкала]) 2. [Критерий 2]: [описание] (шкала: [шкала]) ..."Получишь готовый промпт для копипаста — больше не нужен двухшаговый процесс, сразу оцениваешь новые тексты.
🔧 Техника: Сравнительная оценка вместо абсолютной
Вместо оценки одного текста по шкале попроси модель сравнить два варианта по каждому критерию. LLM лучше справляются с относительными суждениями ("этот лучше того") чем с абсолютными шкалами ("это 4 из 5").
В ШАГе 2 замени:
Критерий: {название_критерия} Сравни два варианта по этому критерию: Вариант А: {текст_А} Вариант Б: {текст_Б} Какой лучше и насколько (незначительно / заметно / сильно)?Это снижает проблему калибровки шкалы — модели не нужно понимать "что такое 4 из 5", только "который из двух сильнее".
🔧 Техника: Генерация критериев из негативных кейсов
Если у тебя есть примеры провальных текстов, используй их в ШАГе 1 для создания более острых критериев. Модель увидит конкретные косяки и сформулирует критерии против них.
Добавь в ШАГ 1:
Вот примеры неудачных текстов и что в них не так: Текст 1: {плохой_пример_1} Проблема: {что_не_так} Текст 2: {плохой_пример_2} Проблема: {что_не_так} Создай критерии которые **ловят эти косяки**.Критерии станут специфичнее — не абстрактная "ясность", а "отсутствие канцелярита" или "конкретные цифры вместо 'много'".
Ресурсы
Learning to Judge: LLMs Designing and Applying Evaluation Rubrics • Бенчмарки: USR (Mehri & Eskenazi, 2020), SummEval (Fabbri et al., 2021), SumPubMed (Gupta et al., 2021), HelpSteer2 (Wang et al., 2024) • Код и сгенерированные рубрики: https://github.com/Clemenciah/llm-generated-rubrics • Авторы: Clemencia Siro (CWI Amsterdam), Pourya Aliannejadi (Shahid Beheshti University), Mohammad Aliannejadi (University of Amsterdam)
