42 lines
3.2 KiB
Markdown
42 lines
3.2 KiB
Markdown
# Анализ главы по блокам
|
||
|
||
Анализ выполняется последовательно по четырём блокам. Каждый следующий шаг получает **весь накопленный 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}`
|
||
- **Только в шагах 2–4:** `{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` — исходный промпт «всё в одном»; оставлен для сравнения и отката.
|