Tree of Thoughts (ToT)

[object Object]

Tree of Thoughts (дерево мыслей) — паттерн deliberate search, в котором система рассматривает несколько альтернативных путей рассуждения, оценивает их и продолжает только перспективные ветки. В 2026 его полезно воспринимать уже не как чисто prompt-технику, а как search orchestration pattern: реальная сила ToT появляется там, где дерево живёт во внешнем workflow, а не только в одном длинном ответе модели.

Представьте, что вы решаете сложную задачу и рассматриваете несколько вариантов: «Можно пойти так... а можно вот так». Вы мысленно прикидываете, куда приведёт каждый путь, и выбираете лучший. Tree of Thoughts заставляет модель делать то же самое — не идти по первому попавшемуся пути, а исследовать несколько вариантов.

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

Tree of Thoughts — это когда модель не просто рассуждает по шагам (как в CoT), а рассматривает несколько вариантов на каждом шаге, оценивает их перспективность и может отказаться от тупикового пути и вернуться к другому.

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

ПромптClaude Sonnet 4
Задача: Придумай план автоматизации рутинных задач для маленькой пекарни. Бюджет ограничен.

Используй подход «дерево мыслей»:
1. Предложи 3 разных направления автоматизации
2. Для каждого оцени: стоимость, эффект, сложность внедрения
3. Выбери лучший вариант и обоснуй
Ответ модели

Направление 1: Автоматизация заказов (онлайн-форма + уведомления)

  • Стоимость: низкая (бесплатные инструменты)
  • Эффект: средний (экономия 1-2 часа/день)
  • Сложность: низкая
  • Оценка: перспективно

Направление 2: Автоматизация учёта (1С или аналог)

  • Стоимость: средняя (подписка + настройка)
  • Эффект: высокий (полная прозрачность финансов)
  • Сложность: средняя
  • Оценка: перспективно, но не первый приоритет

Направление 3: Роботизация производства (тестомес с автоуправлением)

  • Стоимость: высокая (оборудование)
  • Эффект: высокий при масштабе
  • Сложность: высокая
  • Оценка: не подходит при ограниченном бюджете ✗

Вывод: Начать с Направления 1 (автоматизация заказов) — минимальные вложения, быстрый результат. Затем переходить к Направлению 2.

Подходит для: сложных задач планирования, креативных задач, задач с несколькими возможными решениями, стратегического анализа.

Зачем нужно Tree of Thoughts

Chain of Thought — мощная техника, но у неё есть ограничение: модель идёт по одному пути рассуждения. Если на каком-то шаге она выбрала неверное направление — вся цепочка может привести к ошибке. Возможности вернуться и попробовать другой путь нет.

Tree of Thoughts решает эту проблему тремя способами:

Как это работает

Yao et al. (2023) формализовали подход, используя два классических алгоритма обхода дерева:

BFS (Breadth-First Search, поиск в ширину) — модель рассматривает все варианты на текущем уровне, оценивает их, оставляет лучшие и переходит к следующему уровню. Хорошо, когда нужно сравнить много вариантов.

DFS (Depth-First Search, поиск в глубину) — модель углубляется по одному пути до конца, и если он тупиковый — возвращается. Хорошо, когда нужно быстро найти хоть какое-то решение.

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

Сегодня Tree of Thoughts важен скорее как архитектурный шаблон:

  • внешний рантайм управляет деревом;
  • модель предлагает продолжения веток;
  • evaluator или judge помогает prune-ить пространство;
  • человек или система выбирает stop condition.

Именно поэтому ToT лучше сочетается с workflow engines, traces и evals, чем с идеей "один очень длинный суперпромпт". Сам по себе prompt-only ToT возможен, но его предел наступает быстро.

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

Головоломка: «Игра в 24»

Классический пример из оригинальной статьи — из четырёх чисел получить 24, используя арифметические операции.

ПромптClaude Sonnet 4
Задача: из чисел 4, 7, 8, 8 получи ровно 24, используя +, −, ×, ÷. Каждое число используй ровно один раз.

Используй метод дерева мыслей:
- Предложи 3 начальных варианта (какие два числа объединить первыми)
- Оцени каждый: какой ближе к цели?
- Продолжи самый перспективный
Ответ модели

Ветвь A: Начнём с 8 ÷ 8 = 1 → Остались: 4, 7, 1 → 4 × 7 × 1 = 28 ≠ 24 → (7 − 1) × 4 = 24 ✓ Оценка: решение найдено!

Ветвь B: Начнём с 7 − 4 = 3 → Остались: 3, 8, 8 → 3 × 8 = 24, но тогда 8 не использовано → 8 × 3 − 8 = 16 ≠ 24 → 8 × (8 − 3) = 40 ≠ 24 Оценка: тупик ✗

Ветвь C: Начнём с 8 × 4 = 32 → Остались: 32, 7, 8 → 32 − 7 − 8 = 17 ≠ 24 → 32 − 8 = 24, но тогда 7 не использовано Оценка: тупик ✗

Ответ: (7 − 8 ÷ 8) × 4 = (7 − 1) × 4 = 24

Стратегическое планирование

ПромптChatGPT
Задача: IT-стартап хочет выйти на рынок за 6 месяцев с бюджетом 3 млн руб.

Применяй дерево мыслей:
1. Предложи 3 стратегии вывода продукта
2. Для каждой оцени: укладывается ли в бюджет? Реально ли за 6 месяцев? Каков риск?
3. Отсеки нежизнеспособные, выбери лучшую
Ответ модели

Стратегия 1: MVP + запуск через Product Hunt и Telegram-каналы

  • Бюджет: ~1.5 млн (разработка MVP + маркетинг)
  • Сроки: 4-5 месяцев — укладывается ✓
  • Риск: средний (зависим от виральности)
  • Оценка: перспективно, продолжаем

Стратегия 2: Полноценный продукт + партнёрства с компаниями

  • Бюджет: ~5 млн (разработка + B2B-продажи)
  • Сроки: 8-10 месяцев
  • Риск: высокий (не укладываемся ни в бюджет, ни в сроки)
  • Оценка: не подходит ✗

Стратегия 3: White-label на базе существующего решения + кастомизация

  • Бюджет: ~2 млн (лицензия + кастомизация + маркетинг)
  • Сроки: 3-4 месяца — отлично ✓
  • Риск: средний (зависимость от платформы)
  • Оценка: перспективно, но есть зависимость

Сравнение перспективных (1 vs 3):

  • Стратегия 1: больше контроля, но выше трудоёмкость
  • Стратегия 3: быстрее, но зависимость от вендора

Рекомендация: Стратегия 1 (MVP + виральный маркетинг). Больше контроля, развиваемая архитектура, укладывается в бюджет.

Креативная задача

ПромптClaude Sonnet 4
Придумай название для приложения по изучению иностранных языков.

Используй дерево мыслей:
1. Предложи 3 концепции названия (разные подходы)
2. Для каждой сгенерируй 2 варианта
3. Оцени все по критериям: запоминаемость, доступность домена, ассоциации
4. Выбери лучший
Ответ модели

Концепция A: Метафора путешествия

  • LinguaTrip → запоминается, но LinguaTrip уже занято ✗
  • WordWay → просто, но слишком общее
  • Оценка: средняя

Концепция B: Игровая/дружелюбная

  • Болтай (Boltai) → ассоциация с разговором, уникально ✓
  • Слововорот → креативно, но длинное
  • Оценка: перспективно

Концепция C: Образовательная/серьёзная

  • LangCore → звучит технически, не для массовой аудитории
  • СловоМастер → понятно, но скучновато
  • Оценка: слабая

Финальная оценка:

  • Болтай: запоминаемость 9/10, уникальность 8/10, ассоциации 9/10
  • WordWay: запоминаемость 6/10, уникальность 4/10, ассоциации 5/10

Рекомендация: «Болтай» — запоминается, ассоциируется с разговорной практикой, подходит для русскоязычной аудитории.

Сравнение: CoT vs Tree of Thoughts

