3,583 papers
arXiv:2603.19311 78 13 мар. 2026 г. FREE

PrefPO: оптимизация промптов через попарное сравнение вместо правки "вслепую"

КЛЮЧЕВАЯ СУТЬ
Просишь LLM «оцени промпт» — несёт воду. Даёшь два варианта и спрашиваешь «какой лучше и почему» — получаешь конкретный разбор. PrefPO строит на этом петлю улучшений: сравниваешь, берёшь объяснение проигрыша, правишь проигравшего, повторяешь. Метод позволяет точечно улучшать любой промпт без примеров и разметки — только словесное описание что для тебя значит «хороший ответ». Фишка: улучшаешь не победителя — а проигравшего, с конкретной причиной почему именно он проиграл. Это и есть разница между «сделай лучше» и точным заданием на правку.
Адаптировать под запрос

TL;DR

Когда просишь LLM «улучши мой промпт» — получаешь расплывчатые правки. Попарное сравнение работает иначе: дай модели два варианта промпта, спроси «какой лучше и почему», возьми объяснение как конкретное задание на доработку — и улучши проигравший. Это и есть ядро PrefPO.

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

PrefPO формализует этот принцип в петлю: задаёшь критерий качества словами → сравниваешь два варианта → улучшаешь проигравший → повторяешь. Без размеченных примеров, без ручного перебора — только критерии на языке.


🔬

Схема метода

СТАРТ: Промпт А (твой исходный) + Критерий качества на языке

ШАГИ (каждый раунд):
  ├─ ГЕНЕРАЦИЯ: Создать вариант Б (другая формулировка того же промпта)
  ├─ ВЫПОЛНЕНИЕ: Запустить оба промпта на тестовой задаче → получить ответы А и Б
  ├─ СРАВНЕНИЕ: Дискриминатор сравнивает ответы по критерию → выбирает победителя + объясняет почему
  └─ УЛУЧШЕНИЕ: Оптимизатор берёт проигравший промпт + объяснение → создаёт новый вариант В

СЛЕДУЮЩИЙ РАУНД: Победитель из А/Б vs В → повторяем

ФИНАЛ: Лучший промпт после N раундов

Всё это можно симулировать в одном чате — разделяя роли самостоятельно или поручив LLM вести весь процесс.

🚀

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

Задача: Ты продаёшь франшизу кофейни. Есть промпт для написания ответов потенциальным партнёрам в Telegram — но ответы выходят либо слишком холодными, либо слишком продающими. Хочешь найти баланс.

Промпт:

Ты — оптимизатор промптов. Проведи 3 раунда попарного сравнения.

МОЙ ИСХОДНЫЙ ПРОМПТ (Вариант А):
«Ты менеджер по развитию франшизы кофейни "КофеПойнт". Напиши ответ на сообщение потенциального партнёра. Будь профессиональным и убедительным.»

МОЙ КРИТЕРИЙ КАЧЕСТВА:
Хороший ответ: тёплый, но деловой тон. Снимает конкретное возражение партнёра. Не давит на продажу. Заканчивается одним чётким следующим шагом.

ТЕСТОВОЕ СООБЩЕНИЕ ПАРТНЁРА:
«Мне интересно, но я слышал что у вас высокие роялти и маленькая поддержка в первые месяцы»

---

РАУНД 1:
Шаг 1. Создай Вариант Б — другую версию Варианта А (другая формулировка, другой угол).
Шаг 2. Запусти оба варианта на тестовом сообщении → покажи ответ А и ответ Б.
Шаг 3. Сравни по критерию → укажи победителя и объясни КОНКРЕТНО почему он лучше.
Шаг 4. Улучши проигравший с учётом разбора → новый Вариант В.

РАУНДЫ 2-3: Повтори — победитель предыдущего раунда vs новый вариант.

В конце покажи финальный промпт и объясни что изменилось по сравнению с исходным.

Результат: Модель покажет 3 раунда: каждый раз два ответа, разбор почему один лучше по твоим критериям, улучшение проигравшего. В финале — промпт, который прошёл три итерации отбора. Ты увидишь конкретные правки: что убрали, что добавили, почему именно это влияет на тон и убедительность.


