3,583 papers
arXiv:2507.06192 74 8 июля 2025 г. FREE

LLM плохо держит 5+ правил одновременно.

КЛЮЧЕВАЯ СУТЬ
LLM плохо держит 5+ правил одновременно. Просишь 'напиши пост: три абзаца, 280 символов, три эмодзи, вопрос в конце' — что-нибудь да выпадет. Метод SQLBarber позволяет генерировать любой структурированный контент — посты, вакансии, шаблоны, код — с точным соблюдением всех требований. Фишка: разбей на два хода — сначала черновик без правил, потом отдельная команда «проверь по чеклисту и перепиши». Исследователи применили это для генерации SQL-запросов, но механика работает для любого текста с чёткими ограничениями.
Адаптировать под запрос

Исследователи создали систему SQLBarber, которая использует LLM для генерации большого количества реалистичных SQL-запросов для тестирования баз данных. Система принимает на вход правила на естественном языке (например, "запрос должен соединять 3 таблицы и иметь подзапрос"), генерирует SQL-шаблон, а затем в цикле заставляет LLM проверять и исправлять саму себя, пока результат не станет синтаксически верным и не будет соответствовать всем правилам.

Ключевой результат: Итеративная самокоррекция с использованием обратной связи от внешних систем (СУБД) и самой LLM позволяет надежно генерировать сложный структурированный контент (SQL-код), соответствующий четким требованиям.

Суть метода для обычного пользователя заключается в переходе от одношаговых промтов к многошаговому процессу "Генерация с управляемой самокоррекцией". Вместо того чтобы просто дать команду и надеяться на лучшее, вы выстраиваете диалог, в котором LLM сначала создает черновик, а затем выступает в роли собственного критика и редактора.

Этот подход можно разбить на три этапа:

  1. Подготовка Контекста и Правил. Вы не просто просите что-то сделать. Вы сначала даете LLM всю необходимую "сырую" информацию (контекст) и четкий свод правил (ограничений), которым должен соответствовать финальный результат. Это как выдать повару продукты и подробный рецепт.
  2. Первичная Генерация. Вы даете команду сгенерировать первый вариант на основе контекста и правил. Вы принимаете, что этот вариант может быть несовершенным.
  3. Итеративная Самокоррекция. Это ядро метода. Вы даете LLM новую команду: "А теперь проанализируй текст, который ты только что сгенерировал. Проверь его на соответствие вот этим правилам (вы повторяете правила). Найди все несоответствия. После этого напиши исправленную версию". Этот цикл можно повторять, пока результат вас не устроит.

Этот метод превращает LLM из "черного ящика" в управляемый инструмент, который можно последовательно направлять к нужному результату, значительно повышая надежность и точность.

  • Прямая применимость: Низкая, если говорить о полной автоматизации как в статье. Однако, если рассматривать метод как диалоговую стратегию, то применимость высокая. Пользователь может вручную, в несколько шагов, реализовать цикл "генерация -> команда на проверку -> исправление" в любом чат-боте.

  • Концептуальная ценность: Огромная. Исследование дает пользователю ключевую ментальную модель: "LLM — это не оракул, а стажер, которого нужно контролировать". Оно учит:

    • Не доверять первому ответу в сложных задачах.
    • Формализовать свои требования в виде четкого чеклиста.
    • Использовать способности LLM к рассуждению для проверки ее же работы.
    • Понимать, что качество результата напрямую зависит от качества и полноты предоставленного контекста и ограничений.
  • Потенциал для адаптации: Очень высокий. Механизм "задача -> проверка по правилам -> исправление" универсален. Его можно применить для написания чего угодно: от коммерческого предложения и резюме до кода на Python и сценария для видео. Адаптация заключается в том, чтобы заменить "спецификации SQL-шаблона" на любые другие требования к тексту (стиль, объем, структура, ключевые слова, тон голоса и т.д.).

Представим, что вы владелец небольшой кофейни и хотите анонсировать новый осенний напиток в соцсетях.

Ты — опытный SMM-менеджер. Твоя задача — создать пост для Instagram.

