3,583 papers
arXiv:2512.08646 80 9 дек. 2025 г. FREE

Структура вопросов в промптах: battery экономит токены в 6 раз, но recency bias меняет ответы в 20 раз

КЛЮЧЕВАЯ СУТЬ
Обнаружено: LLM выбирает вариант ответа не по смыслу, а по позиции - последний в списке выбирается в 20 раз чаще первого (Llama-3.1-8B). Причина: модели генерируют текст слева направо, последние токены «свежее» в контексте внимания. Метод QSTN (battery presentation + structured outputs) позволяет задавать множественные вопросы в одном промпте с защитой от bias, экономя токены в 2-6 раз и получая более согласованные с человеческими ответы. Battery загружает все вопросы в один промпт - модель видит полную структуру задачи. Structured outputs (JSON) заставляют следовать формату. Verbalized Distribution («60% уверен в А, 30% в Б») обходит recency bias - вместо выбора одного варианта модель распределяет вероятности. Результат: +8% соответствие человеческим ответам при экономии токенов в 2-6 раз (протестировано на 40+ млн ответов от 10 моделей).
Адаптировать под запрос

TL;DR

Исследователи протестировали три способа задавать множественные вопросы LLM: battery (все вопросы в одном промпте), sequential (по очереди в одной беседе) и single-item (каждый вопрос в новом чате). Проверили на 40+ миллионах ответов от 10 моделей на реальных опросах — политические взгляды, социологические исследования, социальная психология.

Главные находки: recency bias — модели выбирают последний вариант ответа в 20 раз чаще первого (Llama-3.1-8B), даже если смысл одинаковый. Middle category bias — 67-89% моделей чаще выбирают средний вариант в нечётных шкалах (1-5 вместо 1-4). Опечатки, перефразирование, реверс порядка вариантов — всё существенно меняет ответы. Причина: модели генерируют текст слева направо, последние токены "свежее" в контексте. Средний вариант воспринимается как "безопасный" нейтральный ответ.

Battery presentation (все вопросы в одном промпте) даёт на 8% лучшее соответствие человеческим ответам и экономит в 2-6 раз токены по сравнению с sequential/single-item. Для закрытых вопросов лучше работают structured outputs (JSON) и Verbalized Distribution — модель называет вероятность каждого варианта словами: "60% уверен в А, 30% в Б, 10% в В".


📌

Три формата вопросов

BATTERY (батарея): Все вопросы в одном промпте → модель отвечает на всё сразу

SEQUENTIAL (последовательный): Вопрос → ответ → следующий вопрос в том же чате → ответ...

SINGLE-ITEM (отдельный): Каждый вопрос в новом чате, без контекста предыдущих


🚀

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

⚠️ Сначала поймём ограничения: - Не для творческих задач без критериев - Не для простых одиночных вопросов - Эффект проявляется при множественных вопросах с закрытыми вариантами ответа

Сильная зона: оценка чего-либо по нескольким критериям, где нужны структурированные ответы и экономия токенов.


Задача: Ты венчурный инвестор, смотришь российский edtech-стартап. Нужно оценить по 5 критериям: команда, продукт, рынок, юнит-экономика, риски. Вместо 5 отдельных запросов — один промпт с battery presentation.

Промпт:

Ты — венчурный инвестор, смотришь edtech-стартап "Учи.Код" — платформа для обучения детей программированию.

Краткая информация:
- Команда: 2 основателя (ex-Яндекс, ex-VK), опыт в edtech 3 года
- Продукт: онлайн-курсы Python для детей 8-14 лет, геймификация
- Рынок: Россия, рынок детского доп.образования 180 млрд руб/год
- Экономика: средний чек 15 000 руб/курс, CAC 3 000 руб, retention 40%
- Конкуренты: Алгоритмика, Кодланд, Пиксель

Оцени стартап по каждому критерию. Формат ответа — JSON:

{
  "команда": {
    "оценка": "Высокая/Средняя/Низкая",
    "вероятность_успеха": "60%",
    "ключевой_фактор": "краткое пояснение"
  },
  "продукт": {
    "оценка": "Высокая/Средняя/Низкая",
    "вероятность_успеха": "60%",
    "ключевой_фактор": "краткое пояснение"
  },
  "рынок": {...},
  "юнит_экономика": {...},
  "риски": {...}
}

⚠️ Важно: не давай всем критериям одинаковую оценку. Оценивай независимо.

Результат:

