This commit is contained in:
2026-02-01 17:01:21 +03:00
commit 9575eaf8ee
144 changed files with 24025 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
# Анализ главы по блокам
Анализ выполняется последовательно по четырём блокам. Каждый следующий шаг получает **весь накопленный JSON** (уже извлечённые блоки) для согласованности. После каждого блока — валидация (см. `2_валидация_анализа_по_блокам/`), затем склейка.
## Входные данные (JSON)
Вход этапа 1 — один JSON-файл на главу. Поля используются в подстановках промптов и передаются по пайплайну до шага 7 (payload в Qdrant).
| Поле | Тип | Обязательно | Описание |
|------|-----|-------------|----------|
| `book_id` | string (UUID) | да | ID книги |
| `chapter_id` | string (UUID) | да | ID главы (на шаге 7 — id точки в Qdrant) |
| `chapter_number` | integer | да | Номер главы |
| `chapter_title` | string | да | Название главы → `{chapter_title}` |
| `book_title` | string | да | Название книги → `{book_title}` |
| `chapter_text` | string | да | Текст главы → `{chapter_text}` |
| `author` | string | нет | Автор книги (для payload на шаге 7) |
**Файлы:** ход_главы.spec.json` — описание формата (JSON Schema); ход_главы.example.json` — пример. Имя входного файла на главу — на усмотрение пайплайна (например `input.json` или `{book_id}_{chapter_id}.json`).
## Порядок генерации
| Шаг | Промпт | Вход | Выход |
|-----|--------|------|-------|
| 1 | extract_framework.txt | текст главы | `framework` |
| 2 | extract_insights.txt | текст главы + framework | `insights` |
| 3 | extract_application.txt | текст главы + framework + insights | `application` |
| 4 | extract_limitations.txt | текст главы + framework + insights + application | `limitations` |
## Подстановки в промптах
- **Во всех:** `{book_title}`, `{chapter_title}`, `{chapter_text}`
- **Только в шагах 24:** `{previous_blocks_json}` — весь накопленный JSON (все уже завалидированные предыдущие блоки). Пример: для extract_insights подставляем только `framework`; для extract_application — объект с ключами `framework` и `insights`; для extract_limitations — объект с `framework`, `insights`, `application`.
## Склейка
Четыре ответа (по одному JSON-объекту с ключом framework / insights / application / limitations) объединяются в один анализ: слияние ключей верхнего уровня без вызова LLM.
## Монолитный промпт
`chapter_analysis_qwen3_prompt.txt` — исходный промпт «всё в одном»; оставлен для сравнения и отката.