Зачем разбивать задачу на подзадачи
Зачем разбивать задачу на подзадачи
CoT (модуль 7) помогает модели решать сложные задачи в рамках одного промпта. Но есть задачи, которые физически не решить одним промптом — они требуют нескольких последовательных шагов, где результат первого шага влияет на второй, а второго — на третий. Здесь вступает декомпозиция — искусство разбивать большую задачу на независимые или последовательные подзадачи.
Признаки, что задачу нужно декомпозировать
1. Задача не помещается в один промпт
Если данные для анализа занимают 70% контекстного окна, а нужен ещё развёрнутый ответ — места не хватит. Нужно разбить обработку на части.
2. Задача требует разных «режимов мышления»
Например: сначала нужен творческий этап (придумать идеи), затем аналитический (оценить идеи по критериям), затем технический (оформить лучшие в документ). Один промпт плохо справляется с переключением между режимами.
3. Промежуточные результаты нужно проверить
Если модель ошибётся на первом шаге, а ты этого не заметишь — вся цепочка рухнет. Декомпозиция позволяет проверять промежуточные результаты.
4. Разные части задачи требуют разных промптовых техник
Одна часть может требовать few-shot с примерами, другая — CoT, третья — структурированного вывода. В одном промпте это смешается в кашу.
Пример: задача, которая требует декомпозиции
Задача: проанализировать 10 резюме кандидатов и выбрать лучшего на позицию разработчика.
Попытка решить одним промптом:
Вот 10 резюме. Выбери лучшего кандидата на позицию React-разработчика.
Учитывай: опыт, образование, проекты.
Проблемы:
- 10 резюме могут не поместиться в контекстное окно.
- Модель должна одновременно: прочитать резюме, оценить по критериям, сравнить, выбрать — в одном ответе.
- Невозможно проверить, правильно ли модель поняла каждое резюме.
Декомпозиция на 4 шага:
Шаг 1: Для каждого резюме извлеки ключевые данные (JSON).
Шаг 2: Оцени каждое резюме по трём критериям (таблица).
Шаг 3: Сравни оценки и выбери топ-3 (таблица сравнения).
Шаг 4: Для топ-3 напиши развёрнутое обоснование выбора.
Каждый шаг — отдельный промпт. Результат шага 1 — вход для шага 2. Результат шага 2 — вход для шага 3. И так далее.
Преимущества декомпозиции
| Один большой промпт | Декомпозиция | |
|---|---|---|
| Контекстное окно | Данные + инструкции могут не влезть | Каждый шаг компактный |
| Качество | Модель может потерять критерии | Каждый шаг фокусирован |
| Проверка | Нельзя проверить промежуточные шаги | Каждый шаг можно валидировать |
| Отладка | Если ответ плохой — непонятно где ошибка | Понятно, на каком шаге ошибка |
| Переиспользование | Промпт завязан на конкретную задачу | Шаги можно переиспользовать |
Когда НЕ нужно декомпозировать
- Задача решается одним промптом с CoT.
- Данные компактные (меньше 20% контекстного окна).
- Шаги настолько простые, что декомпозиция — избыточное усложнение.
- Время дороже точности: один промпт быстрее, чем цепочка из 4.
Проверь себя
Дана задача: «Напиши статью о здоровом питании: найди 5 научных исследований за последние 2 года, напиши обзор каждого, сделай общий вывод и рекомендации». Нужна ли декомпозиция? Почему?
Ответ: да, нужна. Задача требует разных режимов: поиск информации (модель не ищет в интернете, кстати — это ограничение), анализ исследований, написание текста. Кроме того, 5 полнотекстовых исследований не поместятся в один промпт. Декомпозиция: (1) для каждого исследования — извлечь ключевые выводы, (2) сравнить их, (3) написать статью на основе сравнения.
Итог
- Декомпозиция — разбиение большой задачи на последовательные или независимые подзадачи.
- Признаки: не помещается в контекстное окно, требует разных режимов мышления, нужна проверка промежуточных результатов, разные техники для разных частей.
- Декомпозиция повышает качество, прозрачность и переиспользуемость.
- Не переусердствуй: простые задачи решаются одним промптом с CoT.
Что дальше
Теперь ты знаешь, ЗАЧЕМ декомпозировать. В следующем уроке — КАК: техника prompt chaining, когда результат одного промпта подаётся на вход следующему, образуя цепочку.