3,583 papers
arXiv:2507.06396 85 8 июля 2025 г. FREE

Два дела сразу — ни одного нормально.

КЛЮЧЕВАЯ СУТЬ
Два дела сразу — ни одного нормально. LLM, которую просят в одном запросе и провести анализ, и выдать строгий JSON, сбоит в обоих: либо кривой синтаксис, либо половинчатые выводы. Метод двухэтапного промптинга позволяет получать и качественные рассуждения, и безошибочную структуру — в одном промпте. Фишка: сначала дай модели выговориться текстом без форматирования, потом попроси структурировать уже готовые мысли. Модель переключается с «думай» на «заполни шаблон» — ошибок в 4 раза меньше.
Адаптировать под запрос

Исследование показывает, что LLM, особенно менее мощные, часто допускают ошибки, когда их просят одновременно рассуждать на естественном языке и генерировать структурированные данные (например, JSON). Авторы предлагают разделить этот процесс на два последовательных этапа: сначала модель генерирует только рассуждения ("мысли"), а затем, на втором шаге, на основе этих мыслей формирует структурированный вывод.

Ключевой результат: Разделение одного сложного шага на два более простых (сначала "подумай", потом "структурируй") может повысить успешность выполнения задачи до 4 раз за счет резкого снижения ошибок форматирования и "галлюцинаций".

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

Представьте, что вы просите человека одновременно писать эссе и заполнять налоговую декларацию. Скорее всего, он будет переключаться между задачами, и в итоге допустит ошибки и в тексте, и в цифрах. LLM сталкивается с похожей проблемой. Когда вы просите ее в одном ответе "проанализировать текст и выдать результат в виде JSON", она пытается делать две вещи сразу, что часто приводит к "сломанному" JSON или неполному анализу.

Метод, описанный в исследовании, предлагает более эффективный подход, который можно сформулировать так: "Сначала полностью закончи одну задачу, затем приступай ко второй".

Практически это реализуется через двухэтапный промптинг: 1. Этап 1: "Мышление" (Think1). Вы даете модели исходные данные и просите ее провести полный анализ, сделать выводы, составить план — и изложить все это в виде обычного текста. На этом этапе вы не требуете никакого форматирования. 2. Этап 2: "Действие/Структурирование" (Think2). Вы берете текстовый результат из первого этапа и в новом запросе просите модель: "На основе вот этого твоего анализа, извлеки данные и представь их в формате JSON/таблицы/списка".

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

  • Прямая применимость: Очень высокая. Любой пользователь может вручную реализовать этот двухэтапный подход в любом чат-боте (ChatGPT, Claude и др.). Вместо одного сложного промпта нужно последовательно отправить два более простых, используя ответ на первый как контекст для второго. Или, что еще лучше, можно в одном промпте заставить модель следовать этому паттерну, явно разделив инструкции на "Шаг 1" и "Шаг 2".

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

  • Потенциал для адаптации: Механизм адаптации прост и универсален. Любой промпт вида "Проанализируй X и выдай результат в формате Y" можно и нужно переформулировать в: "Ты — эксперт. Сначала проведи подробный анализ X и опиши свои выводы текстом. Затем, на основе твоего же анализа, сформируй результат в формате Y". Этот шаблон применим для анализа текстов, планирования, извлечения данных и многих других задач.

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

Ты — опытный маркетолог-аналитик. Твоя задача — проанализировать отзыв клиента и извлечь из него ключевую информацию. Действуй строго по шагам.

**Контекст: Отзыв клиента**
> "В целом, ваш новый сервис по доставке продуктов неплох. Курьер приехал вовремя, и упаковка была на высоте. Но я был очень разочарован тем, что в заказе не хватало молока, а авокадо оказались совершенно неспелыми. Пришлось звонить в поддержку, где я прождал ответа оператора 15 минут. Девушка в итоге помогла и оформила возврат, но осадок остался."

---

**Твоя задача:**

**Шаг 1: Аналитическое резюме**
Сначала напиши краткое, но емкое резюме отзыва. Опиши общее впечатление клиента, выдели основные сильные и слабые стороны сервиса, упомянутые в тексте. Не используй списки или специальное форматирование, просто изложи свои мысли в 2-3 предложениях.

