Skip to content

Instantly share code, notes, and snippets.

@isaldin
Created August 16, 2025 03:50
Show Gist options
  • Save isaldin/ddf4201e60d564f9444f60986a3108cc to your computer and use it in GitHub Desktop.
Save isaldin/ddf4201e60d564f9444f60986a3108cc to your computer and use it in GitHub Desktop.

Разбивка большой задачи на более мелкие, управляемые подзадачи — это очень эффективная стратегия в промпт-инжиниринге, которая часто приводит к более точным, связным и высококачественным результатам от больших языковых моделей (БЯМ). Этот подход предотвращает перегрузку БЯМ и позволяет ей сосредоточиться на конкретных аспектах, что похоже на то, как люди решают сложные проблемы.

Вот пошаговый пример того, как разбить большую задачу на подзадачи, используя различные методы промптинга:

Пример задачи: Написать всеобъемлющий и увлекательный пост для блога на тему "История и будущее возобновляемой энергии".

Почему стоит разбивать задачу? Единый промпт для такой широкой темы может привести к поверхностному или шаблонному ответу, или БЯМ может "галлюцинировать" неверную информацию из-за сложности. Разлагая задачу, вы направляете рассуждения БЯМ и обеспечиваете точное охват всех необходимых аспектов.


Пошаговый пример:

  1. Начальный широкий промпт (нулевой выстрел, Zero-Shot Baseline): Начните с общего запроса, чтобы понять базовые возможности БЯМ и потенциальные проблемы.

    • Промпт: "Напиши пост для блога об истории и будущем возобновляемой энергии."
    • Ожидаемый результат: Вероятно, будет сгенерирован шаблонный, невыразительный или неполный пост для блога. Это поможет проиллюстрировать, почему необходима декомпозиция.
  2. Декомпозиция и создание плана: Вместо того чтобы просить весь пост целиком, поручите БЯМ действовать как планировщик и разбить тему на структурированный план. Это похоже на технику "list-to-most" или явное проектирование "мыслительных шагов" в Tree of Thoughts (ToT).

    • Промпт: "Выступай в роли профессионального контент-стратега. Твоя главная цель — создать всеобъемлющий, увлекательный и информативный пост для блога под названием 'История и будущее возобновляемой энергии' для широкой аудитории. Во-первых, составь подробный план этого поста, включая введение, ключевые исторические вехи для различных возобновляемых источников (например, солнечная, ветровая, гидроэнергетика), текущие тенденции, прогнозы на будущее и заключение. Включи 3-5 подпунктов для каждого основного раздела. Думай шаг за шагом."
    • Обоснование:
      • Промптинг ролей (Role Prompting): "Выступай в роли профессионального контент-стратега" задает персону и ожидаемый тон.
      • Определение цели: Четко определяет цель и целевую аудиторию.
      • Декомпозиция: Запрашивает план, разбивая большую задачу на логические разделы.
      • Специфика: Просит подпункты и упоминает конкретные возобновляемые источники для направления модели.
      • Цепочка мыслей (Chain of Thought - CoT): "Думай шаг за шагом" побуждает модель генерировать промежуточные шаги рассуждения, улучшая точность и связность.
    • Ожидаемый результат: Структурированный план, возможно, с краткими описаниями для каждого раздела.
  3. Итерационная генерация контента (по разделам): Генерируйте контент для каждого раздела на основе утвержденного плана. Это демонстрирует цепочку промптов (prompt chaining), где вывод одного промпта служит контекстом для следующего.

    • Промпт (для введения): "Используя только что созданный нами план, напиши раздел 'Введение' для поста в блоге. Убедись, что он цепляет читателя и четко формулирует цель поста. Сделай его кратким, около 2-3 абзацев."
    • Промпт (для исторического раздела): "Теперь напиши раздел 'История солнечной энергетики' для поста в блоге, как это указано в плане. Включи ключевые исторические вехи и технологические достижения. Убедись, что тон является информативным, но увлекательным, подходящим для широкой аудитории. Используй наш предыдущий план как контекст."
    • Обоснование:
      • Контекстный промптинг (Contextual Prompting): Ссылка на "план, который мы только что создали", помогает БЯМ сосредоточиться на общем плане.
      • Специфика: Указание раздела, длины и тона помогает контролировать вывод.
      • Итерационный процесс: Этот шаг повторяется для каждого основного раздела и подраздела плана. Вы можете генерировать их последовательно или параллельно, если позволяет контекстное окно БЯМ.
  4. Проверка и доработка (саморефлексия): После генерации всех разделов объедините их и попросите БЯМ просмотреть весь черновик. Это использует методы саморефлексии (Self-Reflection).

    • Промпт: "Вот полный черновик поста для блога: [Вставьте весь сгенерированный контент]. Проверь весь пост на общую связность, плавность, фактическую точность и увлекательный язык. Выяви любые повторяющиеся фразы, неуклюжие переходы или области, которые можно расширить или уточнить. Предоставь список предложенных улучшений, объясняя свое обоснование для каждого."
    • Обоснование:
      • Всесторонняя проверка: Побуждает БЯМ оценивать свой собственный вывод в соответствии с первоначальной целью.
      • Конкретные критерии: Просит о конкретных типах улучшений (связность, точность, повторения).
      • Интерпретируемость: "Объясняя свое обоснование" согласуется с принципами CoT, предоставляя представление о мыслительном процессе БЯМ.
    • Ожидаемый результат: Список действенных предложений по улучшению поста в блоге.
  5. Окончательная доработка: Реализуйте предложенные изменения, либо путем прямого указания, либо путем подачи уточненных разделов обратно в БЯМ для повторной генерации.

    • Промпт: "На основе твоих предложений, пожалуйста, пересмотри указанные разделы поста в блоге, сосредоточившись на [упомяните конкретные области, такие как 'улучшение переходов' или 'уточнение прогнозов на будущее']. Стремись к цельному и отшлифованному окончательному варианту."
    • Обоснование: Это завершает итерационный цикл, гарантируя, что конечный результат соответствует желаемому качеству.

Ключевые примененные лучшие практики из источников:

  • Итерационный процесс: Промпт-инжиниринг редко является одноразовым действием; это непрерывный цикл уточнения промптов и результатов.
  • Простота дизайна: Разбивайте сложные задачи на более простые предложения и отдельные промпты, чтобы не перегружать модель.
  • Будьте конкретны в отношении вывода: Четко определяйте желаемый формат, стиль и содержимое на каждом шаге (например, "подробный план", "2-3 абзаца").
  • Предоставляйте контекст и роль: Назначайте БЯМ четкую роль и предоставляйте необходимую справочную информацию для эффективного направления ее ответов.
  • Используйте инструкции вместо ограничений: Говорите модели, что делать, а не что не делать, что, как правило, более эффективно.
  • Предоставляйте примеры (несколько выстрелов): Хотя в каждом шаге выше это явно не использовалось, для задач, требующих очень специфического формата или стиля, включение 3-5 высококачественных примеров очень эффективно.
  • Не перегружайте модель: По возможности перекладывайте сложные вычисления или вспомогательные задачи (например, фильтрацию спама) на отдельные шаги или внешние инструменты, чтобы БЯМ могла сосредоточиться на своей основной задаче.
  • Документируйте свои попытки: Ведите учет своих промптов, конфигураций и результатов, чтобы со временем понять, что работает лучше всего.

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment