Thought Propagation

Analogy-first reasoning: модель решает похожие подзадачи и переносит найденные паттерны обратно в исходную задачу.

Thought Propagation (TP, «распространение мыслей») — техника, при которой модель сначала находит аналогичные задачи, решает их, а затем переносит полученные решения на исходную проблему. В отличие от Analogical Prompting, где похожие примеры служат ориентиром, Thought Propagation выстраивает более явный маршрут «аналогия -> решение -> перенос».

В 2026 году TP лучше понимать как analogy-reuse pattern для задач с повторяющейся структурой. Он полезен не потому, что модель “становится умнее”, а потому что она перестаёт каждый раз решать одинаковую структуру с нуля.

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

Суть в двух словах

Thought Propagation решает сложную задачу через три шага: найди аналогии → реши их → перенеси решения. Модель не рассуждает с нуля — она ищет похожие подзадачи, которые проще решить, и использует их ответы как строительные блоки для основного решения.

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

Chain of Thought
Модель рассуждает линейно: шаг 1 → шаг 2 → ... → ответ. Если задача сложная, цепочка становится длинной, и ошибка на раннем шаге ломает всё рассуждение. Каждую задачу решает с нуля, даже если похожие подзадачи уже встречались.
Thought Propagation
Модель находит аналогичные задачи, решает их по отдельности, затем переносит решения на исходную задачу. Ошибки в одной аналогии не ломают остальные. Решения переиспользуются — одна удачная аналогия может помочь в нескольких местах.
Thought Propagation даёт максимальный выигрыш, когда задача естественно разбивается на повторяющиеся подзадачи: графовые задачи (кратчайший путь, максимальный поток), планирование маршрутов, логистика, анализ сетей. Для задач без повторяющейся структуры (эссе, креативное письмо) техника менее эффективна.

Как работает Thought Propagation

Авторы статьи (Yu et al., 2023) выделяют три этапа, которые образуют цикл: модель может повторять их итеративно, уточняя аналогии и улучшая решение.

Примеры использования

Задача на графах: кратчайший путь

ChatGPT
Используй метод Thought Propagation для решения задачи.

Задача: Найди кратчайший путь от города A до города F в следующей сети.
A—B: 4, A—C: 2, B—D: 5, B—E: 3, C—D: 1, C—E: 6, D—F: 2, E—F: 4.

Шаг 1: Предложи 2-3 аналогичные подзадачи (проще исходной).
Шаг 2: Реши каждую подзадачу.
Шаг 3: Перенеси решения на исходную задачу.
Ответ модели

Шаг 1: Аналогичные подзадачи

Аналогия 1: Кратчайший путь A → D (подсеть A, B, C, D) Аналогия 2: Кратчайший путь D → F и E → F (подсеть D, E, F)

Шаг 2: Решения подзадач

Аналогия 1 — A → D:

  • A → B → D: 4 + 5 = 9
  • A → C → D: 2 + 1 = 3 ✓ (кратчайший)

Аналогия 2 — до F:

  • D → F: 2 (прямой)
  • E → F: 4 (прямой)

Шаг 3: Распространение на исходную задачу A → F

Комбинируем решения:

  • Через D: A → C → D → F = 2 + 1 + 2 = 5 ✓
  • Через E: A → B → E → F = 4 + 3 + 4 = 11
  • Через E (альтернатива): A → C → E → F = 2 + 6 + 4 = 12

Ответ: кратчайший путь A → C → D → F, длина 5.

Решения подзадач (A→D = 3 через C; D→F = 2) напрямую скомбинировались в оптимальное решение.

Планирование маршрута доставки

Claude
Метод Thought Propagation.

Задача: Курьер должен доставить заказы в 6 точек города и вернуться на базу. Время между точками (минуты):
База—A: 10, База—B: 15, A—B: 8, A—C: 12, B—C: 5, B—D: 10, C—D: 7, C—E: 9, D—E: 4, D—F: 6, E—F: 11, F—База: 20.

Найди маршрут, близкий к оптимальному.

