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: ... Шаг 2: ...». Это помогает модели не сбиться.
- Чекпоинты: «После каждого шага кратко резюмируй, что ты уже узнал из контекста». Это снижает риск забыть предыдущие выводы.
- Указание на контекст: «Используй только информацию из предоставленного текста. Если ответа нет, скажи "недостаточно данных"».
- Формат вывода: «В конце напиши итоговый ответ в формате: Ответ: ...».
Пример промпта:
У тебя есть следующий длинный текст (разделён на части). Ответь на вопрос, следуя шагам:
Шаг 1: Выпиши все факты, относящиеся к вопросу, с указанием номера части.
Шаг 2: Сделай промежуточный вывод.
Шаг 3: Проверь, не противоречит ли вывод другим частям текста.
Шаг 4: Дай финальный ответ.
Текст:
[часть 1]
[часть 2]
...
Когда использовать CoT: задачи с чёткой логической цепочкой (математика, анализ последовательности событий), когда контекст не слишком разрознен.
3. Tree-of-Thoughts (ToT) — ветвящееся рассуждение
ToT — расширение CoT, где модель генерирует несколько альтернативных путей рассуждения (ветвей), оценивает их и выбирает лучший, с возможностью backtracking (возврата к предыдущему узлу).
Проектирование промпта ToT для long context
- Определение дерева: «Разбей задачу на несколько возможных подходов. Для каждого подхода опиши шаги. Оцени вероятность успеха каждого подхода (0–1)».
- Backtracking: «Если текущая ветвь заходит в тупик (противоречие с контекстом), вернись к предыдущему узлу и попробуй другой путь».
- Управление контекстом: «Для каждой ветви явно указывай, какие части длинного текста ты используешь».
- Ограничение глубины: «Максимальная глубина дерева — 3 уровня, чтобы не перегружать контекст».
Пример промпта:
Задача: ответить на вопрос, используя длинный текст. Построй дерево рассуждений:
- Узел 1: первый возможный подход (опиши).
- Узел 1.1: шаги внутри подхода.
- Узел 1.2: оценка (0–1).
- Узел 2: второй подход.
- ...
После построения выбери ветвь с наибольшей оценкой и дай финальный ответ.
Если ни одна ветвь не приводит к ответу, вернись к корню и предложи новый подход.
Текст: ...
Когда использовать ToT: задачи с неоднозначностью, где нужно рассмотреть несколько гипотез (планирование, креативное решение проблем, анализ сценариев).
4. Graph-of-Thoughts (GoT) — графовое рассуждение
GoT — наиболее гибкий метод: рассуждение представляется как граф, где узлы — идеи/факты, а рёбра — связи (причина-следствие, поддержка, противоречие). Модель может комбинировать узлы из разных частей контекста.
Проектирование промпта GoT для long context
- Извлечение узлов: «Из каждого абзаца текста выдели ключевой факт (узел). Присвой ему ID».
- Построение связей: «Соедини узлы, если один факт подтверждает или опровергает другой. Укажи тип связи».
- Синтез: «На основе графа сформулируй ответ, используя цепочки узлов».
- Управление размером графа: «Если узлов больше 20, сгруппируй их по темам».
Пример промпта:
Дан длинный текст. Построй граф рассуждений:
1. Извлеки узлы (каждый узел — один факт из текста, с номером строки).
2. Соедини узлы рёбрами: "подтверждает", "противоречит", "дополняет".
3. Найди путь от фактов к ответу на вопрос.
4. Выведи ответ и список использованных узлов.
Текст: ...
Когда использовать GoT: задачи, требующие синтеза из разрозненных источников (сравнение документов, выявление противоречий, комплексный анализ).
5. Сравнение CoT, ToT, GoT
| Характеристика | CoT | ToT | GoT |
|---|---|---|---|
| Структура | Линейная | Древовидная | Графовая |
| Гибкость | Низкая | Средняя | Высокая |
| Управление 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.
Шаги:
- Разбей документ на части (по 2000 токенов) с помощью RecursiveCharacterTextSplitter.
- Реализуй три варианта промпта (CoT, ToT, GoT) с чекпоинтами и управлением контекстом.
- Для каждого вопроса запусти все три метода и сравни ответы.
- Добавь метрики: время выполнения, количество токенов, оценку качества (вручную или через LLM-as-judge).
- Выведи результаты в Streamlit-дашборде.
Ожидаемый результат: Приложение, которое показывает, как разные методы рассуждения справляются с long context, и позволяет выбрать лучший для конкретного типа вопросов.
Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 635 | Как проектировать AI-агента с RAG? |
| 637 | Какие инструменты (tools) вы даёте агенту? |
| 639 | Как агент планирует последовательность действий? |
| 642 | Как агент рефлексирует над своими ошибками? |
| 645 | Как оценивать качество работы агента? |
Навигация
- Предыдущий: 635
- Следующий: 637
- Индекс: 00. Индекс разборов