TL;DR
Когда LLM-агент накапливает правила из опыта и добавляет их в контекст, больше правил ≠ лучше результат. Некоторые правила активно вредят определённым задачам — правило для сложной многошаговой покупки сбивает агента с толку на простой однодействительной задаче. Суть метода: не все правила нужны каждой задаче — нужно подбирать набор инструкций под конкретный запрос, а не вываливать все сразу.
Главная находка: одно и то же правило может одновременно помогать одним задачам и вредить другим. При этом в среднем его эффект близок к нулю — положительное и отрицательное взаимно уничтожаются. Поэтому если просто смотреть на среднюю пользу правила по всем задачам, вредоносные правила остаются невидимыми. Система GPT-5.1 с накопленной библиотекой правил на сложных задачах работала хуже, чем без неё вообще.
ASSAY решает это в три шага: измерить вклад каждого правила по задачам через случайные тесты, реструктурировать библиотеку (разбить двойственные правила, убрать бесполезные), отфильтровать при каждом конкретном запросе — оставить только те правила, которые предсказуемо помогут именно этой задаче.
Схема метода
Это система (требует инфраструктуры), но принцип применим вручную:
ЭТАП 1: Накопление правил
Агент выполняет задачи → фиксирует удачные приёмы как "правила"
→ Библиотека N правил
ЭТАП 2: Измерение вреда/пользы [ключевой этап]
Для каждого правила: запуск задач С правилом vs. БЕЗ правила
→ Матрица: правило × задача = помогает/вредит
Вывод: "Правило X помогает задачам типа A, но вредит задачам типа B"
ЭТАП 3: Реструктуризация библиотеки [офлайн]
Двойственные правила ("помогает одним, вредит другим") → разбить на два условних
Бесполезные правила (нулевой эффект везде) → удалить
Дубли → объединить
ЭТАП 4: Фильтрация под каждую задачу [во время работы]
Новая задача → найти похожие из тестовых → предсказать эффект каждого правила
→ Убрать правила с предсказуемым отрицательным эффектом
→ Передать агенту только "безопасный" набор
Вся система требует кода и инфраструктуры. Но принцип применим вручную в обычном чате — см. пример ниже.
Пример применения
Задача: Вы ведёте бизнес и накопили длинный системный промпт для ChatGPT — там правила по тону общения, структуре отчётов, работе с клиентами, SEO, финансовым расчётам, юридическим формулировкам. Теперь вы просите написать быстрое неформальное сообщение партнёру — и модель выдаёт нечто с "правовыми оговорками" и "SEO-ключевыми словами". Правила вредят задаче.
Промпт:
Ты — мой бизнес-ассистент. У меня есть общий набор правил работы,
но для ЭТОЙ конкретной задачи нужна только часть из них.
Задача: {описание задачи}
Активные правила для этой задачи:
- {правило 1, которое точно нужно}
- {правило 2, которое точно нужно}
Неактивные правила (игнорируй для этой задачи):
- {правило 3 — не нужно здесь}
- {правило 4 — не нужно здесь}
- {правило 5 — не нужно здесь}
Выполни задачу строго в рамках активных правил,
без привлечения неактивных.
Результат: Модель сфокусируется только на нужных правилах. Не будет добавлять юридические оговорки в неформальное сообщение, структуру отчёта в мозговой штурм, SEO-требования в личную переписку. Ответ будет чище и точнее.
Почему это работает
Слабость LLM: Модель не различает "это правило важно для задачи" и "это правило есть в контексте". Всё, что попало в контекст, давит на ответ с примерно одинаковым весом. Правило "всегда проверяй побочные эффекты API" и правило "проверяй размеры товара" — оба попадут в ответ о покупке кофемолки, даже если одно из них про Spotify.
Сильная сторона LLM: Модель умеет следовать явным инструкциям. Если прямо сказать "для этой задачи применяй только правила A и B, правила C и D игнорируй" — она это сделает.
Как метод использует это: Вместо одного гигантского промпта с "всеми правилами на все случаи жизни" — фильтрация перед подачей. Под каждую задачу собирается свой набор. Это убирает "шум" из контекста и освобождает место для полезной информации.
Рычаги управления:
- Число активных правил — чем проще задача, тем меньше правил нужно
- Явность формулировок — вместо "игнорируй" попробуй "это правило не применяется, потому что {причина}" — чёткость помогает
- Тип задачи в начале промпта — назови задачу явно перед списком правил: модель лучше поймёт контекст фильтрации
- Защищённые правила — некоторые правила можно пометить "всегда активно" (как авторы пометили базовые шаблоны через tpl- префикс)
Шаблон промпта
Задача типа: {тип задачи — "быстрый ответ", "детальный анализ", "творческое письмо" и т.д.}
Для задач этого типа применяй ТОЛЬКО эти правила:
- {правило 1}
- {правило 2}
Правила ниже для задач этого типа НЕ применяй:
- {правило 3}
- {правило 4}
Задача: {описание того, что нужно сделать}
Плейсхолдеры:
- {тип задачи} — опиши коротко: "быстрый ответ в мессенджер", "аналитический отчёт", "скрипт продаж"
- {правило 1-2} — вставь правила, которые точно нужны для этого типа
- {правило 3-4} — вставь правила, которые будут мешать
🚀 Быстрый старт — вставь в чат:
Вот шаблон для выбора правил под конкретную задачу.
Адаптируй под мою ситуацию: {опиши свои задачи и накопленные правила}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит какие правила у тебя есть и какие типы задач ты решаешь — потому что без этого она не сможет правильно разделить "активные" и "неактивные" для каждого типа.
Ограничения
⚠️ Полная система требует кода: Автоматическое измерение вреда/пользы через случайные маски, матрица эффектов, предиктивная фильтрация — всё это требует Python и инфраструктуры агентов. В чате применим только принцип ручной фильтрации.
⚠️ Работает плохо при насыщении: Если модель уже сама "знает" как решать задачу из обучения (высокая базовая компетентность), добавление или убирание правил почти ничего не меняет. На GPT-5.1 и Sonnet 4.5 в одном из тестов прирост был нулевым.
⚠️ Нужна осознанность о правилах: Чтобы применять фильтрацию вручную, нужно понимать, какие правила у тебя есть. Если системный промпт — один большой неструктурированный текст, сначала нужно его разбить на отдельные правила.
⚠️ Матрица эффектов — на конкретную модель: Авторы обнаружили, что измерения нужно проводить заново для каждой модели — GPT-4.1 и DeepSeek-V3 реагируют на одни и те же правила по-разному.
Ресурсы
Not All Skills Help: Measuring and Repairing Agent Knowledge Yixuan Wang, Yiyang Zhou (UNC Chapel Hill), Yiming Liang (Purdue), Congyu Zhang, Fuxiao Liu (NVIDIA), Jiawei Zhou, Huaxiu Yao — UNC Chapel Hill, Purdue University, NVIDIA Код: https://github.com/aiming-lab/assay Бенчмарки: AppWorld, τ-bench
