TL;DR
«Лучший промпт» — понятие нестабильное. Одни и те же промпты тестировались на разных выборках вопросов из одного бенчмарка: при каждом тесте победитель менялся. В 40–60% случаев промпт, занявший первое место на одном наборе примеров, уступал другому на следующем наборе. То есть тест-победитель может быть просто удачей, а не реальным преимуществом.
Главная ловушка: высокая общая согласованность рейтинга не защищает от нестабильности на первом месте. Промпты A, B, C могут стабильно занимать места 1–3 в общем зачёте, но конкретно первое место каждый раз у разного. Это значит — если ты выбираешь «лучший по одному тесту», ты выбираешь случайного победителя среди примерно равных вариантов. Причина: LLM ведёт себя по-разному на разных примерах одного типа, особенно для задач с цепочкой рассуждений.
Решение — стабильно-ориентированный выбор: оценивать каждый промпт несколько раз на разных примерах, а победителем считать не того, у кого максимальный средний балл, а того, у кого высокий средний балл при низком разбросе. Формула выбора: средний балл минус штраф за непостоянство. Промпт, который раз блеснул — хуже промпта, который стабильно хорош.
Схема метода
ШАГ 1: Подготовка кандидатов
→ Составь 3–5 вариантов промпта для одной задачи (разная формулировка,
разная структура инструкции)
ШАГ 2: Множественный тест (в одном чате или разных)
→ Прогони КАЖДЫЙ промпт на 5–10 разных, но однотипных примерах
→ Для каждого результата выставь оценку 1–5
ШАГ 3: Подсчёт стабильности
→ Для каждого промпта: средний балл + разброс (насколько оценки отличаются)
→ Итоговый рейтинг = средний балл - штраф за разброс
ШАГ 4: Выбор победителя
→ Победитель = промпт с лучшим соотношением среднее/разброс
→ Не тот, кто один раз выдал 5/5, а тот, кто держит 4/5 стабильно
Все шаги — вручную или с помощью LLM как судьи (один чат).
Пример применения
Задача: Ты ведёшь Telegram-канал об инвестициях. Хочешь найти лучший промпт для написания постов в стиле «разбор компании за 5 минут». Протестировал два варианта на одной теме — Сбербанк — и промпт А выиграл. Но правильно ли ты сравнил?
Промпт:
Я сравниваю несколько вариантов промпта для написания постов в Telegram-канале
об инвестициях. Помоги провести честный тест.
Вот 3 варианта промпта:
[Вариант А]: {текст промпта А}
[Вариант Б]: {текст промпта Б}
[Вариант В]: {текст промпта В}
Вот 5 тестовых задач (разные компании для разбора):
1. {компания 1 — например, Сбербанк}
2. {компания 2 — например, Яндекс}
3. {компания 3 — например, Ozon}
4. {компания 4 — например, Лукойл}
5. {компания 5 — например, ВкусВилл}
Для каждого варианта промпта примени его к каждой из 5 задач.
Оцени результат по шкале 1–5 (5 = отлично: структурно, полезно, в нужном стиле).
Затем для каждого варианта:
- Подсчитай средний балл
- Подсчитай разброс (насколько оценки отличаются между задачами)
- Вычисли итоговый балл = средний балл - (разброс × 0.5)
Выведи таблицу и скажи, какой вариант промпта выбрать.
Результат: Модель последовательно применит каждый из трёх вариантов к пяти компаниям и выставит оценки. Ты увидишь таблицу: средний балл, разброс и итоговый рейтинг для каждого варианта. Часто окажется, что промпт, который «выиграл» на Сбербанке, провалится на ВкусВилле — и в итоге победит более скромный, но стабильный вариант.
Почему это работает
Слабость LLM: Модель не обрабатывает все задачи одинаково. На одних примерах структура промпта совпадает с её «привычным» паттерном, на других — нет. Результат одного и того же промпта может быть блестящим для Сбербанка и посредственным для ВкусВилла — не потому что промпт плохой, а потому что один тест — это слишком мало данных.
Сильная сторона LLM: Модель хорошо справляется с ролью судьи и аналитика. Она может прогнать несколько промптов на нескольких примерах, выставить оценки и посчитать итог — всё в одном чате. То есть LLM помогает тебе провести тот самый многократный тест, который убирает случайность.
Как метод использует это: Вместо одного теста — матрица: несколько промптов × несколько примеров. Победитель выбирается не по пику, а по среднее минус штраф за нестабильность. Промпт, который один раз блеснул на 5/5, но потом дал 2/5 и 3/5 — хуже промпта, который стабильно держит 4/5.
Рычаги управления: - Количество тестовых задач → 3 задачи — минимум для сигнала, 10+ — надёжный результат - Коэффициент штрафа (0.5 в примере) → увеличь до 1.0, если тебе важна стабильность, уменьши до 0.2, если задача критичная и нужен максимальный пик один раз - Критерий оценки → замени «структурно и полезно» на свой критерий качества под задачу
Шаблон промпта
Я сравниваю {число} вариантов промпта для задачи: {описание задачи}.
Варианты промптов:
[Вариант 1]: {текст}
[Вариант 2]: {текст}
[Вариант 3]: {текст}
Тестовые примеры:
1. {пример 1}
2. {пример 2}
3. {пример 3}
4. {пример 4}
5. {пример 5}
Для каждого варианта промпта последовательно примени его к каждому из {число_примеров} тестовых примеров.
Критерий оценки: {что считается хорошим результатом}
Оценочная шкала: 1 (плохо) — 5 (отлично)
После всех тестов:
— Рассчитай средний балл каждого варианта
— Рассчитай разброс оценок (макс минус мин)
— Итоговый балл = средний балл - (разброс × {штраф: 0.3–1.0})
Выведи итоговую таблицу и финальную рекомендацию.
Что подставлять:
- {описание задачи} — например: «написание постов для Telegram», «ответы на жалобы клиентов»
- {пример 1–5} — разные, но однотипные входные данные: разные компании, разные жалобы, разные темы постов
- {что считается хорошим результатом} — твой критерий: «структурно, по делу, в нужном тоне»
- {штраф: 0.3–1.0} — 0.3 если нужен пик, 1.0 если нужна стабильность
🚀 Быстрый старт — вставь в чат:
Вот шаблон для стабильного сравнения промптов. Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить все поля.
[вставить шаблон выше]
LLM спросит какие у тебя варианты промптов и какие тестовые примеры использовать — потому что без этого нельзя построить матрицу сравнения. Она возьмёт структуру теста и применит к твоим данным.
Ограничения
⚠️ Равные промпты: Метод работает только когда промпты приблизительно одинаково хороши. Если один вариант явно плохой — даже единственный тест это покажет. Стабильный выбор нужен при выборе среди сильных кандидатов.
⚠️ Трудоёмкость: Тест 3 промптов × 5 примеров = 15 результатов для оценки. Это занимает время. Для разовой задачи может быть излишним — метод оправдан когда промпт будет использоваться систематически (регулярные посты, шаблоны для команды, онбординг-скрипты).
⚠️ Задачи с объективным ответом vs субъективные: Исследование проверялось на задачах с однозначным правильным ответом (математика, тесты). Для субъективных задач (тон текста, творчество) оценочная шкала требует чёткого критерия — иначе «дисперсия» оценок будет отражать непоследовательность судьи, а не промпта.
⚠️ LCB слабее на стабильных задачах: Если задача простая и все промпты работают одинаково хорошо, штраф за дисперсию может привести к выбору чуть менее сильного, но «скромного» варианта. На практике — небольшая цена за надёжность.
Как исследовали
Идея была простой: взять 20 вариантов промпта для одной задачи, запустить их не один раз, а многократно — на разных случайных выборках примеров из бенчмарка. Команда проверила три открытых модели (Mistral, Phi, Qwen весом ~7B) на двух задачах: математические задачи в несколько шагов (GSM8K) и тесты по разным дисциплинам (MMLU). Каждая серия тестов — это 50, 100 или 200 случайных вопросов, и так 5–10 раз с разными «случайными семенами» (разные выборки вопросов из одного и того же набора данных).
Результат удивил: общая корреляция рейтингов была умеренно высокой — то есть сильные промпты оставались в верхней части, слабые в нижней. Но конкретно первое место менялось в 40–60% случаев в зависимости от выборки. На математике нестабильность была выше — задачи с цепочкой шагов сильнее зависят от конкретных примеров. На MMLU стабильность чуть лучше, но и там первое место прыгало.
Ключевой инсайт авторов: «стабильная корреляция» и «стабильный победитель» — разные вещи. Можно видеть красивые цифры общего согласия между тестами и всё равно каждый раз выбирать другой промпт. Когда ввели LCB-стратегию (выбор с поправкой на дисперсию), она выиграла или сыграла вничью на большинстве задач — особенно сильно на маленьких выборках: разница доходила до +37% по точности (0.312 против 0.228 для Qwen на 50 примерах).
Адаптации и экстраполяции
🔧 Техника: использовать LLM как «жюри с памятью» → отслеживать нестабильность в реальном времени
Если ты замечаешь, что ответы на похожие задачи получаются разного качества — это сигнал нестабильного промпта. Попроси LLM самому отследить:
Ты будешь несколько раз применять этот промпт и потом оценишь, насколько
результаты были похожи по качеству.
Промпт для теста: {твой промпт}
Применяй его к этим 5 примерам по очереди, после каждого выставляй оценку 1-5.
В конце скажи: "Разброс высокий" (оценки сильно отличались) или
"Разброс низкий" (результаты стабильны).
Примеры: {список примеров}
🔧 Техника: «Стресс-тест» нового промпта перед использованием
Прежде чем брать промпт в работу — прогони его на «неудобных» примерах:
Перед тем как я начну использовать этот промпт регулярно, проверь его на
5 нестандартных или «граничных» примерах в рамках задачи {тип задачи}.
Промпт: {текст промпта}
Придумай 5 примеров, где он может «споткнуться»: нетипичный ввод,
пограничный случай, неожиданный контекст. Примени промпт к каждому,
оцени результат и скажи — держится ли промпт или разваливается.
Ресурсы
- Статья: On the Stability of Prompt Ranking in Large Language Model Evaluation
- GitHub: https://github.com/shaoshuaidu/prompt_stability
- Авторы: Shaoshuai Du (University of Amsterdam), Penghao Liang (Northeastern University), Yixian Shen (University of Amsterdam), Chuanqi Shi, Hang Zhang (UC San Diego), Lun Wang (Duke University)
