TL;DR
Thought Templates — техника для long-context моделей, которая разделяет "как думать" (шаблоны рассуждений) и "что знать" (документы с фактами). Вместо того чтобы просто загружать тысячи документов в промпт и надеяться что модель сама разберётся, вы даёте ей готовые паттерны как связывать факты между собой. Модель сама выбирает нужные шаблоны и комбинирует их под конкретный вопрос.
Long-context модели (Claude, Gemini, GPT) могут держать в памяти сотни тысяч токенов, но плохо справляются с многошаговыми рассуждениями. Проблема не в объёме контекста — проблема в отсутствии структуры. Когда в промпт загружают 800 документов, модель видит факты, но не знает как их связать: сначала найти автора → потом место смерти → потом событие в этом месте. Она теряет нить рассуждений между шагами.
Метод работает так: вы создаёте базу шаблонов (10-50 штук) из примеров задач. Каждый шаблон — это описание типового паттерна: "как найти автора произведения", "как связать человека с местом", "как сопоставить два события". При запросе модель получает вопрос + шаблоны + документы, сама определяет какие шаблоны применимы и композирует их в цепочку рассуждений. Шаблоны можно итеративно улучшать через текстовый feedback — модель анализирует ошибки и переписывает слабые шаблоны.
Схема метода
Этап 1: Создание базы шаблонов (один раз)
- Берёте 10-50 примеров вопросов с ответами из вашей области
- Просите LLM создать шаблоны рассуждений: название + описание + шаги
- Сохраняете в "базу шаблонов"
Этап 2: Применение (каждый запрос)
- Подставляете в промпт: вопрос + ВСЕ шаблоны + документы
- Модель сама выбирает 2-4 нужных шаблона
- Применяет их последовательно, связывая факты
- Выдаёт ответ с указанием какие шаблоны использовала
Этап 3: Улучшение шаблонов (периодически, опционально)
- Собираете ошибки модели
- Просите другую LLM проанализировать что не так с шаблоном
- Получаете feedback на естественном языке
- Обновляете слабые шаблоны
Пример применения
Задача: Помочь юристу проанализировать сложный кейс с жильём в Москве. Клиент купил квартиру в 2020, оказалась долевая — теперь жалуется сосед что ремонт нарушает его права. Нужно связать Жилищный Кодекс + судебную практику + локальные постановления Москвы.
Промпт:
Вопрос: Имеет ли сосед право запретить ремонт в долевой собственности если работы не затрагивают общее имущество но создают шум в дневное время?
База шаблонов рассуждений:
Шаблон 1: Поиск применимой нормы закона
Описание: Найти статью закона которая регулирует конкретную ситуацию
Шаги:
1. Определить область права (гражданское, жилищное, административное)
2. Найти соответствующий кодекс
3. Определить ключевые термины из ситуации
4. Сопоставить с формулировками статей
Шаблон 2: Связь нормы с правоприменительной практикой
Описание: Понять как норма работает на практике через судебные решения
Шаги:
1. Взять найденную статью закона
2. Найти релевантные судебные дела
3. Выделить как суды трактуют эту норму
4. Определить есть ли исключения или особые условия
Шаблон 3: Применение локальных уточнений
Описание: Учесть региональные правила которые дополняют федеральный закон
Шаги:
1. Определить регион (город, область)
2. Найти местные постановления по теме
3. Проверить не противоречат ли они федеральному закону
4. Включить дополнительные требования
Документы:
[Жилищный Кодекс РФ]
[3 судебных решения по долевой собственности]
[Постановление Правительства Москвы о ремонте]
Задача: Примени нужные шаблоны последовательно. Для каждого шага укажи:
- Какой шаблон используешь (номер + название)
- Что делаешь на этом шаге
- Какой промежуточный результат
Финальный ответ: краткий вывод с обоснованием.
Результат: Модель покажет 3 шага с явными ссылками на шаблоны:
- Шаблон 1 → находит ст. 30 ЖК РФ о пользовании жилым помещением
- Шаблон 2 → ссылается на дело №33-2451/2019 где суд разделил "общее имущество" и "личное пространство"
- Шаблон 3 → применяет постановление Москвы о "тихих часах"
Финальный ответ будет структурированным: "Сосед НЕ может запретить, но может требовать соблюдения графика. Основание: ЖК РФ + практика + постановление Москвы."
Почему это работает
Слабость LLM: Модели плохо справляются с неявной многошаговой логикой. Когда нужно связать факт A → вывод B → факт C → финальный ответ, они часто "теряют нить" или пропускают промежуточные шаги. В long-context это усугубляется — чем больше документов, тем сложнее понять КАК их связывать.
Сильная сторона LLM: Модели отлично следуют явным структурированным инструкциям. Если дать чёткий паттерн "сначала сделай X, потом Y, используя результат X", они выполнят точно. Проблема в том что обычно мы НЕ даём таких паттернов — мы просто говорим "вот документы, подумай сам".
Как метод использует сильную сторону: Thought Templates превращают неявное рассуждение в явное. Вместо "разберись сам в 800 документах" вы даёте готовые паттерны: "если нужно найти автора — шаблон 1, если связать с местом — шаблон 2". Модель сама композирует нужную цепочку, но следует чёткой структуре.
Рычаги управления промптом:
- Количество шаблонов: Начните с 5-10 базовых → добавляйте по мере роста сложности задач. Исследование показало что даже 25% шаблонов дают 80% эффекта.
- Композиционность: Разбивайте сложные паттерны на простые sub-шаблоны. Вместо одного "Полный анализ конкурента" сделайте 3: "Найти продукт" + "Найти цену" + "Сравнить с нашим". Это даёт гибкость.
- Явность инструкций: Если хотите видеть процесс рассуждений — добавьте "Для каждого шага объясни что делаешь". Если нужен только ответ — "Используй шаблоны молча, дай финальный результат".
- Feedback-цикл: После применения соберите ошибки → попросите другую сессию LLM: "Вот шаблон, вот ошибка, как его улучшить?" → обновите шаблон в базе.
Шаблон промпта
Задача: {описание задачи требующей многошагового рассуждения}
Переиспользуемые шаблоны рассуждений:
ШАБЛОН_{номер}: {Название шаблона}
Описание: {Что делает этот паттерн рассуждений}
Применимо когда: {В каких ситуациях использовать}
Шаги:
1. {Первый шаг}
2. {Второй шаг}
3. {Третий шаг}
Пример: Вопрос "{пример}" → "{как решить}"
[Повторить для каждого шаблона в базе]
Документы/контекст:
{все релевантные документы, данные, факты}
Инструкции:
1. Определи какие шаблоны из базы применимы к задаче
2. Примени их последовательно или композиционно
3. Для каждого использованного шаблона укажи:
- ШАБЛОН_{номер} | {Название}
- Что делаешь на этом шаге
- Промежуточный результат
4. Дай финальный ответ с обоснованием
Финальный ответ: {формат ответа}
Что подставлять:
{описание задачи}— ваш конкретный вопрос{номер}— порядковый номер шаблона (1, 2, 3...){Название},{Описание},{Шаги}— заполняется из вашей базы шаблонов{документы}— весь контекст который нужен для ответа{формат ответа}— что ожидаете получить (краткий вывод, развёрнутый анализ, список)
🚀 Быстрый старт — вставь в чат:
Мне нужно создать базу шаблонов рассуждений для задач типа: {опиши свою область}.
Вот 3-5 примеров типовых вопросов которые я решаю:
1. {пример вопроса 1}
2. {пример вопроса 2}
3. {пример вопроса 3}
Создай для меня 5-10 переиспользуемых шаблонов рассуждений в формате:
ШАБЛОН_N: Название
Описание: что делает
Применимо когда: в каких ситуациях
Шаги: [пронумерованный список]
Пример: вопрос → как решить
Сделай шаблоны композиционными — лучше 10 простых чем 3 сложных.
LLM проанализирует ваши примеры, выделит повторяющиеся паттерны рассуждений (поиск по категории, сравнение двух объектов, проверка условия и т.д.) и создаст готовую базу. Вы получите структурированный набор шаблонов который сразу можно использовать.
Ограничения
⚠️ Оверхед для простых задач: Если вопрос решается в один шаг ("Столица Франции?"), загрузка 15 шаблонов в промпт — избыточная трата токенов. Метод окупается на multi-hop рассуждениях где нужно связать 3+ факта.
⚠️ Требует создания базы: Перед применением нужно потратить время на создание 10-50 шаблонов. Для новой области придётся либо создавать с нуля, либо адаптировать существующие. Хотя это можно делегировать LLM (дать примеры → попросить создать шаблоны), первичная подготовка неизбежна.
⚠️ Токены на шаблоны: Каждый шаблон занимает 50-150 токенов. База из 30 шаблонов = ~3000 токенов в каждом запросе. На коротких контекстах это значимо, на long-context (128k+) — мелочь.
⚠️ Качество зависит от шаблонов: Если шаблоны плохо спроектированы (слишком абстрактные или слишком узкие), эффект слабый. Нужна итерация — создать → протестировать → улучшить.
Как исследовали
Команда из KAIST, Amazon и University of Minnesota проверила метод на четырёх бенчмарках для multi-hop вопросов: MuSiQue (общие знания), CRAG (сложные нестандартные запросы), FanOutQA (длинные Wikipedia-статьи) и Housing QA (юридические вопросы по недвижимости). Тестировали на топовых моделях: Claude Sonnet 4, Gemini 2.5 Flash, GPT-4.1 и open-source DeepSeek-R1.
Сравнивали с четырьмя baseline: (1) просто вопрос без контекста, (2) Chain-of-Thought ("подумай пошагово"), (3) Corpus-in-Context (загрузить все документы в промпт), (4) CIC + CoT (комбо). Результат: Thought Templates обошли все варианты на 5-10 F1 points в зависимости от датасета. На MuSiQue улучшение с 63.87 до 73.30, на CRAG с 17.32 до 30.08.
Удивительный вывод: Шаблоны созданные для одной модели (GPT) работают на других (Claude, Gemini, DeepSeek) почти без потери качества. Это значит база шаблонов — переиспользуемый актив, не привязанный к конкретной модели. Более того, даже 25% лучших шаблонов дают конкурентный результат — не нужно создавать сотни, достаточно 10-15 качественных.
Логика результатов: модели уже умеют рассуждать пошагово (CoT это показывает), но не знают КАКИЕ шаги применить в multi-hop задачах. Шаблоны дают недостающую структуру. Причём чем сложнее задача (больше шагов, разнороднее документы), тем сильнее эффект — на Housing QA (юридические запросы с 3-5 шагами) прирост максимальный.
Инсайт для практики: Если работаете с long-context моделями и сложными вопросами — инвестиция 2-3 часа в создание базы шаблонов окупается стабильным +10-15% к качеству ответов. База переносится между моделями и задачами, это не одноразовая трата времени.
Адаптации и экстраполяции
💡 Адаптация для одношаговых задач (упрощённая версия):
Для простых задач где multi-hop избыточен, можно использовать мини-версию с 3-5 шаблонами только для своей узкой области:
Задача: {вопрос из узкой области — например, SEO-аудит}
Мини-база шаблонов (только для SEO):
1. Технический анализ → проверить скорость/мобильность/индексацию
2. Контент-анализ → оценить качество/уникальность/структуру
3. Бэклинк-анализ → профиль ссылок/качество/анкоры
Сайт: {URL или данные}
Примени ВСЕ три шаблона последовательно, дай сводку по каждому.
Здесь нет выбора шаблонов — модель применяет все 3 как чек-лист. Это проще чем полная TOTAL, но сохраняет структуру.
🔧 Техника: превратить шаблоны в "агентов" → острее специализация
В оригинале шаблоны — это безликие паттерны. Но можно дать им роли для усиления эффекта:
Задача: {анализ стартапа}
Команда экспертов-шаблонов:
АГЕНТ "Финансовый аналитик" (ШАБЛОН_1):
Описание: Оценить unit-экономику и burn rate
Шаги: ...
АГЕНТ "Продуктовый стратег" (ШАБЛОН_2):
Описание: Проверить product-market fit
Шаги: ...
АГЕНТ "Конкурентный аналитик" (ШАБЛОН_3):
Описание: Сравнить с аналогами на рынке
Шаги: ...
Данные: {питч-дек стартапа}
Задача: Каждый агент даёт своё заключение. Потом сведи в общий вердикт.
Называя шаблоны "агентами" с ролями, вы активируете role-play механизм в LLM — модель сильнее держит фокус каждого шаблона на своей зоне.
💡 Экстраполяция: комбинация с Tree-of-Thoughts для "ветвления" решений
Если задача допускает несколько путей решения, можно комбинировать Thought Templates с Tree-of-Thoughts:
Задача: {сложная дилемма — например, куда вложить бюджет: маркетинг vs продукт}
Шаг 1: Определи 2-3 применимых шаблона из базы
Шаг 2: Для КАЖДОГО шаблона сгенерируй 2 варианта решения
Шаг 3: Оцени каждый вариант по критериям {список}
Шаг 4: Выбери лучший путь
База шаблонов: [вставить]
Данные: [вставить]
Это создаёт дерево вариантов (шаблон A → решение A1, A2; шаблон B → решение B1, B2) и выбирает оптимальное. Полезно когда один шаблон не даёт однозначного ответа.
Ресурсы
- "When Thoughts Meet Facts: Reusable Reasoning for Long-Context LMs"
- Soyeong Jeong, Taehee Jung, Sung Ju Hwang (KAIST), Joo-Kyung Kim (Amazon), Dongyeop Kang (University of Minnesota)
- Код: https://github.com/starsuzi/ToTAL
- Бенчмарк LOFT для long-context evaluation