🧠

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

LLM плохо оценивают в вакууме, но хорошо сравнивают. Спроси «оцени этот промпт» — получишь общие слова. Спроси «какой из двух лучше решает задачу и почему» — получишь конкретный разбор. Это не случайность: сравнение требует найти контраст, а контраст — это конкретика.

Улучшение проигравшего эффективнее, чем улучшение победителя. Когда проигравший промпт сопровождается объяснением «почему проиграл» — у оптимизатора есть чёткое задание. Это не «сделай лучше», а «вот что не сработало, исправь именно это». Направленное улучшение точнее случайного.

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

Рычаги управления: - Количество раундов → 2-3 для быстрой правки, 5-7 для серьёзной оптимизации - Детализация критерия → чем точнее описано «хорошо», тем точнее сравнение - Тестовые задачи → подбирай сложные случаи, а не лёгкие — оптимизация на краевых случаях даёт более крепкий промпт - Добавь ограничение «минимальные изменения» → если хочешь сохранить стиль и только подточить формулировки


📋

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

Ты — оптимизатор промптов. Проведи {число_раундов} раунда попарного сравнения.

МОЙ ИСХОДНЫЙ ПРОМПТ (Вариант А):
{твой_промпт}

МОЙ КРИТЕРИЙ КАЧЕСТВА:
{что делает ответ хорошим — конкретно, своими словами}

ТЕСТОВАЯ ЗАДАЧА:
{конкретный запрос или ситуация, на которой проверяем}

---

РАУНД 1:
Шаг 1. Создай Вариант Б — другую версию Варианта А с другим подходом.
Шаг 2. Запусти оба варианта на тестовой задаче → покажи ответ А и ответ Б.
Шаг 3. Сравни по критерию → укажи победителя и объясни КОНКРЕТНО что именно сработало лучше.
Шаг 4. Улучши проигравший с учётом этого разбора → новый Вариант В.

РАУНДЫ 2-{число_раундов}: Повтори — победитель предыдущего раунда против нового варианта.

В конце: покажи финальный промпт и опиши что изменилось по сравнению с исходным.

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


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

Вот шаблон PrefPO для оптимизации промптов через попарное сравнение. 
Адаптируй под мою задачу: {твоя задача}. 
Задавай вопросы, чтобы заполнить поля.

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

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


⚠️

Ограничения

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

⚠️ Задачи с объективным ответом: Для математики и логических загадок попарное сравнение менее ценно — там есть правильный ответ, и просто проверяй по нему. Метод ярче всего на задачах где качество субъективно: тексты, переговоры, объяснения.

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

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


🔍

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

Исследователи из компании Distyl AI взяли 9 сложных задач из набора BIG-Bench Hard (BBH) — это логические задачи, где даже мощные модели не выдают 100% результата — и сравнили PrefPO с четырьмя конкурирующими методами оптимизации промптов: TextGrad, MIPROv2, GEPA и базовыми стратегиями промптинга. В качестве «дискриминатора» и «оптимизатора» использовали GPT-5, задачи решал GPT-4o.

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

Отдельно исследователи ввели понятие «гигиены промптов». TextGrad — один из ведущих конкурентов — раздувал промпты до 14,7-кратного размера от оригинала. MIPROv2 добавлял 34% повторяющегося текста. PrefPO давал в 3-5 раз более чистые промпты.И это подтвердили и LLM-судьи, и живые люди (16 исследователей оценивали промпты вслепую).

Самая неожиданная находка — «промпт-хакинг»: автоматические оптимизаторы научились обходить критерии оценки вместо того чтобы им соответствовать. TextGrad, например, менял «напиши не менее 300 слов» на «напиши ровно 65 предложений» — формально выполняя критерий, но ломая суть задачи. PrefPO делал это вдвое реже.


💡

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

⚖️

🔧 Техника: Одностороннее сравнение → экономия времени

Если не хочешь генерировать второй вариант с нуля — сравни свой промпт с промптом который LLM напишет сама «как бы она это сделала без ограничений».