Chain of Thought (одна цепочка)
Модель выбирает одно направление и идёт по нему до конца. Если ошиблась на раннем шаге — результат будет неверным. Нет возможности вернуться.
Tree of Thoughts (дерево вариантов)
Модель рассматривает несколько вариантов на каждом шаге, оценивает перспективность, отсекает тупиковые ветви и может вернуться к другому пути.

Когда использовать Tree of Thoughts

Плюсы

  • Значительно повышает качество на сложных задачах с поиском решения
  • Возможность backtracking — возврата из тупиковых путей
  • Прозрачный процесс — видно все рассмотренные варианты
  • Подходит для творческих, стратегических и аналитических задач
  • Снижает вероятность 'застревания' на неверном пути

Минусы

  • Значительно больше токенов — каждая ветвь стоит денег
  • Сложнее в реализации, чем обычный CoT
  • Избыточен для простых задач с одним решением
  • Требует нескольких вызовов API (для генерации и оценки)
  • Медленнее — больше времени на генерацию

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

Практически техника оправдана там, где:

  • есть несколько правдоподобных путей решения;
  • цена ошибки заметна;
  • search важнее обычной fluent generation;
  • можно формализовать branch scoring.

Это хороший fit для:

  • planning;
  • constrained search;
  • architecture alternatives;
  • puzzle-like tasks;
  • сложных decision workflows.

Он обычно не нужен для:

  • summarization;
  • extraction;
  • обычного customer support;
  • задач, где ответ либо очевиден, либо лучше решается retrieval plus verification.
Не используйте Tree of Thoughts для задач, где ответ очевиден. Если задача решается одной цепочкой рассуждений — Chain of Thought достаточно. ToT нужен, когда есть несколько возможных путей, и неочевидно, какой из них правильный.

Связь с другими техниками

ТехникаПутей рассужденияВозвратСложность
Zero-shot CoT1НетМинимальная
Chain of Thought1НетНизкая
Self-ConsistencyНесколько, независимоНетСредняя
Tree of ThoughtsНесколько, с оценкойДаВысокая

Техническая реализация

Базовый ToT через промпт (без кода)

Для разовых задач ToT можно реализовать через один промпт — просто попросите модель рассмотреть несколько вариантов.

from openai import OpenAI

client = OpenAI()

def tree_of_thoughts_simple(task: str) -> str:
    """Tree of Thoughts через один промпт."""
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {
                "role": "system",
                "content": (
                    "Ты решаешь задачи методом дерева мыслей. "
                    "На каждом шаге:\n"
                    "1. Предложи 2-3 варианта действий\n"
                    "2. Оцени перспективность каждого "
                    "(перспективно / возможно / тупик)\n"
                    "3. Продолжи только перспективные\n"
                    "4. Если все тупиковые — вернись на шаг назад\n"
                    "В конце выбери лучший путь."
                ),
            },
            {"role": "user", "content": task},
        ],
        temperature=0.7,
    )
    return response.choices[0].message.content

result = tree_of_thoughts_simple(
    "Из чисел 2, 5, 6, 11 получи ровно 24, "
    "используя +, −, ×, ÷. Каждое число — один раз."
)
print(result)

Программный ToT с BFS (Anthropic)

import anthropic

client = anthropic.Anthropic()


def generate_thoughts(
    task: str, current_state: str, n: int = 3
) -> list[str]:
    """Генерация n вариантов следующего шага."""
    message = client.messages.create(
        model="claude-sonnet-4-20250514",
        max_tokens=1024,
        messages=[
            {
                "role": "user",
                "content": (
                    f"Задача: {task}\n\n"
                    f"Текущее состояние:\n{current_state}\n\n"
                    f"Предложи ровно {n} различных варианта "
                    "следующего шага. Каждый вариант на новой "
                    "строке, начиная с номера (1., 2., 3.)."
                ),
            }
        ],
    )
    text = message.content[0].text
    thoughts = []
    for line in text.strip().split("\n"):
        line = line.strip()
        if line and line[0].isdigit():
            # Убираем номер в начале
            thought = line.lstrip("0123456789.)- ").strip()
            if thought:
                thoughts.append(thought)
    return thoughts[:n]