**Шаг 2: Извлечение данных в JSON**
После того как напишешь резюме, на основе **твоего же анализа и текста отзыва**, создай JSON-объект со следующей структурой. Не добавляй никаких комментариев до или после JSON-объекта.

{
  "sentiment": "",
  "positive_points": ["<список положительных моментов>"],
  "negative_points": ["<список отрицательных моментов>"],
  "mentions_support": "",
  "support_wait_time_minutes": "<число или null>"
}

Этот промпт работает за счет явного разделения когнитивных задач для LLM, что является прямой реализацией выводов исследования:

  1. Четкая последовательность: Инструкции "Действуй строго по шагам", "Шаг 1" и "Шаг 2" заставляют модель выполнять операции последовательно, а не одновременно.
  2. Снижение нагрузки на Шаге 1: На первом этапе (Аналитическое резюме) модели нужно выполнить только одну задачу — проанализировать текст и сформулировать выводы на естественном языке. Ей не нужно думать о синтаксисе JSON, кавычках и скобках. Это позволяет ей создать качественную текстовую основу.
  3. Фокусировка на Шаге 2: На втором этапе (Извлечение данных в JSON) модель получает четкую инструкцию: "на основе твоего же анализа... создай JSON". Теперь ее задача — не анализ, а структурирование уже осмысленной информации. Это простая задача по заполнению шаблона, с которой LLM справляются гораздо лучше, что минимизирует риск синтаксических ошибок в JSON.

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

Ты — креативный турагент. Твоя задача — помочь мне спланировать 3-дневную поездку в Стамбул для пары, которая любит историю, вкусную еду и неспешные прогулки.

Действуй в два этапа.

**Этап 1: Вдохновляющее описание**
Сначала напиши яркий и увлекательный абзац (5-6 предложений), который передаст атмосферу предлагаемого путешествия. Опиши, какие эмоции и впечатления ждут путешественников, создай настроение предвкушения. Не перечисляй конкретные места, а сфокусируйся на ощущениях.

**Этап 2: Структурированный план**
После абзаца, основываясь на идеях, которые ты в него заложил, создай подробный план поездки в виде markdown-таблицы. Таблица должна содержать столбцы: "День", "Утро (история и культура)", "День (прогулки и еда)", "Вечер (атмосфера)".

**Важно:** Сначала должен идти вдохновляющий абзац, а сразу после него — таблица с планом. Никакого другого текста.

Этот промпт эффективен, потому что он разделяет две принципиально разные задачи: творческую и организационную.

  1. Разделение по типу мышления:

    • Этап 1 (Вдохновляющее описание) задействует "креативный" потенциал LLM. Модель фокусируется на генерации образного, эмоционального текста, не отвлекаясь на логистику и структуру.
    • Этап 2 (Структурированный план) задействует "логический" потенциал. Модель переключается в режим планировщика и систематизирует информацию. Она использует уже сгенерированный креативный текст как источник идей, что обеспечивает смысловую связность между двумя частями ответа.
  2. Предотвращение конфликта форматов: Без такого разделения модель могла бы попытаться вставить элементы таблицы прямо в повествование или, наоборот, сделать описание в таблице слишком сухим и формальным. Четкое разделение на "абзац" и "таблицу" гарантирует, что каждый элемент будет выполнен в наиболее подходящем для него формате, что соответствует главному выводу исследования о повышении надежности при разделении задач.

📌

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

  • A. Релевантность техникам промптинга: Да, исследование раскрывает конкретный паттерн (разделение мышления и генерации данных), который можно применить для структурирования сложных запросов.
  • B. Улучшение качества диалоговых ответов: Да, кейс-стади демонстрирует 4-кратное улучшение производительности за счет снижения ошибок при вызове инструментов, что напрямую влияет на качество и надежность ответа.
  • C. Прямая практическая применимость: Высокая, но требует адаптации. Пользователь не может использовать сам язык PDL, но может применить ключевой принцип "разделения задач" в своих промптах в любом чат-интерфейсе.
  • D. Концептуальная ценность: Очень высокая. Исследование дает фундаментальное понимание ограничения LLM: модели (особенно небольшие) плохо справляются с одновременной генерацией рассуждений на естественном языке и структурированных данных (JSON). Это объясняет частые ошибки и "ломаный" формат вывода.
  • E. Новая полезная практика (кластеры): Работа попадает сразу в несколько кластеров:
    • #1 (Техники формулирования): Предлагает вариант декомпозиции задачи (разделение ReAct-петли).
    • #2 (Поведенческие закономерности): Выявляет слабость LLM в генерации смешанного контента (текст + JSON).
    • #5 (Извлечение и структурирование): Напрямую решает проблему надежного извлечения структурированных данных.
    • #7 (Надежность и стабильность): Основная цель метода — повысить надежность и снизить количество сбоев.
  • Чек-лист практичности (+15 баллов): Да, работа показывает, как структурировать сложные запросы, раскрывает неочевидные особенности поведения LLM и предлагает способ улучшить точность ответов.