**[КОНТЕКСТ]**
*   **Продукт:** Новый напиток "Пряный Тыквенный Латте".
*   **Ключевые ингредиенты:** Эспрессо, тыквенное пюре, корица, мускатный орех, взбитые сливки.
*   **Целевая аудитория:** Молодежь, студенты, любители уютной осенней атмосферы.
*   **Цель поста:** Вызвать интерес, мотивировать прийти и попробовать.

**[ЗАДАЧА]**
Напиши текст для поста в Instagram на основе предоставленного контекста.

---

**[ВЕРИФИКАЦИЯ И КОРРЕКЦИЯ]**
Отлично, теперь критически проверь написанный тобой текст на соответствие СЛЕДУЮЩИМ ПРАВИЛАМ:
1.  **Тон:** Дружелюбный, теплый и уютный.
2.  **Длина:** Строго меньше 280 символов.
3.  **Структура:** Должен содержать ровно 3 абзаца.
4.  **Эмодзи:** Должно быть использовано ровно 3 эмодзи: 🎃, ☕, 🍂.
5.  **Призыв к действию:** В конце должен быть вопрос, вовлекающий аудиторию (например, "А с чем у вас ассоциируется осень?").

Если текст не соответствует хотя бы одному правилу, объясни, в чем ошибка, и напиши новую, полностью исправленную версию.

Этот промпт эффективен, потому что он воспроизводит логику SQLBarber в ручном режиме:

  1. Разделение контекста и задачи: Модель сначала получает все необходимые данные ([КОНТЕКСТ]), что снижает вероятность выдумывания фактов. Это аналог "Database Schema Summary" из статьи.
  2. Четкие, измеримые правила: Вместо расплывчатого "напиши хороший пост", мы даем конкретные, проверяемые ограничения ([ВЕРИФИКАЦИЯ И КОРРЕКЦИЯ]). Это аналог "Specifications for SQL Templates".
  3. Принудительная самокоррекция: Самая важная часть. Мы не просто просим исправить, а заставляем модель сначала провести анализ ("критически проверь", "объясни, в чем ошибка"), а затем синтез ("напиши новую версию"). Этот двухшаговый процесс активирует логические способности LLM и заставляет ее более внимательно следовать инструкциям, что является прямым аналогом цикла "Check and Rewrite" из исследования.

Задача: составить краткое и емкое описание вакансии для поиска личного ассистента.

Выступи в роли HR-специалиста, который составляет описание вакансии.

**[КОНТЕКСТ]**
*   **Должность:** Личный ассистент для руководителя IT-стартапа.
*   **Ключевые обязанности:** Планирование календаря, организация поездок, подготовка презентаций, ведение деловой переписки.
*   **Требования:** Опыт от 1 года, английский язык не ниже Upper-Intermediate, отличные навыки коммуникации, проактивность.
*   **Условия:** Гибкий график, возможность частичной удаленной работы, офис в центре города.

**[ЗАДАЧА]**
Напиши текст описания вакансии на основе предоставленного контекста.

---

**[ВЕРИФИКАЦИЯ И КОРРЕКЦИЯ]**
Теперь внимательно проверь свой текст по этому чеклисту:
1.  **Структура:** Текст должен быть разбит на 4 четких блока: "О нас", "Чем предстоит заниматься", "Что мы ждем от вас", "Что мы предлагаем".
2.  **Язык:** Профессиональный, но не сухой. Избегай канцеляризмов ("осуществление деятельности").
3.  **Фокус:** Текст должен быть сфокусирован на кандидате, используй больше местоимения "Вы" ("Вы будете...", "От вас мы ждем...").
4.  **Краткость:** Каждый из 4-х блоков должен содержать не более 3-х пунктов (буллетов).

Проанализируй свой первоначальный ответ на соответствие этим четырем правилам. Если есть отклонения, укажи на них и предоставь финальную, исправленную версию вакансии.

Этот пример работает по тем же принципам, что и SQLBarber, адаптированным для задачи рекрутинга:

  1. Предоставление "сырых данных": Блок [КОНТЕКСТ] дает модели всю фактуру о вакансии, избавляя ее от необходимости гадать. Это аналог предоставления LLM схемы базы данных.
  2. Формализация требований к качеству: Вместо абстрактной просьбы "напиши хорошую вакансию", мы даем конкретные, проверяемые критерии качества в блоке [ВЕРИФИКАЦИЯ И КОРРЕКЦИЯ]. Правила по структуре, языку, фокусу и краткости — это аналог спецификаций для SQL-запросов (количество таблиц, наличие JOIN и т.д.).
  3. Активация цикла "Анализ-Синтез": Команда "Проанализируй... укажи на отклонения... предоставь исправленную версию" заставляет LLM не просто переписать текст, а сначала выполнить логическую операцию сравнения своего вывода с эталоном (правилами). Это значительно повышает вероятность того, что финальный текст будет точно соответствовать требованиям, так же как SQLBarber добивается генерации синтаксически верных и соответствующих спецификациям SQL-запросов.
📌

Основные критерии оценки

  • A. Релевантность техникам промтинга: Высокая. Исследование описывает структурированный подход к промтингу, включающий предоставление контекста (схема БД), четких ограничений (спецификации на естественном языке) и, что самое важное, итеративный механизм самокоррекции.
  • B. Улучшение качества диалоговых ответов: Низкая. Работа сфокусирована на генерации кода (SQL), а не на улучшении общих диалоговых навыков LLM. Однако концепции могут быть адаптированы для повышения точности в других задачах.
  • C. Прямая практическая применимость: Низкая. SQLBarber — это сложная система, требующая подключения к БД, использования байесовского оптимизатора и запуска целого пайплайна. Обычный пользователь не может воспроизвести это в чате напрямую.
  • D. Концептуальная ценность: Очень высокая. Исследование блестяще иллюстрирует несколько ключевых идей: важность предоставления исчерпывающего контекста, пользу явных и строгих ограничений, а также мощь техники итеративной самокоррекции для борьбы с галлюцинациями и повышения надежности.
  • E. Новая полезная практика (кластеризация): Работа попадает сразу в несколько кластеров:

    • 1. Техники формулирования промптов: Демонстрирует продвинутую технику самокоррекции.
    • 3. Оптимизация структуры промптов: Показывает, как структурировать сложный запрос, объединяя контекст, правила и задачу.
    • 7. Надежность и стабильность: Весь механизм "Check and Rewrite" направлен на снижение ошибок и повышение соответствия требованиям.
  • Чек-лист практичности (+15 баллов): Да, исследование показывает, как структурировать сложные запросы, раскрывает неочевидные особенности поведения LLM (необходимость итеративной проверки) и предлагает способ повысить точность ответов. Базовая оценка (около 59) + 15 = 74.

📌

Цифровая оценка полезности

Оценка 74 отражает баланс между очень высокой концептуальной ценностью и низкой прямой применимостью для обычного пользователя. Это исследование — не готовый рецепт, а скорее источник вдохновения и глубокого понимания того, как можно "приручить" LLM для сложных задач.

Аргументы за оценку: * Концептуальная мощь: Идея итеративной самокоррекции (Алгоритм 1) — это золотая жила для промт-инжиниринга. Любой пользователь может адаптировать этот подход, заставляя LLM проверять и исправлять свои же ответы по заданным критериям. * Структурирование контекста: Работа наглядно демонстрирует, что для качественного результата LLM нужно "скормить" всю релевантную информацию (схему БД, возможные связи) в структурированном виде. Этот принцип универсален. * Борьба с галлюцинациями: Метод предлагает конкретный механизм борьбы с неточностями LLM, что является одной из главных проблем для пользователей.

Контраргументы (почему оценка могла бы быть ниже/выше): * Почему могла быть выше (>80): Если бы пользователь был технически подкованным (например, аналитик данных), то принципы генерации SQL-запросов по текстовому описанию были бы для него чрезвычайно полезны. Метод самокоррекции настолько силен, что один только он может оправдать более высокую оценку за его универсальность. * Почему могла быть ниже (<65): Исследование очень узкоспециализированное (генерация SQL-нагрузок для тестирования СУБД). Для пользователя, который пишет тексты для блога или составляет письма, прямая польза почти нулевая. Требуется значительное усилие, чтобы "перевести" идеи из мира баз данных в свою предметную область.


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

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

LLM плохо держит 5+ правил одновременно. Просишь 'напиши пост: три абзаца, 280 символов, три эмодзи, вопрос в конце' — что-нибудь да выпадет. Метод SQLBarber позволяет генерировать любой структурированный контент — посты, вакансии, шаблоны, код — с точным соблюдением всех требований. Фишка: разбей на два хода — сначала черновик без правил, потом отдельная команда «проверь по чеклисту и перепиши». Исследователи применили это для генерации SQL-запросов, но механика работает для любого текста с чёткими ограничениями.

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

Не один большой промпт со всеми условиями — а конвейер из трёх блоков. Блок [КОНТЕКСТ]: вся сырая информация. Продукт, аудитория, схема базы данных — что угодно. Без этого модель додумывает факты. Блок [ЗАДАЧА]: просто команда сгенерировать первый вариант. Без правил. Принимай, что черновик несовершенен — это нормально. Блок [ПРОВЕРКА]: «Проверь написанное по этим правилам. Найди отклонения. Напиши исправленную версию.» Это ключевая фраза. LLM выступает сначала автором, потом редактором — и эти роли разные. Модель справляется с каждой по отдельности гораздо лучше, чем с обеими разом.

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

Когда просишь одновременно «создать» и «соблюсти правила» — модель перегружена. Она старается, но одно требование вытесняет другое. Сравнивать готовый текст с правилами проще, чем держать все правила в голове во время написания. Это как разница между «пиши без ошибок» и «пиши, потом прочитай и исправь». Второй подход работает — и у людей, и у LLM. Плюс внешний чеклист даёт модели конкретный эталон для сравнения — вместо абстрактных инструкций, которые теряются в процессе генерации.

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

Любой контент с чёткими измеримыми требованиями: посты в соцсетях (длина, структура, количество эмодзи), описания вакансий, коммерческие предложения, технические шаблоны, код с конкретными ограничениями. Особенно нужно когда правил больше четырёх — именно тогда одношаговый промпт начинает проваливаться. НЕ нужно для простых задач: «перепиши текст попроще» или «придумай пять названий». Там хватит обычного промпта — цикл только замедлит.

Мини-рецепт

1. Собери контекст: Блок [КОНТЕКСТ] — вся сырая информация. Продукт, аудитория, факты, данные. Только то что есть — без домыслов.

2. Запроси черновик: Блок [ЗАДАЧА] — просто «напиши на основе контекста». Правила пока не даёшь. Получаешь первый вариант.

3. Составь чеклист: Блок [ПРОВЕРКА] — пронумерованный список конкретных правил. Не «пиши хорошо», а «три абзаца», «не больше 280 символов», «заканчивается вопросом». Чем конкретнее — тем лучше.

4. Скомандуй цикл: Точная формулировка: «Проверь текст по каждому пункту. Найди несоответствия. Напиши исправленную версию.» Без этой последовательности модель просто переписывает произвольно.

5. Повтори при необходимости: Если результат снова не идеален — запусти блок [ПРОВЕРКА] ещё раз. Обычно хватает двух итераций.

Примеры

[ПЛОХО] : Напиши описание вакансии личного ассистента для IT-стартапа
[ХОРОШО] : [КОНТЕКСТ] Должность: личный ассистент руководителя. Обязанности: планирование календаря, организация поездок, подготовка презентаций. Требования: английский не ниже Upper-Intermediate, опыт от года, проактивность. Условия: гибкий график, частичная удалёнка, офис в центре. [ЗАДАЧА] Напиши черновик описания вакансии. [ПРОВЕРКА] Теперь проверь по чеклисту: 1) четыре блока — «О нас», «Что предстоит делать», «Что мы ждём», «Что предлагаем» 2) в каждом блоке не больше трёх пунктов 3) никаких канцеляризмов — никакого «осуществления деятельности» 4) везде обращение на «вы», не «кандидат». Найди отклонения и напиши исправленную версию.
Источник: SQLBarber: A System Leveraging Large Language Models to Generate Customized and Realistic SQL Workloads
ArXiv ID: 2507.06192 | Сгенерировано: 2026-03-02 16:55