Модель выдаст структурированный JSON с оценками по всем пяти критериям в одном ответе. Формат позволяет сразу увидеть полную картину и сравнить критерии. Экономия: вместо 5 запросов по ~500 токенов (2500 токенов) — один запрос ~600-800 токенов.

⚠️ Но учитывай recency bias: Если попросишь выбрать один вариант из списка А/Б/В — модель в 20 раз чаще выберет В. Поэтому в примере выше используется Verbalized Distribution (вероятность в процентах) + JSON для структуры.


🧠

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

Слабость LLM: Модели генерируют текст слева направо, поэтому последние токены "свежее" в контексте внимания. При выборе варианта А/Б/В модель видит В последним и придаёт ему больший вес. Это называется recency bias — не ошибка, а архитектурная особенность трансформеров. При нечётных шкалах (1-5) модели воспринимают средний вариант как "безопасный нейтральный" и чаще выбирают его.

Сильная сторона LLM: Модели хорошо держат контекст и могут обработать несколько связанных задач в одном промпте (multitask in battery). Это экономит токены на повторяющихся инструкциях и позволяет модели видеть полную картину, а не отвечать на вопросы изолированно.

Как метод использует сильную сторону: Battery presentation загружает все вопросы сразу — модель видит полную структуру задачи и может учитывать связи между вопросами. Structured outputs (JSON) заставляют модель следовать формату, а не генерировать свободный текст. Verbalized Distribution ("60% уверен") обходит recency bias — вместо выбора одного варианта модель распределяет вероятности словами, что снижает влияние позиции варианта.

Рычаги управления:

  • Формат вопросов — battery для экономии токенов, single-item если нужна изоляция вопросов
  • Порядок вариантов — для проверки robustness задай вопрос дважды с reverse порядком (А-Б-В → В-Б-А), если ответы разные — есть recency bias
  • Structured output — JSON для структуры, но можно без него если нужно видеть рассуждения
  • Нечётность шкалы — избегай шкал 1-5 если не хочешь bias к среднему, используй 1-4 или 1-6

📋

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

{роль_и_контекст}

{описание_объекта_или_ситуации}

Оцени по следующим критериям:

1. {критерий_1}: {описание}
2. {критерий_2}: {описание}
3. {критерий_3}: {описание}

Формат ответа — JSON:

{
  "{критерий_1}": {
    "оценка": "{варианты через /}",
    "уверенность": "{процент}",
    "обоснование": "{краткое пояснение}"
  },
  "{критерий_2}": {...},
  "{критерий_3}": {...}
}

⚠️ Важно: оценивай каждый критерий независимо, не давай всем одинаковую оценку.

Плейсхолдеры: - {роль_и_контекст} — кто ты и зачем оцениваешь (инвестор/рекрутер/эксперт) - {описание_объекта_или_ситуации} — что оцениваем (стартап/кандидат/продукт) - {критерий_N} — по каким параметрам оценивать (команда/опыт/качество) - {варианты через /} — варианты ответа (Высокая/Средняя/Низкая или 1-4) - {процент} — степень уверенности (Verbalized Distribution)

Почему "оценивай независимо"? Модели склонны к consistency bias — давать похожие оценки всем критериям. Явная инструкция снижает этот эффект.


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

Вот шаблон для battery presentation с защитой от bias. 
Адаптируй под мою задачу: [твоя задача — что и по каким критериям оценить]. 

Задавай вопросы, чтобы заполнить поля.

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

LLM спросит что оценивать, какие критерии важны, какие варианты ответа нужны — потому что структура JSON и Verbalized Distribution требуют чёткого формата. Она возьмёт паттерн из шаблона и адаптирует под задачу.


📌

Адаптации

📌

🔧 Техника: Проверка на recency bias → видишь robustness

Если подозреваешь что модель выбирает не по смыслу, а по позиции варианта:

[задай тот же вопрос дважды с обратным порядком вариантов]

Вопрос 1: Насколько важен этот фактор?
А) Очень важен
Б) Средне важен  
В) Не важен

Вопрос 2: Насколько важен этот фактор?
А) Не важен
Б) Средне важен
В) Очень важен

Если ответы разные (в первом случае В, во втором тоже В) — это recency bias.
📌

🔧 Техника: Убрать JSON → видеть рассуждения

Если хочешь понять ПОЧЕМУ модель так оценила, убери JSON и попроси свободный текст с распределением вероятностей:

Оцени по критериям и для каждого укажи:
- На сколько процентов уверен в каждой оценке
- Какой ключевой фактор повлиял на решение
- Какие данные нужны для более точной оценки