📌

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

Аргументы за оценку 85: Исследование предлагает не просто "еще один трюк", а раскрывает фундаментальный принцип работы с LLM, который можно применять в десятках различных сценариев. Главный вывод — "разделяй когнитивную нагрузку" — чрезвычайно ценен для любого пользователя, который пытается получить от модели не просто текст, а структурированный результат (JSON, таблицу, список). Демонстрация 4-кратного роста эффективности наглядно доказывает мощь этого подхода. Это знание напрямую переносится в практику написания промптов без каких-либо инструментов.

Контраргументы (почему оценка могла бы быть ниже): * Высокий порог входа: Статья посвящена созданию специального языка (PDL) и агентным фреймворкам (CrewAI), что может отпугнуть обычного пользователя. Фокус на разработке, а не на простом общении в чате. * Непрямое применение: Пользователь не может взять и использовать PDL. Ему нужно самостоятельно "перевести" идею из статьи в формат обычного промпта, что требует некоторого осмысления.

Контраргументы (почему оценка могла бы быть выше): * Универсальность принципа: Принцип "разделения мышления и генерации данных" является одним из самых мощных и универсальных в продвинутом промпт-инжиниринге. Его освоение кардинально меняет подход к решению сложных задач с помощью LLM. Возможно, это одна из самых практически значимых концепций для пользователей, переходящих от простых запросов к сложным.


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

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

Два дела сразу — ни одного нормально. LLM, которую просят в одном запросе и провести анализ, и выдать строгий JSON, сбоит в обоих: либо кривой синтаксис, либо половинчатые выводы. Метод двухэтапного промптинга позволяет получать и качественные рассуждения, и безошибочную структуру — в одном промпте. Фишка: сначала дай модели выговориться текстом без форматирования, потом попроси структурировать уже готовые мысли. Модель переключается с «думай» на «заполни шаблон» — ошибок в 4 раза меньше.

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

Рассуждение и строгое форматирование — два разных режима. Не смешивай их в одном запросе. Представь умного коллегу. Попросишь «проанализируй отчёт и сразу заполни таблицу» — будет метаться между задачами и налажает в обоих. Попросишь сначала рассказать вывод словами, потом перенести в таблицу — совсем другая история. Процесс: Шаг 1 → «Подумай и напиши рассуждение текстом. Никакого форматирования.» Шаг 2 → «На основе твоего анализа выше сформируй JSON с такими-то полями.» На каждом шаге модель делает одно дело. Не два одновременно.

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

У модели ограниченный «бюджет внимания» на один запрос. Когда задача одновременно требует свободных рассуждений и точного синтаксиса — модель жертвует чем-то одним. Обычно страдает структура: скобки не закрыты, поля перепутаны, лишний текст просачивается внутрь JSON. Разделение снимает конфликт: первый шаг тратит весь бюджет на смысл, второй — только на форматирование уже готового результата. Особенно заметно на слабых или дешёвых моделях — у них бюджет меньше, конфликт острее.

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

Любая задача формата «проанализируй X и выдай в формате Y» — там где нужны и рассуждения, и структурированный вывод. Конкретно: — Анализ отзывов → JSON с тональностью и тегами — Разбор резюме → структурированная карточка кандидата — Оценка рисков → таблица с приоритетами — Планирование поездки → вдохновляющее описание + расписание по дням Особенно полезно для слабых или дешёвых моделей — там проблема острее всего. НЕ нужно для простых задач без форматирования: «напиши письмо», «объясни концепцию». Там разделение только усложняет жизнь.

Мини-рецепт

1. Найди «двойной» запрос: Любой промпт вида «проанализируй и выдай JSON / таблицу / список» — кандидат на разделение.