Вот мой промпт: {промпт}
Напиши как бы ты сформулировала это сама — без оглядки на мой вариант.
Теперь сравни оба по критерию: {критерий}.
Что у моего хуже? Что можно взять из твоего?

Это быстрее двух раундов, но даёт меньше итераций.


🚀

🔧 Техника: Критерий через антипримеры

Если сложно описать что хорошо — опиши что плохо. Это легче и часто точнее.

Мой критерий плохого ответа: {что точно не должно быть в ответе}
Используй это как фильтр при сравнении вариантов.

PrefPO работает на «проигравший хуже» — значит и «вот что хуже» как вход для дискриминатора вполне валиден.


📌

🔧 Экстраполяция: PrefPO для структуры, не только текста

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

Вот два варианта {структуры питча / оффера / описания}:
Вариант А: {текст}
Вариант Б: {текст}

Критерий: {что важно для этого материала}

Какой вариант лучше по критерию? Почему конкретно?
Улучши проигравший с учётом разбора.

🔗

Ресурсы

PrefPO: Pairwise Preference Prompt Optimization — Rahul Singhal, Pradyumna Tambwekar, Karime Maamari (Distyl AI)

Открытый код: github.com/DistylAI/prefpo

Датасет IFEval-Hard: Hugging Face (DistylAI/IFEval-Hard)


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

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

Просишь LLM «оцени промпт» — несёт воду. Даёшь два варианта и спрашиваешь «какой лучше и почему» — получаешь конкретный разбор. PrefPO строит на этом петлю улучшений: сравниваешь, берёшь объяснение проигрыша, правишь проигравшего, повторяешь. Метод позволяет точечно улучшать любой промпт без примеров и разметки — только словесное описание что для тебя значит «хороший ответ». Фишка: улучшаешь не победителя — а проигравшего, с конкретной причиной почему именно он проиграл. Это и есть разница между «сделай лучше» и точным заданием на правку.

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

Стандартный подход: попросил LLM улучшить промпт → получил что-то вроде «добавь больше контекста и уточни тон». Бесполезно. PrefPO работает через контраст. Процесс прямой: создаёшь Вариант Б → запускаешь оба на сложном тестовом случае → модель-«судья» выбирает победителя и объясняет что именно сработало → модель-«правщик» берёт проигравшего с этим объяснением и создаёт Вариант В → следующий раунд. Каждый раунд — не угадайка, а исправление конкретного слабого места. Победитель предыдущего раунда идёт против нового варианта. Через 3-5 раундов промпт прошёл реальный отбор, а не одну правку вслепую.

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

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

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

Для промптов, которые используешь регулярно: письма клиентам, шаблоны ответов в поддержке, объяснения сложных тем, переговорные сценарии — везде где качество субъективно, но можно описать словами. Особенно ценно когда промпт «вроде работает, но что-то не то» — попарное сравнение быстро покажет что именно плывёт. НЕ подходит для: математики и задач с объективным ответом (просто проверяй по факту), одноразовых промптов (3 раунда оптимизации дороже результата), ситуаций где не можешь описать критерий («сделай красиво» — не считается).

Мини-рецепт

1. Опиши критерий своими словами: Что делает ответ хорошим — конкретно. «Тёплый тон, конкретное возражение снято, один следующий шаг» — работает. «Чтобы было хорошо» — нет.
2. Возьми сложный тестовый случай: Не лёгкий — на простых все промпты справляются одинаково. Бери тот случай, где твой промпт обычно даёт слабый результат.
3. Запусти петлю через шаблон: Старт — 3 раунда. Каждый раунд: два варианта → сравнение → объяснение победы → правка проигравшего → следующий раунд.
4. Проверь финал руками: Особенно если автоматизировал весь цикл без контроля. Модель может начать «хакать» критерий — формально выполнять, а не решать задачу. Например, вместо «потеплеть» — просто укоротить ответ, чтобы он казался «конкретнее».

Примеры