Проблемы LLM

ПроблемаСутьКак обойти
Модель плохо выполняет несколько точных ограничений сразуПросишь написать текст с 5 правилами: длина, структура, тон, конкретные слова, формат. Первый ответ почти всегда нарушает что-то одно или больше. Модель как бы "забывает" часть правил пока генерирует. Это не невнимательность — при одном проходе модель не перепроверяет результат относительно каждого условияРаздели запрос на два шага в одном сообщении. Сначала: "сгенерируй". Потом сразу: "теперь проверь свой ответ по каждому правилу из списка. Найди нарушения. Напиши исправленную версию". Модель сама себя проверит и исправит

Методы

МетодСуть
Три блока в одном запросе: контекст задача проверкаСтруктурируй запрос тремя отдельными блоками. [КОНТЕКСТ] — все факты, данные, материалы (без этого модель выдумывает). [ЗАДАЧА] — что сделать. [ПРОВЕРКА И ПРАВКА] — список точных правил плюс инструкция: "найди нарушения, объясни их, напиши исправленную версию". Блок проверки — ключевой. Именно он заставляет модель сначала сравнить результат с правилами, а потом переписать. Когда применять: любой сложный текст с измеримыми требованиями — посты, вакансии, технические задания, код. Когда не работает: творческие задачи без чётких критериев качества
📖 Простыми словами

SQLBarber: система, использующая большие языковые модели для генерации настраиваемых и реалистичных SQL-нагрузок

arXiv: 2507.06192

Суть SQLBarber в том, что создание тестовых данных для баз данных всегда было дикой головной болью. Раньше разработчики либо копировали реальные данные (что опасно из-за приватности), либо генерировали случайный мусор, на котором ничего толком не протестируешь. Эта система использует LLM, чтобы создавать не просто строки в таблицах, а осмысленные, кастомизированные и реалистичные нагрузки. Она понимает структуру вашей базы и генерирует такие SQL-запросы, которые ведут себя как действия живых пользователей, а не как бездушный рандомайзер.

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

Система работает через многоагентную архитектуру, где каждый агент отвечает за свой кусок работы. Один анализирует схему базы, другой придумывает сценарии использования, а третий следит, чтобы данные не противоречили логике — например, чтобы дата увольнения сотрудника не была раньше даты его рождения. Главная фишка здесь в управлении распределением: вы можете приказать системе генерировать 80% простых запросов на чтение и 20% тяжелых обновлений, и она сделает это с хирургической точностью, сохраняя семантическую связность всех операций.

Хотя в исследовании мучили базы данных, принцип генерации синтетического контекста применим везде, от тестирования мобильных приложений до обучения нейросетей. Это универсальный способ создать «песочницу», которая по ощущениям ничем не отличается от реальности. Если вам нужно проверить, выдержит ли ваш сервис наплыв покупателей в «черную пятницу», вам больше не нужно гадать или рисковать боевыми данными — вы просто скармливаете схему SQLBarber и получаете идеальный стресс-тест.

Короче, эра тупых заглушек в коде официально закончилась. SQLBarber доказывает, что LLM — это не только чат-боты для стишков, но и мощнейший инструмент для инженерии, который экономит недели ручного труда. Вместо того чтобы вручную прописывать сотни сценариев, вы делегируете это модели, которая понимает контекст лучше, чем задолбанный тестировщик. Либо вы начинаете использовать синтетические нагрузки сейчас, либо будете ловить баги на реальных пользователях, когда всё рухнет под нагрузкой.

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

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

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