Пиши свободным текстом, но структурируй по критериям.
📌

🔧 Техника: Чётная шкала вместо нечётной → убирает middle category bias

Если модель слишком часто выбирает "средний" вариант:

❌ Шкала 1-5 (есть средний вариант 3)
✅ Шкала 1-4 или 1-6 (нет чёткого среднего)

Модель вынуждена выбирать — либо позитив (3-4), либо негатив (1-2).

⚠️

Ограничения

⚠️ Не для творческих задач: Battery presentation снижает разнообразие ответов на креативных задачах. Если нужно сгенерировать 5 разных идей для контента — лучше 5 отдельных запросов (single-item), иначе идеи будут похожи друг на друга.

⚠️ Recency bias сильнее на маленьких моделях: На Llama-3.1-8B эффект 20x, на Llama-3.3-70B и Gemini-1.5-Pro — слабее, но всё равно есть. Чем меньше модель, тем сильнее bias.

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

⚠️ Structured outputs могут ломаться: Если модель не обучена на structured outputs (JSON), она может выдать невалидный JSON. Проверено работает на: GPT-4, Claude, Gemini, Qwen, Llama 3+. На старых/маленьких моделях может требовать несколько попыток.


🔍

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

Команда из University of Mannheim и GESIS взяла четыре реальных социологических опроса — American National Election Study (ANES), German Longitudinal Election Study (GLES), American Trends Panel (ATP) — всего 16 вопросов про политические взгляды и социальные установки. Создали 7530 синтетических персон с демографическими характеристиками (пол, раса, возраст, регион) из реальных респондентов. Для каждой персоны запустили 10 моделей (Llama, Qwen, Gemma, Phi, Gemini) с 3 разными seed'ами и 4 вариациями промпта (порядок вопросов, порядок вариантов ответа). Итого: 40+ миллионов ответов.

Сравнивали с реальными человеческими ответами по двум метрикам: Mean Absolute Error (насколько отличается каждый конкретный ответ) и Wasserstein distance (насколько распределение ответов синтетической подгруппы отличается от реальной подгруппы людей с такими же характеристиками).

Что удивило: Battery presentation экономит в 2-6 раз токены (sequential: 8216 input tokens, battery: 723 tokens для одной персоны) и при этом даёт на 8% лучшее соответствие человеческим ответам для больших моделей. Для маленьких моделей (<8B параметров) лучше работает sequential или single-item — видимо, им сложнее держать много вопросов одновременно в контексте.

Recency bias 20x у Llama-3.1-8B был самым ярким результатом: вариант "Not important" выбирали в 5% случаев когда он был первым (А), и в >100% случаев когда он был последним (E) — то есть практически всегда. Для больших моделей эффект слабее (2-3x), но всё равно значим.

Практический инсайт: Если делаешь аннотацию данных или опросы с LLM — используй battery для экономии денег, но обязательно проверяй на recency bias через reverse порядка вариантов. И лучше используй Verbalized Distribution или чётные шкалы, чтобы снизить влияние bias'ов.


🔗

Ресурсы

QSTN: A Modular Framework for Robust Questionnaire Inference with Large Language Models — Maximilian Kreutner, Jens Rupprecht, Georg Ahnert, Ahmed Salem, Markus Strohmaier (University of Mannheim, GESIS - Leibniz Institute for the Social Sciences, CSH Vienna)

Live GUI — интерфейс без кода (для исследователей)

Видео-презентация


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

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

Обнаружено: LLM выбирает вариант ответа не по смыслу, а по позиции - последний в списке выбирается в 20 раз чаще первого (Llama-3.1-8B). Причина: модели генерируют текст слева направо, последние токены «свежее» в контексте внимания. Метод QSTN (battery presentation + structured outputs) позволяет задавать множественные вопросы в одном промпте с защитой от bias, экономя токены в 2-6 раз и получая более согласованные с человеческими ответы. Battery загружает все вопросы в один промпт - модель видит полную структуру задачи. Structured outputs (JSON) заставляют следовать формату. Verbalized Distribution («60% уверен в А, 30% в Б») обходит recency bias - вместо выбора одного варианта модель распределяет вероятности. Результат: +8% соответствие человеческим ответам при экономии токенов в 2-6 раз (протестировано на 40+ млн ответов от 10 моделей).

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