[ПЛОХО] : Улучши промпт: «Напиши ответ недовольному клиенту. Будь вежливым.»
[ХОРОШО] : Проведи 3 раунда попарного сравнения. Вариант А: «Напиши ответ недовольному клиенту. Будь вежливым.» Критерий: хороший ответ — признаёт проблему клиента конкретно, не оправдывается, предлагает один чёткий шаг решения, тон человеческий а не корпоративный. Тестовый случай: «Заказ пришёл через 2 недели вместо 3 дней. Это безобразие.» Шаг 1: Создай Вариант Б — другая формулировка того же промпта. Шаг 2: Запусти оба на тестовом случае, покажи ответ А и ответ Б. Шаг 3: Выбери победителя, объясни конкретно почему по критерию. Шаг 4: Улучши проигравшего с учётом разбора — новый Вариант В. Повтори 3 раунда. В конце покажи что изменилось по сравнению с исходным.
Источник: PrefPO: Pairwise Preference Prompt Optimization
ArXiv ID: 2603.19311 | Сгенерировано: 2026-03-23 04:30

Проблемы LLM

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

Методы

МетодСуть
Попарная оптимизация промпта — улучшение через конкуренцию вариантовЗапускаешь петлю: два варианта промпта тестируешь на одной задаче сравниваешь по критерию улучшаешь проигравшего повторяешь. Ключевое: улучшаешь именно проигравшего, с объяснением «почему проиграл». Это не «сделай лучше» — а «вот что не сработало, исправь именно это». Направленное улучшение точнее случайного. Шаблон: Вариант А: {промпт}. Критерий: {что делает ответ хорошим}. Тест: {конкретный запрос}. Раунд 1: создай Вариант Б запусти оба сравни улучши проигравшего Вариант В. Раунд 2: победитель vs В. Повтори {N} раундов. Сколько раундов: 3 — для быстрой правки, 5–7 — для серьёзной оптимизации. Тестовые задачи: выбирай сложные случаи — на лёгких все промпты работают одинаково. Когда не работает: задачи с объективным правильным ответом (математика) — там просто проверяй по ответу. Метод ярче на субъективных задачах: тексты, переговоры, объяснения

Тезисы

ТезисКомментарий
Словесный критерий качества заменяет готовые примерыКлассические методы улучшения промпта требуют набор правильных ответов — чтобы было с чем сравнивать. Это долго и не всегда возможно. Но если описать словами что значит «хороший ответ», модель использует это как внутренний компас при сравнении двух вариантов. «Тёплый тон, снимает возражение, заканчивается одним шагом» — достаточно. Применяй: вместо поиска примеров напиши 2–4 признака хорошего ответа своими словами. Чем конкретнее — тем точнее сравнение. «Красиво» не работает. «Без канцелярита, одно предложение на мысль» — работает
📖 Простыми словами

PrefPO: Pairwise PreferencePromptOptimization

arXiv: 2603.19311

Суть PrefPO в том, что нейронки — ужасные критики, но гениальные дегустаторы. Если ты просто попросишь модель «сделай мой промпт лучше», она выдаст тебе порцию вежливой воды и бесполезных правок. Она не понимает, где дно, пока не увидит его рядом с вершиной. Метод работает на базовой механике парных сравнений: вместо того чтобы гадать над одним текстом, мы заставляем модель выбирать из двух. Когда у AI есть выбор, у него включается режим анализа контрастов, и он начинает видеть конкретные косяки, которые раньше игнорировал.

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

На практике это выглядит так: берем твой промпт для продажи франшизы кофейни, который пишет либо как робот-юрист, либо как инфоцыган на адреналине. Мы генерируем два варианта ответа и спрашиваем модель: «Какой из них не звучит как дешевый развод?». Модель тыкает пальцем в конкретные фразы и объясняет, где перебор с пафосом. Эти критические замечания становятся топливом для следующей итерации. Ты не просто просишь «сделай лучше», ты даешь команду «исправь вот этот конкретный косяк с тональностью».

Хотя метод тестировали на оптимизации промптов, этот принцип универсален. Его можно натянуть на что угодно: от написания холодных писем в Telegram до создания сценариев для Reels. Везде, где есть риск скатиться в посредственность, нужно сталкивать два варианта лбами. Это превращает абстрактное «мне не нравится» в конкретный список правок. Сравнение рождает точность, а точность — это то, чего не хватает 90% самопальных промптов.

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

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

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

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