2. Добавь Шаг 1: В начало промпта вставь явную инструкцию: Шаг 1: Проведи анализ и напиши выводы обычным текстом. Никакого форматирования и списков.

3. Добавь Шаг 2: После первой инструкции: Шаг 2: На основе твоего анализа выше сформируй [нужный формат] со следующими полями: [поля].

4. Зафикси порядок: В конец промпта добавь: Действуй строго последовательно: сначала шаг 1, потом шаг 2. Не пропускай шаги и не объединяй их.

Готово. Один промпт, два шага — модель сама себя дисциплинирует.

Примеры

[ПЛОХО] : Проанализируй отзыв клиента и выдай результат в JSON с полями sentiment, positive_points, negative_points
[ХОРОШО] : Ты — аналитик. Действуй строго по шагам. Шаг 1: Прочитай отзыв и напиши аналитическое резюме в 2-3 предложениях. Только текст — никаких списков и JSON. Шаг 2: На основе твоего резюме выше создай JSON объект: {"sentiment": "", "positive_points": [], "negative_points": []} Никакого текста до или после JSON. Отзыв: [текст отзыва]
Источник: Representing Prompting Patterns with PDL: Compliance Agent Case Study
ArXiv ID: 2507.06396 | Сгенерировано: 2026-03-02 17:17

Проблемы LLM

ПроблемаСутьКак обойти
Анализ и форматирование в одном запросе мешают друг другуПросишь модель "проанализируй и выдай JSON". Модель пытается делать два дела сразу. Анализ выходит поверхностным. JSON ломается — теряются скобки, кавычки, поля. Чем слабее модель, тем чаще сбои. Проблема универсальна: любая задача, где нужны одновременно рассуждения и строгий форматРаздели на два шага. Шаг 1: только рассуждения, никакого форматирования. Шаг 2: "на основе твоего анализа выше — сформируй JSON". Модель сначала думает свободно, потом заполняет шаблон

Методы

МетодСуть
Два шага вместо одного — сначала думай, потом форматируйРаздели запрос явно: Шаг 1 — попроси модель изложить рассуждения обычным текстом, без списков и структур. Шаг 2 — попроси извлечь данные из её же текста в нужный формат: На основе твоего анализа выше создай JSON / таблицу / список. Ключевое слово: "из твоего анализа выше" — модель опирается на уже готовое рассуждение, а не думает заново. Почему работает: на каждом шаге одна задача. На первом — никакого синтаксиса, только мысли. На втором — никакого анализа, только заполнение шаблона. Когда применять: задача требует и размышления, и строгого формата вывода. Когда не нужно: простые вопросы без форматирования или чистое извлечение данных без анализа
📖 Простыми словами

Представление паттернов промптинга с использованием PDL: пример кейса агента соответствия

arXiv: 2507.06396

Суть исследования в том, что современные LLM — это мощные, но дико неорганизованные сотрудники. Если ты даешь им сложную задачу одним куском, они начинают путаться в показаниях и выдавать кашу. Авторы предлагают использовать PDL (Prompt Declaration Language) — это своего рода жесткий каркас или программный код для промптов, который заставляет модель работать по четкому алгоритму. Вместо того чтобы надеяться на «интеллект» нейронки, мы превращаем процесс генерации в детерминированный конвейер, где каждый шаг строго предопределен.

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

В примере с маркетингом это работает через явное разделение когнитивных задач. Сначала мы заставляем модель сделать краткое резюме (сжать смысл), а вторым шагом — вытащить структурированные данные (сухие факты). Когда эти задачи идут последовательно в рамках одного PDL-шаблона, модель не пытается усидеть на двух стульях сразу. Она сначала «понимает» текст, а потом «парсит» его. В итоге ты получаешь чистые данные без лишнего мусора, потому что промпт-паттерн блокирует попытки модели пойти по пути наименьшего сопротивления.

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

Короче: эра «промпт-инжиниринга» на коленке заканчивается, начинается программирование промптов. Если хочешь, чтобы AI работал стабильно, забудь про длинные простыни текста с просьбами «будь профессионалом». Нужно внедрять PDL-подход, жестко разделять задачи и контролировать каждый чих модели через шаблоны. Кто продолжит писать промпты как письма бабушке, так и будет получать рандомный результат вместо надежного инструмента.

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

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

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