TL;DR
Когда просишь LLM определить позицию автора по тексту — что добавить в промпт имеет большое значение. Исследователи систематически проверили пять типов контекста: описание темы, биографию пользователя, его прошлые посты, имя аккаунта, и «живой контекст» вокруг конкретного текста. Оказалось, что большинство контекста либо не помогает, либо прямо вредит точности.
Главный инсайт: LLM плохо отделяет полезную информацию от шума в промпте. Если добавить слишком много контекста — модель «отвлекается» и начинает видеть чужое мнение там, где его нет. Особенно опасно добавлять заранее интерпретированный контекст — например, просить LLM «объяснить, о чём этот текст», а потом использовать это объяснение. Первая LLM незаметно вкладывает свою оценку, вторая её подхватывает.
Из всего проверенного стабильно работает одно — краткое нейтральное описание темы, о которой идёт речь. Не биография автора, не его прошлые посты, не «живой контекст» — а просто справка: кто такой Фаучи, что такое маски, в чём суть законопроекта. Этот контекст добавляют в промпт и он помогает. Остальное — убирать.
Схема метода
ШАГ 1 (один раз на тему):
Попроси LLM: "Дай краткое нейтральное описание темы [X]"
→ Получаешь 2-4 предложения без оценок и позиций
ШАГ 2 (для каждого текста):
Промпт = [инструкция] + [описание темы из шага 1] + [анализируемый текст]
→ LLM определяет позицию: за / против / нейтрально
⚠️ НЕ добавляй в промпт:
- Прошлые посты или высказывания автора
- Интерпретацию самого текста ("этот пост о том, что...")
- Само описание напиши нейтрально — без оценочных слов
Оба шага выполняются в обычном чате, отдельными запросами.
Пример применения
Задача: HR-директор российской компании анализирует анонимные отзывы сотрудников о переходе на четырёхдневную рабочую неделю. Много коротких, амбигуозных сообщений — непонятно, человек «за» или просто констатирует факт.
Промпт (Шаг 1 — описание темы):
Дай краткое нейтральное описание темы: четырёхдневная рабочая неделя.
Только факты — без оценок, без позиций, без слов "хорошо" или "плохо".
2-3 предложения.
Промпт (Шаг 2 — анализ отзыва):
Ты определяешь позицию автора по тексту.
Тема: Четырёхдневная рабочая неделя — модель организации труда, при которой
сотрудники работают четыре дня вместо пяти при сохранении полной занятости.
Обсуждается как способ повысить продуктивность и баланс между работой и жизнью,
хотя реализация отличается в разных компаниях.
Текст: "Ну посмотрим. Пятница свободна, но план тот же. Успеем — хорошо."
Какова позиция автора?
Варианты: за / против / нейтрально
Ответь одним словом.
Результат: Модель выдаст одно слово — позицию автора. Описание темы помогает ей правильно «заземлить» короткий, амбигуозный текст: понять, о чём речь и о чём автор молчит. Без описания темы модель может неправильно интерпретировать фразу «план тот же» как «против» — ведь контекста нет.
Почему это работает
LLM плохо работает с неявными отсылками. Короткие тексты — твиты, отзывы, комментарии — часто не называют тему прямо. Автор пишет «маски — это несвобода» и не объясняет, что такое маски и почему вообще о них спорят. Модель пытается угадать контекст из сокращённого текста и ошибается.
Нейтральное описание темы даёт модели «якорь». Это не интерпретация — это справка. Модель получает общую картину и перестаёт додумывать. Она уже знает «кто такой Фаучи» или «что такое четырёхдневка» — и может сосредоточиться на позиции автора, а не на расшифровке самой темы.
Интерпретированный контекст — опасен. Если попросить LLM сначала «объяснить контекст твита», а потом использовать это объяснение в следующем промпте — первая модель незаметно вложит свою оценку. Она напишет что-то вроде «автор критикует ограничительные меры». Это уже не нейтральный факт, а позиция. Вторая модель её считает и подтвердит — даже если исходный текст был нейтральным.
Рычаги управления: - Тон описания темы → чем нейтральнее, тем лучше. Если описание содержит слова «опасный», «полезный», «спорный» — убери их - Длина описания → 2-4 предложения достаточно. Длиннее — начинает отвлекать - История автора → не добавляй. Даже если кажется, что это поможет — по данным исследования, чаще вредит
Шаблон промпта
### Шаг 1. Получить описание темы
Дай краткое нейтральное описание темы: {тема}.
Только факты — без оценок и позиций.
2-3 предложения.
---
### Шаг 2. Анализ позиции
Ты определяешь позицию автора по тексту.
Тема: {вставь описание из шага 1}
Текст: {анализируемый текст}
Какова позиция автора?
Варианты: {за} / {против} / {нейтрально}
Ответь одним словом.
Что подставлять:
- {тема} → то, о чём потенциально пишет автор: "повышение ставки ЦБ", "новая политика возврата", "Илон Маск"
- {анализируемый текст} → конкретный текст — отзыв, комментарий, твит
- {за} / {против} / {нейтрально} → можешь заменить на свои метки: "поддерживает / критикует / не ясно"
🚀 Быстрый старт — вставь в чат:
Вот шаблон двухшагового промпта для анализа позиции автора.
Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит про тему анализа и формат меток — потому что без этого она не знает, какое описание генерировать и что считать «за» и «против» в твоём конкретном кейсе.
Ограничения
⚠️ Работает хуже для субъективных, нейтральных позиций: Модель с добавленным контекстом чаще ошибается именно на нейтральных текстах — склонна приписывать автору мнение там, где его нет.
⚠️ Описание темы должно быть нейтральным: Если в описание просочится оценочное слово — эффект переворачивается: контекст начинает тянуть ответ в свою сторону.
⚠️ Метод не для сложного многоуровневого текста: Чем больше в тексте иронии, сарказма, культурных отсылок — тем меньше помогает даже хорошее описание темы. Краткий нейтральный контекст не справляется с тонкими коннотациями.
⚠️ Few-shot примеры ослабляют эффект: Когда в промпте уже есть примеры с ответами (few-shot), добавление описания темы даёт меньший прирост. В режиме без примеров (zero-shot) — эффект сильнее.
Как исследовали
Команда взяла четыре датасета с твитами — на английском и немецком, про ковид, политику, финансы — и систематически проверяла: что происходит с точностью определения позиции, когда в промпт добавляется разный контекст. Базовый промпт — просто твит и тема. Потом к нему по очереди добавляли: имя аккаунта, биографию, историю постов, описание темы, и «живой контекст» (LLM-интерпретацию самого твита). Каждый из пяти типов контекста тестировали отдельно и вместе, на четырёх разных LLM.
Неожиданный результат: «Живой контекст» — самый информативный на первый взгляд — оказался самым вредным. Он стабильно снижал точность на всех датасетах и моделях. Причина вскрылась при анализе: когда LLM генерирует объяснение твита, она почти всегда вкладывает в него оценочные слова. Следующая LLM их считывает и использует как сигнал — даже если исходный твит был нейтральным.
История постов автора помогала только в одном из четырёх датасетов. Исследователи ожидали обратного — в обучаемых моделях история постов традиционно улучшает результат. Но здесь эффект оказался противоположным: добавление десяти похожих твитов «перегружало» промпт, и модель начинала видеть определённую позицию там, где автор просто констатировал факт. Более 90% ошибок после добавления истории — это ложное приписывание мнения нейтральным текстам.
Адаптации и экстраполяции
🔧 Принцип «нейтрального якоря» за пределами позиций
Тот же эффект работает шире, чем анализ позиций. Всякий раз, когда ты просишь LLM классифицировать или оценить чужой текст — добавляй краткую нейтральную справку о теме, а не интерпретацию самого текста.
Разбор питча стартапа: сначала попроси LLM дать нейтральное описание рынка/отрасли (2-3 факта). Потом дай этот контекст + питч + вопрос "какова гипотеза основателя о проблеме?"
Разбор клиентского отзыва: сначала нейтральное описание продукта. Потом анализ тональности.
🔧 Эффект «отравленного контекста» как диагностика
Обнаруженный механизм — «LLM-интерпретация заражает следующий шаг» — полезно знать как диагностический инструмент. Если в многошаговом промпте один шаг генерирует объяснение, а следующий его использует — проверь: нет ли в объяснении оценочных слов, которые тянут ответ в нужную тебе сторону? Иногда это ошибка, иногда — намеренный рычаг.
Ресурсы
Название работы: Contextualized Prompting for Stance Detection on Social Media
Авторы: Tilman Beck (University of Zurich / University Hospital Zurich), Shakib Yazdani (University of Göttingen), Simon Kruschinski (GESIS Leibniz Institute for the Social Sciences), Marcus Maurer (Johannes Gutenberg-University Mainz), Iryna Gurevych (TU Darmstadt — UKP Lab)
Код и данные: github.com/tilmanbeck/stance-context-twitter
Отсылки из исследования: Датасеты SemEval-2016 Task 6 (Mohammad et al., 2016), covid19-glandt (Glandt et al., 2021), wtwt (Conforti et al., 2020). Цитируется цепочка рассуждений (Chain-of-Thought, Wei et al., 2022), LLM-as-a-Judge (Zheng et al., 2023).
