TL;DR
IBEaM (Inductive Bias Extraction and Matching) — техника, которая улучшает точность оценок LLM через двухэтапный процесс: сначала модель сама формулирует детальные критерии оценки, потом использует их для конкретных случаев. Вместо мучительного подбора формулировок ты просто спрашиваешь модель: "А как ты сама хочешь видеть шкалу оценки?"
LLM плохо даёт последовательные оценки по шкале 1-10, если просто попросить "оцени это от 1 до 10". Модель может дать 7 за одно, потом 8 за похожее, потом снова 7 — критерии размыты. Когда ты просишь "оцени прогресс этого шага к цели" без конкретики, модель импровизирует каждый раз. Результат: оценки скачут, сложно сравнивать варианты, непонятно что значит "6 из 10".
IBEaM разбивает задачу на компоненты (например: "прогресс к цели" и "выполнимость шага"), для каждого компонента просит LLM создать детальную шкалу Лайкерта с описанием каждого балла, потом использует эту шкалу для оценки конкретных случаев. Шкала остаётся в контексте разговора — модель видит свои же критерии и применяет их последовательно. Финальный балл = комбинация оценок по всем компонентам.
Схема метода
ШАГ 1: Разбить задачу на компоненты
↓
ШАГ 2: Для каждого компонента — попросить LLM создать шкалу Лайкерта (1 промпт = 1 шкала)
→ Шкала с описанием каждого балла (1-10)
↓
ШАГ 3: Оценить каждый вариант по каждой шкале (шкала в контексте)
→ Оценки по всем компонентам
↓
ШАГ 4: Объединить оценки в финальный результат
→ Итоговая оценка/ранжирование
Все шаги выполняются в чате. ШАГ 2 делаешь один раз, шкалы сохраняешь. ШАГ 3 повторяешь для каждого варианта, который нужно оценить.
Пример применения
Задача: Тебе надо выбрать фриланс-проект на следующую неделю из 4 вариантов. Критерии: срочность (как быстро нужен результат) и прибыльность (сколько заработаешь с учётом времени).
Промпт ШАГ 2а — создание шкалы срочности:
Создай 10-балльную шкалу для оценки срочности задачи.
10 = максимальная срочность, 1 = минимальная.
Опиши каждый балл: что означает 1, что означает 2, и так далее до 10.
Промпт ШАГ 2б — создание шкалы прибыльности:
Создай 10-балльную шкалу для оценки прибыльности задачи с учётом затрат времени.
10 = максимальная прибыльность (высокая оплата при малых затратах),
1 = минимальная (низкая оплата при больших затратах).
Опиши каждый балл: что означает 1, что означает 2, и так далее до 10.
Промпт ШАГ 3 — оценка варианта:
Оцени этот проект по шкале срочности из предыдущего сообщения:
Проект: Сделать логотип для стартапа, дедлайн через 3 дня, бюджет 15к₽, примерно 5 часов работы.
Начни ответ с числа от 1 до 10 по шкале срочности.
---
[Отдельный запрос]
Оцени этот же проект по шкале прибыльности из предыдущего сообщения.
Начни ответ с числа от 1 до 10 по шкале прибыльности.
Результат: Модель даст две оценки для каждого проекта. Ты получишь, например: срочность = 7, прибыльность = 6. Повторишь для всех 4 проектов. Потом сравнишь: у кого выше сумма или произведение оценок — тот приоритетнее. Оценки будут последовательные — модель каждый раз видит свою же шкалу и применяет одни критерии.
Почему это работает
Слабость LLM: Модель плохо держит в голове неявные критерии. Когда ты пишешь "оцени от 1 до 10", она каждый раз импровизирует: 7 может означать "хорошо" в одном случае и "средне" в другом. Нет якоря. Счётчик в голове у модели нестабилен — она не помнит, что 7 в прошлый раз значило именно "выше среднего, но не отлично".
Сильная сторона LLM: Модель отлично следует явным инструкциям, когда критерии прописаны чётко. Если дать шкалу "8 = высокая оплата при умеренных затратах времени, типичный пример: 20к₽ за 4 часа работы", модель будет консистентно применять этот эталон.
Как IBEaM использует сильную сторону: Просит модель самой сформулировать эталоны для каждого балла. Модель "знает", как она привыкла думать про "срочно" или "выгодно" — её внутренние паттерны отражаются в формулировках шкалы. Потом эта шкала остаётся в контексте → модель видит свои же критерии → применяет их последовательно.
Дополнительный рычаг: Разбивка на компоненты (декомпозиция задачи) — это не уникально для IBEaM, но здесь даёт двойную пользу:
- Задача становится проще (оценить "срочность" легче, чем "насколько хорош проект вообще")
- Каждая шкала = дополнительная порция извлечённых предпочтений модели
Рычаги управления промптом:
- Число баллов в шкале (5, 7, 10) → меньше баллов = быстрее, но грубее; больше = точнее, но дольше
- Детализация описаний → попроси модель привести примеры для каждого балла ("8/10 по срочности — это, например...") → острее критерии
- Число компонентов → меньше = проще, больше = точнее (но не раздувай без нужды, 2-4 обычно хватает)
- Метод агрегации → сумма оценок (простая), произведение (штрафует дисбаланс), среднее (баланс важности)
Шаблон промпта
ШАГ 1: Создание шкалы (делаешь один раз для каждого компонента)
Создай {число}-балльную шкалу для оценки {название_компонента}.
{Максимум} = {описание максимума}, {Минимум} = {описание минимума}.
Опиши каждый балл подробно: что означает 1, что 2, и так далее до {число}.
При желании приведи примеры для каждого балла.
ШАГ 2: Оценка конкретного случая (повторяешь для каждого варианта)
Оцени следующее по шкале {название_компонента} из предыдущего сообщения:
{описание случая}
Начни ответ с числа от {минимум} до {максимум} по этой шкале.
Коротко объясни почему именно такая оценка.
Пояснение к плейсхолдерам:
{число}— 5, 7, 10 (обычно 10){название_компонента}— "срочность задачи", "качество текста", "прогресс к цели"{описание максимума/минимума}— чем 10 отличается от 1{описание случая}— конкретный вариант, который оцениваешь
🚀 Быстрый старт — вставь в чат:
Вот шаблон IBEaM. Адаптируй под мою задачу: [твоя задача оценки/выбора].
Задавай вопросы, чтобы правильно создать шкалы.
[вставить шаблон выше]
LLM спросит на какие компоненты разбить задачу и как описать максимум/минимум для каждого — потому что без этого непонятно что оценивать. Она возьмёт структуру IBEaM и подгонит под твой контекст.
Ограничения
⚠️ Несколько запросов: IBEaM требует создать шкалы (1-2 запроса на компонент) + оценить каждый вариант (1 запрос на компонент × число вариантов). Если вариантов 10 и компонентов 3 — это 30+ запросов. Для разовой задачи на 2-3 варианта — быстро, для постоянной обработки десятков случаев — долго.
⚠️ Не для простых выборов: Если задача "какой цвет лучше: красный или синий" — IBEaM избыточен. Работает когда есть несколько измерений и нужна последовательность оценок.
⚠️ Субъективность шкал: Модель создаёт шкалу на основе своих паттернов, но если у тебя свои специфичные критерии — придётся корректировать. Например, для оценки "креативности текста" твои критерии могут отличаться от того, что модель считает креативным.
⚠️ Не заменяет human judgment в критичных решениях: Для выбора фриланс-проектов — ок. Для юридической экспертизы или медицинских решений — нет.
Как исследовали
Исследователи протестировали IBEaM на трёх типах задач: ранжирование (выбрать лучший следующий шаг в инструкции WikiHow из 5 вариантов), бинарная классификация (подходит ли краткое описание к полной истории в датасете SAGA), тройная классификация (связь между двумя фразами: предусловие, постусловие или никакая).
Для каждой задачи создали baseline — простой промпт "оцени от 1 до 10". Для IBEaM — разбили задачу на компоненты (например, "прогресс к цели" + "выполнимость шага" для WikiHow), попросили модель создать шкалу для каждого, потом оценили варианты по этим шкалам.
Ключевой результат: IBEaM превосходит baseline почти во всех испытаниях. На WikiHow — точность выросла с 48% до 60% для GPT-4o (на 12 п.п.). На классификации — улучшение от 3% до 13% F1-score в зависимости от задачи. Почти во всех испытаниях (48 из 50 проведённых) IBEaM был лучше.
Почему это работает: Проверили что будет, если убрать одну из частей IBEaM:
- Убрали создание шкал (оставили только разбивку на компоненты) → точность упала ниже baseline
- Убрали разбивку на компоненты (оставили только создание одной общей шкалы) → точность нестабильна, разброс между испытаниями вырос втрое
Вывод: Обе части IBEaM важны. Разбивка на компоненты стабилизирует результаты, создание шкал повышает точность. Вместе — синергия: 1+1=3.
Интересная деталь: Когда попросили модель создать шкалу "выполнимости шага", она сама расписала 10 градаций от "невозможно с текущими ресурсами" до "без усилий, гарантированный результат". Эти формулировки отражают внутренние паттерны модели — то, как она "привыкла думать" про выполнимость. Используя эти паттерны в промпте, мы говорим с моделью на её языке.
Оригинал из исследования
Промпт для создания шкалы выполнимости (WikiHow):
Imagine you are in a world where you are working towards some goal and you have
already done some number of steps. Design a 10 point scale that describes how
doable some candidate step is. On this scale, 10 should represent the highest
degree of doability and 1 should represent the lowest degree of doability.
Промпт для оценки конкретного шага:
Imagine you are in a world where your objective is to {goal} and you have done
the following:
- {completed step 1}
- {completed step 2}
...
For the following query, do not assume that the requirements of the following
step are fulfilled unless they are known to be so from the world state, and
start your response with a rating from 1 to 10 on the previous doability scale
that considers the gap between the current world state and the requirements of
the following step: {candidate step}
Контекст: Исследователи тестировали на задаче выбора следующего шага в процессе сборки бумажного пакета. Модель создавала шкалу один раз, потом использовала её для оценки 5 кандидатов: правильный шаг, дубликат уже сделанного, два шага из других инструкций, шаг из будущего (преждевременный).
Адаптации
💡 Адаптация для оценки кандидатов на позицию:
Вместо "прогресс" и "выполнимость" — компоненты: "соответствие hard skills" и "культурная совместимость". Создаёшь две шкалы, оцениваешь резюме по обеим, сравниваешь кандидатов.
ШАГ 1: Создай 10-балльную шкалу для оценки соответствия hard skills кандидата требованиям вакансии Middle Python Developer.
[получаешь шкалу]
ШАГ 2: Оцени этого кандидата по шкале hard skills:
{вставляешь резюме кандидата}
Повторяешь для компонента "культурная совместимость" (ценности компании, стиль работы в команде).
🔧 Техника: попросить примеры для каждого балла → конкретнее критерии
Добавь в промпт создания шкалы:
Создай 10-балльную шкалу для оценки {компонент}.
Для каждого балла приведи конкретный пример того, что попадает под эту оценку.
Эффект: Шкала становится детальнее. Вместо абстрактного "8 = высокая выполнимость" получишь "8 = требует 2 часа работы с доступными инструментами, пример: отформатировать документ в Google Docs". Модель лучше калибрует оценки, когда видит эталоны.
🔧 Техника: изменить число баллов → баланс скорость/точность
5-балльная шкала (быстро, но грубо):
Создай 5-балльную шкалу: 1 = полностью не подходит, 5 = идеально подходит.
15-балльная шкала (медленно, но точно):
Создай 15-балльную шкалу с детальными градациями.
Когда использовать: 5 баллов — если оцениваешь 20+ вариантов и нужна скорость. 10-15 баллов — если вариантов мало (2-5) и нужна максимальная точность.
Ресурсы
Inductive Bias Extraction and Matching for LLM Prompts
Christian M. Angel, Francis Ferraro
University of Maryland, Baltimore County
arXiv:2025 (предполагаемая дата публикации по контексту)
