TL;DR
GRAFT — метод для многошаговых AI-агентов, который при ошибке чинит только сломанный шаг цепочки, а не переделывает всё заново. Система оценивает каждый шаг без эталонного ответа (по согласию нескольких попыток, по подтверждению фактами, по тестам) и заменяет только тот шаг, что работает плохо.
Когда сложная цепочка рассуждений (план → поиск фактов → анализ → проверка → ответ) выдаёт слабый результат, обычный подход — переделать всё с нуля. Это дорого и часто вредно: пока чинишь один плохой шаг, можно случайно испортить остальные четыре, которые уже работали хорошо. Ошибка почти всегда сидит в одном конкретном месте, а не во всей цепочке.
Метод сохраняет общую последовательность шагов нетронутой, но находит конкретный слабый участок, генерирует для него альтернативу и принимает замену только если она лучше локально и не портит связь с соседними шагами — иначе оставляет как было.
Схема метода
ШАГ 1 (один раз, заранее): Собери оптимальную цепочку шагов для типа задачи
(план, поиск фактов, рассуждение, проверка, доработка, оформление)
→ фиксированный шаблон-цепочка
ШАГ 2 (на каждый новый запрос): Выполни цепочку, оцени качество каждого шага
без эталонного ответа (согласие нескольких попыток / подтверждение фактами / тесты)
→ список слабых участков
ШАГ 3: Для слабого участка сгенерируй альтернативную версию
→ сравни качество с текущей
ШАГ 4: Прими замену только если она (а) лучше локально И (б) не портит согласованность
с последующими шагами → обновлённая цепочка
ШАГ 5: Повтори для следующих проблемных участков, несколько проходов
→ финальный ответ
Всё выполняется как цепочка отдельных запросов/проверок, не в одном промпте.
Пример применения
Задача: Вы прогнали через ChatGPT питч-дек для стартапа — блоки «Проблема», «Решение», «Рынок», «Финансовая модель», «Команда». Всё хорошо, кроме одного: цифры в «Финансовой модели» не бьются с разделом «Рынок».
Промпт:
Вот питч-дек стартапа [название], блоки:
1) Проблема — [текст]
2) Решение — [текст]
3) Рынок — [текст]
4) Финансовая модель — [текст]
5) Команда — [текст]
Блок "Финансовая модель" слабый: цифры не согласуются с блоком "Рынок".
Перепиши ТОЛЬКО блок "Финансовая модель", используя цифры и логику
из блока "Рынок" как опору. Остальные блоки не трогай.
После этого проверь: не противоречит ли новая версия блокам "Решение" и "Команда"?
Если есть противоречие — укажи, что нужно скорректировать, но не переписывай всё заново.
Результат: Модель перепишет только один блок, опираясь на данные из соседнего раздела, и в конце явно скажет — согласуется новая версия с остальным текстом или где ещё есть трение. Остальные четыре блока останутся без изменений.
Почему это работает
Когда просишь модель переделать весь длинный ответ целиком, она заново «собирает» текст с чистого листа — и может потерять то, что уже было хорошо, заодно внеся новые неточности. Это трата токенов и риск сломать рабочие части.
Модель хорошо умеет сверять один конкретный фрагмент с соседним на противоречия, если попросить об этом прямо — это узкая, понятная задача.
Метод разбивает большую правку на две маленькие: (1) исправь только слабое место, (2) проверь стыковку с остальным. Это использует силу модели в точечной сверке вместо слабости в удержании целостности длинного текста при полной переделке.
Рычаги управления: - Критерий «слабого участка» — можно заменить сигналы GRAFT (тесты, согласие ответов) на просьбу к модели самой оценить уверенность в блоке. - Число проходов проверки — один раз или несколько итераций «правка → проверка → правка». - Строгость guard-условия — можно требовать полного отсутствия противоречий или допускать небольшие расхождения.
Шаблон промпта
У меня есть многошаговый текст/ответ из блоков: {список_блоков}.
Вот весь текст: {текст}.
Блок "{слабый_блок}" работает плохо: {причина_проблемы}.
Перепиши ТОЛЬКО этот блок, используя данные и логику из блоков
{опорные_блоки} как опору. Остальное не трогай.
После этого проверь: согласуется ли новая версия с блоками {соседние_блоки}?
Если есть противоречие — укажи конкретно что исправить,
но не переписывай остальные блоки.
🚀 Быстрый старт — вставь в чат:
Вот шаблон точечного ремонта многошагового текста. Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит, какие блоки есть в тексте и какой из них слабый — потому что без чёткой границы между шагами метод не работает: нужно точно знать, что чинить и с чем это сверять.
Ограничения
⚠️ Нужна явная структура: метод работает только если ответ разбит на понятные шаги/блоки. Для сплошного текста без разделения — неприменим.
⚠️ Нужен чёткий критерий «плохого»: если не указать, почему блок слабый, модель может почистить не то, что нужно, или не заметить настоящую проблему.
⚠️ Автоматизация недоступна в чате: в оригинале GRAFT сам находит слабые места через код — память конфигураций, автоматические тесты, статистику по прошлым запросам. В чате это работает только вручную: вы сами указываете, какой блок чинить, и просите проверить согласованность.
Ресурсы
Global Optimization and Inference-Time Region Grafting for Agentic Workflows. Donghyeok Koh, Gyuwan Kim, Jinyeong Bak, Seung-Hoon Na, Tao Yang, Haneol Jang, Cheoneum Park (HBNU, UCSB, SKKU, UNIST). Сравнение с MaAS (Zhang et al. 2025a) и AFlow (Zhang et al. 2025c).
