English translation is not available yet. Showing Russian content.

Как вы проектируете промпт для long context рассуждения (CoT, ToT, GoT)?

Краткий тезис

Проектирование промпта для длинного контекста с рассуждениями — это баланс между структурой, контролем внимания и гибкостью. Chain-of-Thought (CoT) даёт линейное пошаговое мышление, Tree-of-Thoughts (ToT) — ветвление с backtracking, Graph-of-Thoughts (GoT) — произвольные связи между идеями. Для long context критичны: явная нумерация шагов, чекпоинты для проверки забытых фактов, разделители и инструкции по работе с большим объёмом текста. Промпт должен не только задавать метод рассуждения, но и управлять тем, как модель обрабатывает длинный контекст (lost in the middle, attention sink).


1. Термин: Long context рассуждение (long context reasoning)

Long context — это ситуация, когда входной промпт содержит большой объём текста (тысячи токенов), например, несколько документов, логов или диалогов. Рассуждение (reasoning)способность модели делать логические выводы, решать задачи, комбинируя информацию из контекста.

Проблемы long context:

  • Lost in the middle — модель хуже запоминает информацию из середины контекста.
  • Attention sink — модель фокусируется на первых токенах, игнорируя остальные.
  • Усталость от длины — качество рассуждения падает при слишком длинном вводе.

Промпт для long context должен компенсировать эти эффекты, структурируя процесс мышления и заставляя модель активно обращаться к разным частям контекста.


2. Chain-of-Thought (CoT) — линейное рассуждение

CoT — это техника, при которой модель просят разбить задачу на последовательные шаги и объяснять каждый. Классический промпт: «Let's think step by step».

Проектирование промпта CoT для long context

  1. Явная нумерация шагов: «Шаг 1: ... Шаг 2: ...». Это помогает модели не сбиться.
  2. Чекпоинты: «После каждого шага кратко резюмируй, что ты уже узнал из контекста». Это снижает риск забыть предыдущие выводы.
  3. Указание на контекст: «Используй только информацию из предоставленного текста. Если ответа нет, скажи "недостаточно данных"».
  4. Формат вывода: «В конце напиши итоговый ответ в формате: Ответ: ...».

Пример промпта:

У тебя есть следующий длинный текст (разделён на части). Ответь на вопрос, следуя шагам:
Шаг 1: Выпиши все факты, относящиеся к вопросу, с указанием номера части.
Шаг 2: Сделай промежуточный вывод.
Шаг 3: Проверь, не противоречит ли вывод другим частям текста.
Шаг 4: Дай финальный ответ.

Текст:
[часть 1]
[часть 2]
...

Когда использовать CoT: задачи с чёткой логической цепочкой (математика, анализ последовательности событий), когда контекст не слишком разрознен.


3. Tree-of-Thoughts (ToT) — ветвящееся рассуждение

ToT — расширение CoT, где модель генерирует несколько альтернативных путей рассуждения (ветвей), оценивает их и выбирает лучший, с возможностью backtracking (возврата к предыдущему узлу).

Проектирование промпта ToT для long context

  1. Определение дерева: «Разбей задачу на несколько возможных подходов. Для каждого подхода опиши шаги. Оцени вероятность успеха каждого подхода (0–1)».
  2. Backtracking: «Если текущая ветвь заходит в тупик (противоречие с контекстом), вернись к предыдущему узлу и попробуй другой путь».
  3. Управление контекстом: «Для каждой ветви явно указывай, какие части длинного текста ты используешь».
  4. Ограничение глубины: «Максимальная глубина дерева — 3 уровня, чтобы не перегружать контекст».

Пример промпта:

Задача: ответить на вопрос, используя длинный текст. Построй дерево рассуждений:
- Узел 1: первый возможный подход (опиши).
  - Узел 1.1: шаги внутри подхода.
  - Узел 1.2: оценка (0–1).
- Узел 2: второй подход.
  - ...
После построения выбери ветвь с наибольшей оценкой и дай финальный ответ.
Если ни одна ветвь не приводит к ответу, вернись к корню и предложи новый подход.

Текст: ...

Когда использовать ToT: задачи с неоднозначностью, где нужно рассмотреть несколько гипотез (планирование, креативное решение проблем, анализ сценариев).


4. Graph-of-Thoughts (GoT) — графовое рассуждение

GoT — наиболее гибкий метод: рассуждение представляется как граф, где узлы — идеи/факты, а рёбра — связи (причина-следствие, поддержка, противоречие). Модель может комбинировать узлы из разных частей контекста.

Проектирование промпта GoT для long context

  1. Извлечение узлов: «Из каждого абзаца текста выдели ключевой факт (узел). Присвой ему ID».
  2. Построение связей: «Соедини узлы, если один факт подтверждает или опровергает другой. Укажи тип связи».
  3. Синтез: «На основе графа сформулируй ответ, используя цепочки узлов».
  4. Управление размером графа: «Если узлов больше 20, сгруппируй их по темам».