Шаг 1: Предложи аналогичные подзадачи.
Шаг 2: Реши их.
Шаг 3: Собери общий маршрут.
Ответ модели

Шаг 1: Аналогичные подзадачи

  1. Оптимальный порядок для кластера {A, B, C} (ближе к базе)
  2. Оптимальный порядок для кластера {D, E, F} (дальше от базы)
  3. Лучшая связка между кластерами

Шаг 2: Решение подзадач

Кластер 1 {A, B, C}:

  • A → B → C: 8 + 5 = 13
  • B → A → C: 8 + 12 = 20
  • A → C → B: 12 + 5 = 17
  • Лучший: A → B → C (13 мин)

Кластер 2 {D, E, F}:

  • D → E → F: 4 + 11 = 15
  • D → F → E: 6 + 11 = 17
  • E → D → F: 4 + 6 = 10
  • Лучший: E → D → F (10 мин) или D → E затем F

Связка: C → D = 7 (единственное прямое ребро между кластерами)

Шаг 3: Сборка маршрута

База → A → B → C → D → E → ... нет прямого E→F=11 База → A → B → C → D → F → ... нет пути F→E без возврата

Оптимальный вариант: База → A(10) → B(8) → C(5) → D(7) → E(4) → F(11) → База(20) = 65 мин

Альтернатива: База → A(10) → B(8) → C(5) → D(7) → F(6) → E(11) → База — нет ребра E→База

Маршрут: База → A → B → C → D → E → F → База = 65 минут.

Решения кластеров (A→B→C = 13 мин, связка C→D = 7, D→E→F = 15) собрались в полный маршрут.

Анализ сложной системы

Gemini
Используй Thought Propagation.

Задача: Оцени узкие места в микросервисной архитектуре:
- API Gateway → Auth Service → User Service → DB
- API Gateway → Product Service → DB
- API Gateway → Order Service → User Service, Product Service → Payment Service → DB

Шаг 1: Найди аналогичные подзадачи.
Шаг 2: Проанализируй каждую.
Шаг 3: Перенеси выводы на всю систему.
Ответ модели

Шаг 1: Аналогичные подзадачи

  1. Анализ цепочки аутентификации: Gateway → Auth → User → DB
  2. Анализ цепочки заказов: Gateway → Order → (User, Product) → Payment → DB
  3. Общие зависимости (shared services)

Шаг 2: Решение подзадач

Подзадача 1 — цепочка аутентификации:

  • Глубина: 4 хопа — каждый добавляет латентность
  • Узкое место: User Service вызывается при КАЖДОМ запросе
  • Решение-аналогия: кэширование токенов в Gateway, JWT без обращения к User Service

Подзадача 2 — цепочка заказов:

  • Глубина: 5 хопов — самая длинная цепочка
  • Узкое место: Order Service ждёт ОБА сервиса (User + Product) последовательно
  • Решение-аналогия: параллельные запросы к User и Product, saga pattern для Payment

Подзадача 3 — общие зависимости:

  • User Service используется и в Auth, и в Order — single point of failure
  • DB — единая точка для всех сервисов

Шаг 3: Распространение на всю систему

Переношу решения подзадач:

  1. User Service — главное узкое место (вывод из подзадач 1 и 3): используется в 2 из 3 цепочек, падение блокирует и аутентификацию, и заказы → нужна репликация + circuit breaker
  2. Латентность цепочки заказов (вывод из подзадачи 2): параллелизация User+Product запросов сократит время на 40-50%
  3. DB (вывод из подзадачи 3): все цепочки упираются в DB → рассмотреть read replicas и CQRS
  4. API Gateway (синтез всех подзадач): единая точка входа, нужны rate limiting + bulkhead pattern для изоляции цепочек

Сравнение с CoT и ToT

Точность на задачах о графах (кратчайший путь): GPT-4
Standard (IO)29%
Chain of Thought36%
Tree of Thoughts43%
Thought Propagation82%

