TL;DR
SCPA (Supply Chain Planning Agent) — LLM-агент для автоматизации планирования в бизнесе, который работает через цикл: классификация запроса → декомпозиция на подзадачи → выполнение каждой подзадачи → обновление плана на основе результатов. Развернут в JD.com (10+ млн товаров, тысячи складов), где сократил время обработки данных на ~40%, повысил точность планов на 22% и увеличил наличие товара на 2-3%.
Традиционное планирование ломается когда условия меняются: данные разрозненные, спрос скачет, а любая корректировка плана требует перезапуска всего процесса с нуля. Получается медленно и негибко — изменились условия, жди часы или дни пересчётов. Плюс человек не видит промежуточных результатов и не может скорректировать курс на лету.
Система работает в цикле: составить список подзадач → выполнить первую → оценить результат → обновить список задач на основе полученных данных → выполнить следующую. Аналитические задачи разбиваются на атомарные операции (фильтрация, трансформация, группировка, сортировка) — LLM генерирует код для каждой операции отдельно, что проще и точнее чем сразу весь анализ.
Схема метода
ШАГ 1: Классификация намерения
Input: запрос пользователя
Output: тип задачи {диагностика запасов | мониторинг наличия | рекомендации по закупкам}
ШАГ 2: Формирование списка подзадач
Input: тип задачи + корпоративные регламенты (через RAG)
Output: упорядоченный список подзадач
Пример: [1. Анализ истории продаж, 2. Обработка признаков, 3. Формулировка плана]
ШАГ 3: Выполнение подзадачи
3a: Получение данных (SQL-запрос через Text-to-SQL)
3b: Анализ данных (генерация Python кода атомарными операциями)
Output: результат выполнения текущей подзадачи
ШАГ 4: Обновление плана
Input: результат выполненной подзадачи
Output: обновлённый список задач (удалить выполненные, добавить новые, изменить порядок)
ЦИКЛ: шаги 3-4 повторяются пока все подзадачи не выполнены
ШАГ 5: Корректировка плана (после внедрения)
Мониторинг отклонений факта от плана → анализ причин → рекомендации по обновлению
Вся система работает в одном многошаговом диалоге, но требует доступа к базам данных и выполнения кода.
Пример применения
⚠️ Ограничения метода: Полная система требует API, базы данных и выполнение кода. НО принципы декомпозиции и итеративного планирования применимы в обычном чате.
Задача: Маркетолог "М.Видео" готовит план промо-активностей к Чёрной пятнице. Нужно проанализировать продажи прошлого года, учесть текущие тренды, распределить бюджет по категориям.
Промпт (адаптация принципа итеративного планирования):
Ты — ассистент по планированию промо-активностей. Работаем итеративно:
ЗАДАЧА: Составить план промо на Чёрную пятницу для сети электроники.
КОНТЕКСТ:
- Категории: смартфоны, ноутбуки, ТВ, аксессуары
- Бюджет: 15 млн рублей
- Есть данные о продажах ЧП-2023
ШАГ 1: Составь список подзадач для решения этой задачи.
Для каждой подзадачи укажи:
- Что нужно проанализировать
- Какие данные потребуются
- Какой будет output
После того как ты выдашь список — я скажу "выполни подзадачу 1", ты её выполнишь, а потом мы вместе обновим список задач на основе результата. И так далее.
Начинай.
Результат:
LLM выдаст структурированный список подзадач — например: (1) Анализ продаж ЧП-2023 по категориям, (2) Выявление трендов 2024, (3) Распределение бюджета, (4) Формулировка акций.
Затем начнётся итеративное выполнение: вы говорите "выполни подзадачу 1", модель анализирует (запрашивая данные у вас или работая с тем что есть), выдаёт результат. На основе результата первой подзадачи модель может скорректировать список оставшихся задач — например, добавить "проверить наличие на складе популярных моделей" если увидела всплеск спроса на конкретную категорию.
Этот цикл повторяется до полного плана, а промежуточные результаты видны сразу — можно скорректировать курс на любом этапе.
Почему это работает
LLM плохо справляется со сложными многошаговыми задачами сразу — пытается удержать в "голове" весь контекст, теряет нить, выдаёт поверхностный результат. Классический промпт "составь мне план промо" даст общие слова без глубины.
LLM отлично работает с пошаговыми инструкциями — если задача разбита на чёткие этапы с явными входами-выходами, модель выполняет каждый шаг качественнее. Это как разница между "построй дом" и "сначала фундамент, потом стены, потом крышу" — второе даст лучший результат.
Атомарные операции (Filter → Transform → Groupby → Sort) убирают двусмысленность. Вместо расплывчатого "проанализируй продажи" модель получает чёткую последовательность: "отфильтруй данные за ноябрь 2023 → посчитай выручку по категориям → отсортируй от большего к меньшему". Каждый шаг простой, понятный, легко проверяемый.
Итеративность даёт гибкость — после каждой подзадачи можно скорректировать курс. Обнаружили неожиданный тренд на первом шаге? Добавляем новую подзадачу "изучить причины роста категории X". Это невозможно в статичном плане "всё сразу".
Рычаги управления:
- Количество подзадач: больше подзадач = детальнее план, но дольше выполнение. Для простых задач можно попросить 3-5 шагов, для сложных — 10-15.
- Формат output: можно требовать конкретный формат результата каждой подзадачи (таблица, список рекомендаций, числовой прогноз).
- Условия обновления плана: можно задать правило когда добавлять новые подзадачи — например, "если отклонение факта от плана >10%, добавь подзадачу по анализу причин".
Шаблон промпта (упрощённая версия для чата)
Ты — {роль ассистента, например: "планировщик закупок"}.
Работаем итеративно в цикле: план → выполнение → обновление → повтор.
ЗАДАЧА: {описание задачи}
КОНТЕКСТ: {исходные данные, ограничения, цели}
ШАГ 1: Составь список подзадач для решения этой задачи.
Для каждой подзадачи укажи:
- Что нужно сделать
- Какие данные потребуются
- Какой будет результат
Выдай список подзадач. После этого я скажу "выполни подзадачу N",
ты выполнишь её и предложишь обновлённый список оставшихся задач
на основе полученного результата.
Начинай.
Как заполнять:
{роль ассистента}— кто решает задачу: аналитик, планировщик, маркетолог{описание задачи}— конкретная бизнес-задача{контекст}— всё что нужно знать для решения: данные, ограничения, цели
🚀 Быстрый старт — вставь в чат:
Вот шаблон для итеративного планирования. Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит про роль, задачу и контекст — это нужно для формирования релевантного списка подзадач. Она возьмёт структуру из шаблона и адаптирует под вашу конкретную ситуацию.
Ограничения
⚠️ Требуется инфраструктура для полной автоматизации: Оригинальная система JD.com работает с базами данных (SQL-запросы), генерирует и выполняет Python код для анализа, использует RAG для корпоративных регламентов. Без доступа к данным и выполнения кода система не сможет работать автономно.
⚠️ Ручная итерация в чате: Если применять принципы в обычном ChatGPT/Claude без computer use, вам придётся вручную копировать данные между шагами — модель составит SQL-запрос, но выполнить его и вернуть результат должны вы. Это замедляет процесс по сравнению с автоматизированной системой.
⚠️ Не для простых задач: Итеративное планирование оправдано для сложных многошаговых задач где нужна адаптация по ходу. Для простых вопросов ("составь список идей") это overkill — проще спросить напрямую.
⚠️ Качество зависит от данных: Система JD.com показала результаты потому что работала с реальными корпоративными данными, регламентами (SOP), историей продаж. В вакууме без данных LLM может только рассуждать абстрактно.
Как исследовали
Команда JD.com развернула систему в реальном боевом окружении — не в лаборатории, а в действующей сети из 10+ млн товаров и тысяч складов по всему Китаю. Задача была конкретная: автоматизировать еженедельное планирование пополнения запасов — процесс который раньше требовал ручного анализа данных, составления планов и их корректировки.
Измеряли три ключевые метрики:
- Эффективность работы людей — сколько времени тратится на обработку данных и анализ каждую неделю
- Точность планов — доля планов с отклонением от факта менее 5%
- Наличие товара — процент выполнения заказов со склада без дефицита
Сравнивали до внедрения (традиционный процесс с ручным анализом и правилами) и после внедрения агентной системы.
Результаты оказались сильными по всем фронтам: время обработки данных сократилось на ~40% — аналитики перестали тратить часы на рутинные SQL-запросы и подготовку отчётов, агент делал это автоматически. Точность планов выросла значительно — доля планов с ошибкой <5% увеличилась на 22%, потому что система учитывала больше факторов и корректировала план итеративно. И самое главное для бизнеса — наличие товара улучшилось на 2-3%, что в масштабах JD.com означает миллионы довольных клиентов и избежанные потери выручки.
Почему это сработало: Система не просто автоматизировала существующий процесс, а переосмыслила его через итеративный цикл. Вместо жёсткого плана "на месяц вперёд" система постоянно мониторила выполнение, выявляла отклонения и корректировала прогнозы. Это как разница между "составить маршрут один раз" и "GPS который перестраивает маршрут при пробках".
Удивительный инсайт: Атомарные операции (Filter-Transform-Groupby-Sort) оказались критичны для интерпретируемости. Когда LLM генерирует код пошагово, аналитики видят логику и могут вмешаться на любом этапе. Это важно в корпоративной среде где "чёрный ящик" неприемлем — нужно понимать ПОЧЕМУ система рекомендует именно это.
Ресурсы
"Leveraging LLM-Based Agents for Intelligent Supply Chain Planning" — Yongzhi Qi, Jiaheng Yin, Jianshen Zhang и др. (JD.com, Tsinghua University, University of Hong Kong, UC Berkeley)
Статья описывает реальное промышленное внедрение, но опубликована как препринт и может не иметь открытого кода.