Пример промпта:

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

Текст: ...

Когда использовать GoT: задачи, требующие синтеза из разрозненных источников (сравнение документов, выявление противоречий, комплексный анализ).


5. Сравнение CoT, ToT, GoT

ХарактеристикаCoTToTGoT
СтруктураЛинейнаяДревовиднаяГрафовая
ГибкостьНизкаяСредняяВысокая
Управление backtrackingНетЕстьЕсть (через рёбра)
Сложность промптаНизкаяСредняяВысокая
Риск потери контекстаСреднийНизкий (ветви изолированы)Низкий (узлы явно связаны)
Лучший сценарийПоследовательные задачиМноговариантные задачиСинтез из многих источников

6. Техники для long context в промптах

6.1 Структурирование контекста

  • Разделяй длинный текст на части с заголовками: [ЧАСТЬ 1], [ЧАСТЬ 2].
  • Используй маркеры: === НАЧАЛО ДОКУМЕНТА === и === КОНЕЦ ДОКУМЕНТА ===.
  • В начале промпта дай краткое оглавление: «Текст состоит из 5 разделов: A, B, C, D, E».

6.2 Чекпоинты и резюме

  • «После каждого третьего шага напиши краткое резюме того, что ты узнал».
  • «Если ты ссылаешься на факт, укажи его источник (часть текста)».

6.3 Управление вниманием

  • «Обрати особое внимание на части 2 и 4 — они содержат ключевую информацию».
  • «Перед ответом перечисли все факты, которые ты использовал, с номерами строк».

6.4 Обработка lost in the middle

  • «При анализе длинного текста сначала прочитай начало и конец, затем середину».
  • «Повтори ключевые факты из середины текста, чтобы не забыть их».

6.5 Ограничение длины вывода

  • «Твой ответ должен быть не длиннее 500 токенов».
  • «Каждый шаг рассуждения — не более 2 предложений».

7. Пример промпта для long context CoT с чекпоинтами

Ты — аналитик, работающий с большим документом. Твоя задача — ответить на вопрос, используя только предоставленный текст.

Инструкция:
1. Прочитай весь текст. Он разделён на части маркерами [ЧАСТЬ N].
2. Начни рассуждение: «Шаг 1: ...» — выпиши все факты, относящиеся к вопросу, с указанием части.
3. После Шага 1 сделай чекпоинт: «Резюме: ...» — кратко перечисли найденные факты.
4. Шаг 2: сделай промежуточный вывод на основе фактов.
5. Чекпоинт: проверь, не противоречит ли вывод другим частям текста. Если да — исправь.
6. Шаг 3: дай финальный ответ в формате: «Ответ: ...».

Текст:
[ЧАСТЬ 1] ... 
[ЧАСТЬ 2] ...
[ЧАСТЬ 3] ...
[ЧАСТЬ 4] ...

Вопрос: ...

8. Проблемы и их решения

ПроблемаРешение в промпте
Модель забывает серединуЯвные чекпоинты, резюме после каждого блока
Модель галлюцинирует«Используй только факты из текста. Если факта нет — скажи "нет данных"»
Ветви ToT слишком глубокиеОграничение глубины (max_depth=3)
Граф GoT становится огромнымГруппировка узлов по темам, ограничение количества узлов
Модель не следует структуреFew-shot примеры: показать 1–2 примера правильного рассуждения

9. Инструменты и фреймворки

  • LangChain — поддерживает CoT через ChainOfThoughtPrompt, ToT через TreeOfThoughts, GoT через GraphOfThoughts (экспериментально).
  • OpenAI API — можно реализовать вручную, используя system и user сообщения.
  • Guidance — библиотека для управления генерацией, позволяет задавать структуру.
  • DSPy — автоматическая оптимизация промптов для рассуждений.

Пет-проект для закрепления

Задача: Создать систему, которая анализирует длинный юридический документ (например, договор на 50 страниц) и отвечает на сложные вопросы, используя CoT, ToT и GoT.

Инструменты: Python, OpenAI API (gpt-4-turbo с 128k контекстом), LangChain, Streamlit для UI.

Шаги:

  1. Разбей документ на части (по 2000 токенов) с помощью RecursiveCharacterTextSplitter.
  2. Реализуй три варианта промпта (CoT, ToT, GoT) с чекпоинтами и управлением контекстом.
  3. Для каждого вопроса запусти все три метода и сравни ответы.
  4. Добавь метрики: время выполнения, количество токенов, оценку качества (вручную или через LLM-as-judge).
  5. Выведи результаты в Streamlit-дашборде.

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


Связь с другими вопросами

ВопросТема
635Как проектировать AI-агента с RAG?
637Какие инструменты (tools) вы даёте агенту?
639Как агент планирует последовательность действий?
642Как агент рефлексирует над своими ошибками?
645Как оценивать качество работы агента?

Навигация