По данным Yu et al. (2023), Thought Propagation показывает самый значительный прирост на задачах с графовой структурой — +46% по сравнению с CoT на задаче поиска кратчайшего пути. Это объясняется тем, что графовые задачи естественно декомпозируются на подзадачи с одинаковой структурой, и решения подзадач напрямую переносятся на исходную задачу.

Эффективность Thought Propagation напрямую зависит от того, насколько задача допускает декомпозицию на аналогичные подзадачи. Для задач без повторяющейся структуры (написание эссе, генерация кода с уникальной логикой) прирост минимален.

Как понимать Thought Propagation в 2026

Сегодня TP логично ставить рядом с:

  • analogical prompting
  • case-based reasoning
  • retrieval of solved exemplars
  • memory systems, где агент переиспользует старые решения

То есть это уже не только prompting-техника из paper-а, а более общий принцип reuse. Если в вашей системе регулярно встречаются задачи с одинаковым шаблоном решения, TP даёт язык, как это reuse организовать.

Где техника реально окупается

Сильнее всего Thought Propagation работает там, где:

  • есть повторяющиеся подструктуры и локальные аналоги
  • решение большой задачи можно собрать из решений меньших
  • reuse паттернов дешевле, чем полный search с нуля

Поэтому техника хорошо ложится на graph problems, planning, workflow design, route composition, network analysis и другие domains, где подзадачи действительно похожи друг на друга.

Где техника переоценена

TP быстро теряет смысл, если:

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

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

Реализация в коде

Thought Propagation через OpenAI API

from openai import OpenAI

client = OpenAI()


def thought_propagation(
    task: str,
    n_analogies: int = 3,
    title: str = "gpt-4o",
) -> dict:
    """
    Thought Propagation: decompose → solve analogies → propagate.
    """
    # Шаг 1: Найти аналогичные подзадачи
    analogies_response = client.chat.completions.create(
        model=model,
        messages=[
            {
                "role": "system",
                "content": (
                    "Ты — эксперт по декомпозиции задач. "
                    "Найди аналогичные подзадачи, которые "
                    "проще исходной, но имеют ту же структуру."
                ),
            },
            {
                "role": "user",
                "content": (
                    f"Задача: {task}\n\n"
                    f"Предложи {n_analogies} аналогичных подзадач, "
                    "которые проще исходной, но имеют ту же "
                    "структуру решения. Для каждой объясни, "
                    "почему она аналогична."
                ),
            },
        ],
        temperature=0.3,
    )
    analogies = analogies_response.choices[0].message.content

    # Шаг 2: Решить аналогичные подзадачи
    solutions_response = client.chat.completions.create(
        model=model,
        messages=[
            {
                "role": "system",
                "content": (
                    "Ты — эксперт по решению задач. "
                    "Реши каждую подзадачу пошагово."
                ),
            },
            {
                "role": "user",
                "content": (
                    f"Исходная задача: {task}\n\n"
                    f"Аналогичные подзадачи:\n{analogies}\n\n"
                    "Реши каждую подзадачу пошагово. "
                    "Выяви паттерн решения."
                ),
            },
        ],
        temperature=0.2,
    )
    solutions = solutions_response.choices[0].message.content

    # Шаг 3: Распространить решения
    propagation_response = client.chat.completions.create(
        model=model,
        messages=[
            {
                "role": "system",
                "content": (
                    "Ты — эксперт по синтезу решений. "
                    "Перенеси решения подзадач на исходную "
                    "задачу, адаптируя и комбинируя их."
                ),
            },
            {
                "role": "user",
                "content": (
                    f"Исходная задача: {task}\n\n"
                    f"Решения аналогичных подзадач:\n{solutions}\n\n"
                    "Перенеси (propagate) решения подзадач на "
                    "исходную задачу. Объясни, как каждое "
                    "решение подзадачи вносит вклад в общий ответ."
                ),
            },
        ],
        temperature=0.2,
    )

    return {
        "analogies": analogies,
        "solutions": solutions,
        "final_answer": propagation_response.choices[0].message.content,
        "total_tokens": sum(
            r.usage.total_tokens
            for r in [
                analogies_response,
                solutions_response,
                propagation_response,
            ]
        ),
    }