Не задавай 5 вопросов по очереди - загрузи все в один промпт с JSON-форматом. Модель держит контекст всех вопросов и видит связи между критериями. Экономия на повторяющихся инструкциях. Но есть ловушка: при выборе А/Б/В модель выбирает В в 20 раз чаще А (recency bias). Решение: Verbalized Distribution - вместо «выбери один» просишь «укажи вероятность каждого в процентах». Модель не выбирает, а распределяет - это обходит bias позиции. Бонус: чётная шкала (1-4 или 1-6) вместо нечётной (1-5) убирает middle category bias - когда модель в 67-89% случаев выбирает средний вариант как «безопасный нейтральный».

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

Причина recency bias: модели генерируют текст слева направо, последние токены «свежее» в контексте внимания. При выборе А/Б/В модель видит В последним и придаёт ему больший вес. Это не баг, а архитектурная особенность трансформеров - последний токен имеет приоритет в механизме внимания. Battery presentation даёт +8% соответствие человеческим ответам на задачах оценки (политические взгляды, социологические опросы, психологические шкалы). Экономия токенов: sequential (вопросы по очереди в одном чате) тратит в 2-3 раза больше на повторяющийся контекст, single-item (каждый вопрос в новом чате) - в 4-6 раз больше на инструкции. Structured outputs работают как рельсы для модели. JSON-формат не даёт модели уйти в свободную генерацию текста - она вынуждена следовать структуре. Это снижает вариативность и повышает согласованность ответов.

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

Оценка по множественным критериям → для стартапов (команда/продукт/рынок/экономика/риски), кандидатов (опыт/навыки/культура/мотивация), продуктов (качество/цена/UX/поддержка), контента (релевантность/тон/структура/грамматика), особенно когда нужна структура (JSON/таблица) и экономия токенов. НЕ подходит для творческих задач без критериев - battery снижает разнообразие ответов. Для генерации 5 разных идей для контента лучше 5 отдельных запросов (single-item), иначе идеи будут похожи друг на друга.

Мини-рецепт

1. Загрузи все вопросы в один промпт (battery presentation): вместо 5 запросов по 500 токенов - один на 600-800 токенов. Пример: "Оцени стартап по критериям: команда, продукт, рынок, экономика, риски"
2. Задай структуру ответа в JSON: каждый критерий = объект с полями <критерий>"оценка": "Высокая/Средняя/Низкая", "уверенность": "60%", "обоснование": "..."
3. Используй Verbalized Distribution вместо выбора: не "выбери А/Б/В", а "укажи вероятность каждого варианта в процентах" или "на сколько процентов уверен в каждой оценке"
4. Добавь инструкцию против consistency bias: "⚠️ Важно: оценивай каждый критерий независимо, не давай всем одинаковую оценку" (модели склонны давать похожие оценки всем критериям)
5. Проверь на recency bias: задай вопрос дважды с обратным порядком вариантов (А-Б-В → В-Б-А). Если ответы разные (в обоих случаях выбран последний) - есть bias, используй Verbalized Distribution

Примеры

[ПЛОХО] : Задаёшь 5 отдельных вопросов: Оцени команду edtech-стартапа, Оцени продукт, Оцени рынок, Оцени экономику, Оцени риски. Каждый запрос ~500 токенов = 2500 токенов. Модель не видит связи между критериями, может дать несогласованные оценки (команда сильная, но рынок слабый, но при этом высокий потенциал - логика не бьётся).
[ХОРОШО] : Ты венчурный инвестор, смотришь edtech-стартап "Учи.Код" (онлайн-курсы Python для детей 8-14 лет). Команда: 2 основателя ex-Яндекс/VK, опыт edtech 3 года. Экономика: чек 15к руб, привлечение клиента 3к руб, удержание 40%. Конкуренты: Алгоритмика, Кодланд. Оцени по критериям. Формат - JSON: {"команда": {"оценка": "Высокая/Средняя/Низкая", "уверенность": "60%", "ключевой_фактор": "..."}, "продукт": {...}, "рынок": {...}, "юнит_экономика": {...}, "риски": {...}}. ⚠️ Важно: оценивай независимо, не давай всем одинаковую оценку. Один запрос ~700 токенов, модель видит полную картину и связи между критериями.
Источник: QSTN: A Modular Framework for Robust Questionnaire Inference with Large Language Models
ArXiv ID: 2512.08646 | Сгенерировано: 2026-01-10 00:13

Проблемы LLM

