Когда просишь LLM оценить что-то по шкале — риск клиента от 1 до 5, качество текста, тональность отзыва — модель почти всегда говорит "уверен на 90-95%", даже если ошибается. Это не потому что модель врёт, а потому что её просят сразу назвать финальный балл и оценить его же уверенность — она защищает своё первое решение вместо того, чтобы честно взвесить альтернативы.
Причина проста: когда модель видит только один вариант ответа, у неё нет с чем его сравнить. Она не думает "а насколько вероятны соседние баллы?" — она просто укрепляется в первой мысли. Из-за этого разброс уверенности почти не отражает реальную точность: модель одинаково "уверена" и когда права, и когда ошибается.
Calibrated Reflection решает это в три шага: заставляет модель оценить вероятность каждого возможного балла на шкале (не только выбранного), потом для каждого балла пройти цикл "оценка → самокритика → финальная оценка", а в конце — пересчитать итоговую уверенность с учётом того, что ошибка на соседнем балле не так страшна, как ошибка через всю шкалу.
Схема метода
ШАГ 1 (MCS — Maximum Confidence Selection):
Для КАЖДОГО балла шкалы модель оценивает вероятность "это правильный балл" → таблица вероятностей по всем меткам
ШАГ 2 (Reflection, встроен в шаг 1 для каждого балла):
Первичная оценка → самокритика/рефлексия → финальная оценка → число вероятности
ШАГ 3 (Distance-aware calibration):
Выбирается балл с максимальной вероятностью → пересчитывается итоговая уверенность:
близкие баллы усиливают уверенность, далёкие — ослабляют (вес = 1/(1+расстояние))
Все три шага — в ОДНОМ промпте, один вызов модели.
Пример применения
Задача: Модератор Wildberries/Ozon использует ChatGPT для предварительной оценки отзывов покупателей по шкале "полезность отзыва" от 1 до 5 (1 — бесполезен/спам, 5 — максимально полезен для других покупателей). Нужно понимать, каким оценкам можно доверять автоматически, а какие передавать живому модератору.
Промпт:
Ты — эксперт по оценке качества отзывов покупателей.
Шкала полезности отзыва:
1 — бесполезен (спам, без деталей, эмоции без фактов)
2 — слабо полезен (мало конкретики)
3 — средне полезен (есть детали, но однобоко)
4 — полезен (конкретные факты, плюсы и минусы)
5 — максимально полезен (детально, объективно, помогает решить купить или нет)
Вот отзыв:
«Кроссовки пришли быстро, размер в размер, но подошва после недели носки начала отклеиваться. За свою цену — так себе, для дома норм, для активного использования не советую.»
Для КАЖДОГО балла от 1 до 5 сделай:
1. Первичная оценка: почему этот балл может быть правильным? Короткое рассуждение.
2. Рефлексия: перепроверь себя — не переоцениваешь или недооцениваешь этот балл?
3. Финальная оценка после рефлексии.
4. Вероятность (0–1): насколько вероятно, что именно этот балл правильный.
Выведи таблицу: | Балл | Вероятность |
Затем:
5. Выбери балл с максимальной вероятностью — финальный ответ.
6. Посчитай калиброванную уверенность: для каждого балла i вычисли вес W(i) = 1 / (1 + |i - финальный_балл|), затем калиброванная уверенность = сумма(вероятность_i × W(i)) / сумма(вероятность_i).
Покажи финальный балл и калиброванную уверенность в процентах.
Результат: Модель выдаст таблицу из 5 строк — по строке на каждый балл шкалы, с коротким рассуждением до и после самокритики и вероятностью для каждого. Дальше — выбранный балл и итоговый процент уверенности, который учитывает, что вероятностная масса была сосредоточена на соседних баллах (4 и 5), а не размазана по всей шкале. Если вероятности "размазаны" от 1 до 5 — итоговая уверенность автоматически упадёт, сигнализируя "нужна проверка человеком".
Почему это работает
LLM плохо оценивает свою уверенность "в лоб" — она не сравнивает варианты, а просто защищает первую пришедшую в голову мысль. Отсюда типичная переоценка: "уверен на 95%", даже когда балл спорный.
Зато LLM хорошо умеет рассуждать структурированно, если её заставить пройти по пунктам явно. Когда модель вынуждена оценить каждый вариант шкалы отдельно — она невольно сравнивает их друг с другом, а не просто утверждает первую догадку.
Рефлексия (самокритика после первой оценки) добавляет второй проход — модель ищет контраргументы своему первому мнению, что снижает переуверенность. А финальный пересчёт с весами по расстоянию — это простой счётчик "средняя ошибка не должна пугать так же, как большая": если модель почти поровну колеблется между 4 и 5 — это нормально и не должно резко снижать доверие к ответу, а если колеблется между 1 и 5 — должно.
Рычаги управления: - Число меток шкалы → чем больше баллов (например 1-10), тем длиннее и дороже промпт — для длинных шкал урезай до ключевых точек шкалы. - Формулу веса 1/(1+расстояние) можно заменить на другую (например, квадрат расстояния), если хочешь сильнее штрафовать дальние ошибки. - Шаг рефлексии можно убрать для простых/неважных оценок — сэкономишь токены, но потеряешь часть точности калибровки.
Шаблон промпта
Ты — эксперт по оценке {объект оценки}.
Шкала: {описание шкалы с расшифровкой каждого балла от {мин} до {макс}}
Материал для оценки:
{текст/контент}
Для КАЖДОГО балла шкалы сделай:
1. Первичная оценка: почему этот балл может быть правильным?
2. Рефлексия: перепроверь рассуждение — нет ли переоценки или недооценки?
3. Финальная оценка после рефлексии.
4. Вероятность (0–1) что этот балл правильный.
Выведи таблицу: | Балл | Вероятность |
Затем:
5. Выбери балл с максимальной вероятностью.
6. Посчитай калиброванную уверенность: для каждого балла i вычисли вес W(i) = 1 / (1 + |i - финальный_балл|), калиброванная уверенность = сумма(вероятность_i × W(i)) / сумма(вероятность_i).
Выведи финальный балл и калиброванную уверенность в процентах.
Подставь: {объект оценки} — что оцениваешь (резюме, отзыв, идея), {описание шкалы} — расшифровка каждого балла, {текст/контент} — сам материал.
🚀 Быстрый старт — вставь в чат:
Вот шаблон метода калиброванной оценки уверенности. Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит про шкалу оценки (сколько баллов, что означает каждый) и про сам материал для оценки — без этого не построить таблицу вероятностей и не посчитать веса.
Ограничения
⚠️ Только для порядковых шкал: метод работает, если у баллов есть естественный порядок (1-5, "низкий-средний-высокий риск"). Для категорий без порядка (кот/собака/машина) весовая формула по расстоянию не имеет смысла.
⚠️ Дорого для длинных шкал: если шкала на 20-100 пунктов, придётся гонять модель по каждому баллу — промпт станет огромным и медленным. Метод удобен для шкал из 3-7 пунктов.
⚠️ Улучшает не ответ, а уверенность в ответе: метод не делает саму оценку точнее — он честнее показывает, насколько ей можно доверять. Если модель системно ошибается в самой логике оценки — калибровка это не исправит.
Ресурсы
A Calibrated Reflection Approach for Enhancing Confidence Estimation in LLMs — Umesh Bodhwani, Yuan Ling, Shujing Dong, Yarong Feng, Hongfei Li, Ayush Goyal (Amazon.com, Seattle). Датасеты: HelpSteer2, Llama T-REx, проприетарный conversational dataset. Модели: Claude-3-Haiku, Mistral-7B-instruct.