result = thought_propagation(
    task=(
        "Найди кратчайший путь от узла S до узла T "
        "в графе: S-A:3, S-B:5, A-C:2, A-D:4, "
        "B-D:1, B-E:3, C-T:6, D-T:2, E-T:5."
    ),
)
print(result["final_answer"])

Итеративная версия с уточнением

def iterative_thought_propagation(
    task: str,
    max_iterations: int = 2,
    title: str = "gpt-4o",
) -> dict:
    """
    Итеративный TP: после первого прохода модель
    оценивает качество решения и при необходимости
    генерирует дополнительные аналогии.
    """
    client = OpenAI()
    history = []

    for i in range(max_iterations):
        context = (
            f"\n\nПредыдущие попытки:\n"
            + "\n".join(history)
            if history
            else ""
        )

        response = client.chat.completions.create(
            model=model,
            messages=[
                {
                    "role": "user",
                    "content": (
                        f"Задача: {task}{context}\n\n"
                        "1. Предложи 2-3 аналогичные подзадачи "
                        "(проще, но с той же структурой).\n"
                        "2. Реши каждую.\n"
                        "3. Перенеси решения на исходную задачу.\n"
                        "4. Оцени уверенность (0-100%).\n\n"
                        "Если уверенность < 80%, укажи, "
                        "какие аспекты требуют дополнительных "
                        "аналогий."
                    ),
                }
            ],
            temperature=0.3,
        )

        answer = response.choices[0].message.content
        history.append(f"Итерация {i + 1}: {answer[:500]}...")

        if "уверенность" in answer.lower() and any(
            f"{n}%" in answer for n in range(80, 101)
        ):
            break

    return {"answer": answer, "iterations": len(history)}

Когда использовать Thought Propagation

Плюсы

  • Кратный рост точности на графовых задачах — до +46% vs CoT
  • Переиспользование решений — одна аналогия может помочь в нескольких местах
  • Ошибки локализованы — неудачная аналогия не ломает остальные
  • Естественная параллелизация — аналогичные подзадачи можно решать одновременно
  • Совместим с другими техниками — внутри подзадач можно использовать CoT, ToT, Self-Consistency

Минусы

  • Требует 3 вызова API (3 шага) — дороже простого CoT
  • Неэффективен для задач без повторяющейся структуры
  • Качество зависит от правильного выбора аналогий — плохие аналогии ухудшают результат
  • Сложнее в реализации, чем одношаговые техники
  • Шаг propagation — самый сложный: модель должна корректно скомбинировать решения подзадач
СценарийРекомендация
Графы, сети, маршрутыThought Propagation — лучший выбор
Планирование с повторяющимися этапамиThought Propagation или Plan-and-Solve
Анализ сложных систем (микросервисы, бизнес-процессы)Thought Propagation для декомпозиции
Математика без графовой структурыCoT или Self-Consistency эффективнее
Творческие задачиИспользуйте другие техники (Analogical Prompting, Generated Knowledge)

Связанные техники

  • Chain of Thought — линейное рассуждение; Thought Propagation расширяет его аналогиями
  • Tree of Thoughts — ветвящийся поиск; TP добавляет переиспользование решений между ветвями
  • Graph of Thoughts — граф мыслей с операциями объединения; TP фокусируется на аналогиях
  • Analogical Prompting — самогенерация примеров; TP идёт дальше — решает аналогии и переносит решения
  • Buffer of Thoughts — библиотека шаблонов мышления; TP генерирует аналогии динамически под задачу
  • Least-to-Most — декомпозиция от простого к сложному; TP декомпозирует по аналогии, а не по сложности

Проверьте себя

Проверьте себя

1. Какой ключевой шаг отличает Thought Propagation от обычного Chain of Thought?

2. Для какого типа задач Thought Propagation показывает наибольший прирост точности?

3. Чем Thought Propagation отличается от Analogical Prompting?