ПроблемаСутьКак обойти
Модель выбирает по позиции а не по смыслуЗадаёшь вопрос с вариантами ответа: А) вариант1 Б) вариант2 В) вариант3. Модель выбирает В в 20 раз чаще чем А. Причина: трансформеры генерируют текст слева направо, последние токены "свежее" в контексте внимания. Проблема для любых закрытых вопросов — опросы, оценки по критериям, выбор из спискаСпособ 1: попроси распределить вероятность между вариантами ("60% за А, 30% за Б, 10% за В") вместо выбора одного. Способ 2: задай вопрос дважды с обратным порядком вариантов (А-Б-В и В-Б-А), если ответы разные — bias подтверждён, усредни результаты
Модель выбирает средний вариант на шкалах 1-3-5Даёшь шкалу с нечётным числом вариантов: 1-2-3-4-5 или "плохо-средне-хорошо". Модель в 67-89% случаев выбирает средний вариант (3 или "средне"). Воспринимает его как безопасный нейтральный ответ. Проблема когда нужна дифференциация — оценка качества, измерение мнений, приоритизацияИспользуй шкалы с чётным числом вариантов: 1-2-3-4 или 1-2-3-4-5-6. Модель вынуждена склониться либо к позитиву (3-4) либо к негативу (1-2). Нет "безопасной середины"

Методы

МетодСуть
Вероятности словами вместо выбора вариантаВместо "выбери А, Б или В" попроси модель назвать уверенность в процентах для каждого варианта: "60% уверен в А, 30% в Б, 10% в В". Почему работает: Когда модель выбирает один вариант из списка, последний вариант получает преимущество (recency bias). Когда называет проценты — генерирует число для каждого варианта независимо, позиция не влияет. Когда применять: закрытые вопросы с 2-5 вариантами ответа, нужна оценка уверенности, важна точность. Когда не работает: открытые вопросы без заданных вариантов, творческие задачи, модель не умеет работать с процентами (старые/маленькие модели). Формат: "Оцени уверенность в процентах для каждого варианта: А — _%, Б — _%, В — _%"
📖 Простыми словами

Структура вопросов в промптах: battery экономит токены в 6 раз, но recency bias меняет ответы в 20 раз

arXiv: 2512.08646

Суть в том, что когда ты закидываешь в нейронку пачку вопросов, она начинает тупить не из-за нехватки знаний, а из-за своей архитектуры. LLM читает текст слева направо, и то, что она увидела последним, кажется ей самым важным. Это recency bias: если в тесте есть варианты А, Б и В, модель с большой вероятностью ткнет в В просто потому, что этот токен «свежее» в её памяти. В итоге ты получаешь не честное мнение ИИ, а статистический мусор, продиктованный порядком слов в промпте.

Это как если бы ты пришел на допрос, и следователь зачитывал бы тебе список из двадцати обвинений без остановки. К середине ты бы уже поплыл, а на последнем вопросе просто кивнул бы, чтобы это закончилось. Формально ты ответил на всё, но по факту твои ответы — это каша, где последние слова следователя перевесили всё остальное. Исследователи прогнали 40 миллионов ответов и поняли: валить всё в одну кучу — это верный способ убить логику модели.

Чтобы не получать фигню на выходе, протестировали три подхода. Метод battery — это когда ты пихаешь все вопросы в один промпт, и это работает хуже всего. Sequential — когда задаешь вопросы по очереди в одном чате, но тут модель начинает «подстраиваться» под свои предыдущие ответы, чтобы казаться последовательной. Самый чистый, но дорогой вариант — single-item, где каждый вопрос идет в абсолютно новом чате. Так мы убираем влияние контекста и заставляем модель думать над конкретной задачей, а не пытаться угадать паттерн.

Этот принцип модульного опроса жизненно важен не только для социологов. Он применим везде, где нужно вытащить из AI объективную оценку: от классификации товаров до анализа юридических документов. Если ты просишь модель оценить статью по десяти критериям в одном сообщении, она обязательно налажает на первых пунктах или перепутает приоритеты. Разделение вопросов на независимые блоки — это единственный способ заставить трансформер работать как аналитика, а не как услужливого попугая.

Короче, завязывай кормить нейронку «простынями» из вопросов, если тебе важен результат, а не просто заполненные поля. Эффект первичности и новизны ломает объективность даже у самых мощных моделей вроде GPT-4 или Gemini. Хочешь адекватных данных — используй изолированные запросы или хотя бы перемешивай варианты ответов. Иначе ты просто измеряешь не мнение модели, а то, насколько сильно она устала от твоего контекста.

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

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

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