def evaluate_thought(
    task: str, thought: str
) -> float:
    """Оценка перспективности варианта (0.0 — 1.0)."""
    message = client.messages.create(
        model="claude-sonnet-4-20250514",
        max_tokens=128,
        messages=[
            {
                "role": "user",
                "content": (
                    f"Задача: {task}\n\n"
                    f"Предложенный шаг: {thought}\n\n"
                    "Оцени перспективность этого шага "
                    "для решения задачи. Ответь одним словом:\n"
                    "- 'отлично' (очень перспективно)\n"
                    "- 'хорошо' (может привести к решению)\n"
                    "- 'плохо' (скорее тупик)"
                ),
            }
        ],
    )
    text = message.content[0].text.strip().lower()
    if "отлично" in text:
        return 1.0
    elif "хорошо" in text:
        return 0.5
    return 0.0


def tree_of_thoughts_bfs(
    task: str,
    max_depth: int = 3,
    beam_width: int = 2,
    n_thoughts: int = 3,
) -> str:
    """
    Tree of Thoughts с BFS (поиск в ширину).

    На каждом уровне:
    1. Для каждого текущего пути генерируем n_thoughts вариантов
    2. Оцениваем все варианты
    3. Оставляем beam_width лучших
    """
    # Начальное состояние
    current_paths = [("Начало решения.", 1.0)]

    for depth in range(max_depth):
        candidates = []

        for path, score in current_paths:
            thoughts = generate_thoughts(task, path, n_thoughts)

            for thought in thoughts:
                new_path = f"{path}\nШаг {depth + 1}: {thought}"
                thought_score = evaluate_thought(task, new_path)
                candidates.append((new_path, thought_score))

        # Оставляем лучшие
        candidates.sort(key=lambda x: x[1], reverse=True)
        current_paths = candidates[:beam_width]

        if not current_paths:
            break

    # Возвращаем лучший путь
    best_path = current_paths[0][0] if current_paths else "Решение не найдено."
    return best_path


result = tree_of_thoughts_bfs(
    task="Придумай маркетинговую стратегию для запуска онлайн-курса по Python",
    max_depth=3,
    beam_width=2,
    n_thoughts=3,
)
print(result)
Не устанавливайте слишком большие значения beam_width и max_depth. Каждый шаг — это вызов API. При beam_width=3 и max_depth=4 вы получите десятки вызовов, что дорого и медленно. Начинайте с beam_width=2, max_depth=3.

Что мерить кроме accuracy

Для ToT полезно отдельно смотреть:

  • branch count per solved task;
  • prune rate;
  • cost per accepted answer;
  • latency tail;
  • долю случаев, где лучший путь нашёлся только после backtracking.

Без этих метрик ToT легко выглядит "умнее", чем есть на самом деле, потому что команда видит только красивый trace, но не цену его появления.

Оценка эффективности

Успешность решения задачи 'Игра в 24' (GPT-4)
Стандартный промпт7%
Chain of Thought4%
CoT + Self-Consistency (k=100)9%
Tree of Thoughts (BFS, b=5)74%

На задаче «Игра в 24» (данные из оригинальной статьи Yao et al.) Tree of Thoughts превосходит все другие техники с огромным отрывом. Это задача, где критичны поиск и backtracking — именно то, для чего создан ToT.

Когда ToT оправдан в продакшене

  • Задачи планирования — маршруты, стратегии, архитектурные решения
  • Творческие задачи — нейминг, сценарии, дизайн-концепции
  • Головоломки и поиск — задачи с перебором вариантов
  • Критические решения — когда цена ошибки высока и нужно рассмотреть альтернативы

Для типовых задач (классификация, суммаризация, перевод) ToT избыточен. Используйте CoT или Zero-shot.

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

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

1. Чем Tree of Thoughts отличается от Chain of Thought?

2. Что такое BFS в контексте Tree of Thoughts?

3. Для каких задач Tree of Thoughts наиболее эффективен?