TL;DR
SAGER — исследование о том, что у AI-рекомендаций есть два слоя персонализации: что знать о пользователе и как думать за него. Большинство систем обновляет только первый слой — копит факты о предпочтениях. SAGER доказывает, что второй слой столь же важен: у каждого пользователя должен быть свой «документ принципов принятия решений», который тоже эволюционирует.
Главная находка — парадокс инъекции: когда вы даёте модели больше контекста о себе, качество ответов сначала растёт, потом резко падает. Оптимальная длина профиля — около 30 токенов (~20–25 слов). Вы просите "запомни всё о моих вкусах" и пишете 300 слов — а модель начинает хуже работать, потому что внимание распыляется на общие слова и теряет фокус на вашем запросе.
Второй ключевой инсайт: modели лучше ранжируют, чем оценивают. Попросить "расставь по порядку" точнее, чем "поставь оценку каждому". При оценке модель сжимает всё в узкий диапазон и теряет различия. При ранжировании — вынуждена делать чёткие различия между вариантами.
Схема метода
ШАГ 1: ПРОФИЛЬ (полный)
Храни: Core Preferences + Behavioral Patterns + Ranking Criteria
Формат: структурированный документ ~1500 символов
ШАГ 2: ИНЪЕКЦИЯ (сжатая) — в одном промпте с запросом
Извлекай из полного профиля: "likes: [тема1, тема2] | style: [паттерн]"
Лимит: ~30 токенов / 20–25 слов
ШАГ 3: ЗАПРОС — ранжирование, не оценка
Не: "оцени каждый вариант от 1 до 10"
А: "расставь по убыванию предпочтительности, учитывая мой профиль"
ШАГ 4: ОБНОВЛЕНИЕ — после получения результата
REINFORCE: что из профиля подтвердилось? → повысить уверенность
DISCOVER: что новое проявилось? → добавить с низкой уверенностью
WEAKEN: что противоречит профилю? → понизить, не удалять
Формат: structured diff, не переписывать с нуля
Шаги 1–3 выполняются в одном промпте. Шаг 4 — отдельный запрос после получения результата.
Пример применения
Задача: Паша ведёт Telegram-канал о технологиях, регулярно просит ChatGPT помочь выбрать темы для постов из длинного списка идей. Раньше кидал весь список и просил оценить — получал невнятное "все хорошие". Теперь хочет сделать так, чтобы модель знала его редполитику и выбирала точнее.
Промпт:
Мой профиль редактора: likes: практические разборы, кейсы малого бизнеса, российские стартапы | style: скептик, избегает хайпа
Вот 8 идей для постов на следующую неделю:
1. Разбор как Wildberries изменил алгоритм выдачи
2. Что такое квантовые компьютеры — просто о сложном
3. Кейс: как магазин на Авито вырос x5 за 3 месяца
4. Почему AGI наступит уже через год (мнение Альтмана)
5. Как небольшая пекарня автоматизировала заказы через бот
6. Топ-10 AI-инструментов 2025
7. Подкаст Илона Маска: главные цитаты
8. Разбор провала одного российского edtech-стартапа
Расставь все 8 по убыванию — от самой подходящей для моего канала к наименее подходящей.
Поясни топ-3 выбора одной фразой каждый.
Результат: Модель выдаст строгий список от 1 до 8 — без размытых оценок. Топ-3 получат краткое обоснование, почему они попали вверх относительно профиля. Идеи с хайпом (AGI, цитаты Маска) окажутся внизу. Кейсы малого бизнеса и разборы — вверху. После выбора темы — можно отдельным запросом обновить профиль через REINFORCE/DISCOVER/WEAKEN.
Почему это работает
Слабость LLM при оценке. Попросишь поставить оценку 1–10 десяти вариантам — модель поставит всем 7–8. Это не лень, это механика: каждый вариант оценивается в изоляции, без сравнения с другими. В итоге всё сливается в один диапазон и различия теряются.
Сила LLM в сравнении. Модели легче ответить "что из этих двух лучше", чем "насколько хорошо вот это". Ранжирование заставляет делать чёткий выбор — и это то, что модель умеет хорошо. Именно поэтому замена "оцени" на "расставь по порядку" сразу даёт более острые результаты.
Парадокс инъекции — главный практический вывод. Чем длиннее ваш "профиль" в промпте, тем больше токенов модель тратит на переработку общих слов — и меньше "внимания" остаётся на сам запрос и варианты. 30 токенов (~20–25 слов) — это точка, где профиль ещё работает как фильтр, но не забивает контекст. Это не интуиция — это измеренный эффект: при 100+ токенах качество падает.
Рычаги управления:
- Длина профиля → держи ~20–25 слов. Хочешь добавить нюанс — не расширяй, а заменяй менее важное
- Формат профиля → likes: [что нравится] | style: [как принимаешь решения] — компактнее, чем абзацы
- Количество вариантов в ранжировании → 5–10 оптимально; больше 15 — качество падает
- Обновление профиля → не переписывай, а корректируй уверенность: "добавь с низким приоритетом", "повысь уверенность в пункте X"
Шаблон промпта
Мой профиль: likes: {предпочтение_1}, {предпочтение_2} | style: {паттерн_принятия_решений}
Вот {число} вариантов:
{список_вариантов_с_нумерацией}
Расставь все по убыванию — от наиболее подходящего для моего профиля
к наименее подходящему.
Поясни топ-{N} выбора одной фразой каждый.
Что подставлять:
- {предпочтение_1}, {предпочтение_2} — 2–3 темы или типа контента, которые тебе важны. Конкретно: не "интересный контент", а "практические кейсы малого бизнеса"
- {паттерн_принятия_решений} — одна фраза о стиле: "минимализм и практичность", "скептик, избегает хайпа", "ориентир на ROI"
- {список_вариантов} — нумерованный список; 5–10 вариантов оптимально
- {N} — сколько пояснений хочешь (1–3 обычно достаточно)
Шаблон обновления профиля (после выбора):
Мой текущий профиль:
{текущий_профиль}
Я выбрал вариант: {что_выбрал}
Не выбрал: {что_отверг}
Обнови профиль по правилам:
- REINFORCE: что из профиля подтвердилось выбором? Повысь уверенность.
- DISCOVER: что новое проявилось, чего не было в профиле? Добавь с низкой уверенностью.
- WEAKEN: что явно противоречит выбору? Понижай, не удаляй — одна негативная точка не ломает паттерн.
Верни обновлённый профиль в формате: likes: ... | style: ...
🚀 Быстрый старт — вставь в чат:
Вот шаблон для персонального профиля и ранжирования вариантов.
Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит о твоих предпочтениях и стиле решений — потому что без этого "slim profile" будет пустым, а именно он делает ранжирование персональным. Она возьмёт структуру шаблона и адаптирует под твой контекст.
Ограничения
⚠️ Субъективные задачи без чётких критериев: Если нет ясного "профиля вкуса" — нечего сжимать в 30 токенов. Метод работает там, где предпочтения можно сформулировать.
⚠️ Первые 2–3 итерации слабее: Профиль холодный, пока нет истории выборов. Точность ранжирования растёт по мере обновлений.
⚠️ Полная система требует инфраструктуры: SAGER целиком — это пайплайн с кодом, API, графами памяти. В чате применимы принципы (slim injection, listwise ranking, contrastive update), не вся система.
⚠️ Граница в 30 токенов — не жёсткий закон: Исследование проводилось на gpt-4o-mini. Для других моделей порог может смещаться. Но принцип "короткий профиль лучше длинного" держится.
Ресурсы
SAGER: Self-Evolving User Policy Skills for Recommendation Agent — Zhen Tao, Riwei Lai, Chenyun Yu, Weixin Chen, Li Chen, Beibei Kong, Lei Cheng, Chengxiang Zhuo, Zang Li, Qingqiang Sun
Great Bay University, Hong Kong Baptist University, Sun Yat-Sen University, Tencent (Platform and Content Group)
