init
This commit is contained in:
41
1_анализ_главы/README.md
Normal file
41
1_анализ_главы/README.md
Normal 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}`
|
||||
- **Только в шагах 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` — исходный промпт «всё в одном»; оставлен для сравнения и отката.
|
||||
67
1_анализ_главы/extract_application_v2.txt
Normal file
67
1_анализ_главы/extract_application_v2.txt
Normal file
@@ -0,0 +1,67 @@
|
||||
Ты — эксперт по анализу нон-фикшн.
|
||||
Извлеки из главы только блок «применение» (application):
|
||||
конкретные техники и практические шаги.
|
||||
|
||||
Контекст:
|
||||
- Книга: "{book_title}"
|
||||
- Глава: "{chapter_title}"
|
||||
- Текст главы: {chapter_text}
|
||||
- Уже извлечённые блоки framework и insights (для согласованности): {previous_blocks_json}
|
||||
|
||||
---
|
||||
|
||||
## ЗАДАЧА
|
||||
|
||||
Извлеки техники и упражнения: название, цель, пошаговые шаги (steps), пример контекста, фразу для клиента, измеримые критерии успеха. Техники должны опираться на принципы (framework) и инсайты; не придумывай то, чего нет в тексте.
|
||||
- Объединяй по сути одну и ту же технику: не дублируй её под разными названиями; если в главе несколько вариантов одной идеи — одна техника с уточнёнными шагами.
|
||||
- Краевые случаи: если в главе описана одна техника — верни один элемент в techniques. Если явных техник или упражнений в главе нет — верни пустой массив: "techniques": []. Не придумывай техники ради заполнения.
|
||||
|
||||
## СТРОГИЕ ПРАВИЛА
|
||||
|
||||
1. Не пересказывай текст и не цитируй большие фрагменты; работай на уровне обобщений и смысловых единиц.
|
||||
2. Язык простой, разговорно-профессиональный. При первом использовании в goal, steps или client_phrase слов «триггер», «стимул», «паттерн» и т.п. добавь в скобках пояснение в 3–7 слов, например: стимул (то, что в окружении запускает действие).
|
||||
3. Каждая техника должна быть:
|
||||
- понятна без дополнительного объяснения;
|
||||
- приземлена к реальному поведению и к повседневной ситуации (работа, дом, отношения);
|
||||
- у каждой техники обязательно заполни context_example: один бытовой пример ситуации, где техника применима.
|
||||
4. steps — только из текста главы; без выдуманных шагов. При необходимости добавь шаг про отслеживание результата (что записать или отметить).
|
||||
5. success_criteria — как можно более измеримо: укажи, что именно должно измениться (частота, длительность, количество эпизодов) и за какой промежуток времени (например: «количество эпизодов X снижается с N до M в течение T дней»).
|
||||
6. Избегай чрезмерной абстракции и канцелярита; формулировки живые, но точные.
|
||||
7. Не используй вводные фразы, обращение к читателю и объяснения формата.
|
||||
|
||||
---
|
||||
|
||||
## КРИТИЧНО ДЛЯ ФОРМАТА
|
||||
|
||||
- steps — только из текста главы; не выдумывай шаги.
|
||||
- У каждой техники — context_example с одним бытовым примером ситуации (работа, дом, отношения).
|
||||
- success_criteria — измеримый критерий: что меняется (частота/длительность/количество), за какой срок; без размытых формулировок.
|
||||
- Если в главе нет описанных техник или упражнений — верни "techniques": [].
|
||||
- Не дублируй по сути одну технику под разными названиями.
|
||||
|
||||
---
|
||||
|
||||
## ФОРМАТ ОТВЕТА
|
||||
|
||||
Строго один JSON-объект с единственным ключом верхнего уровня "application", без комментариев и markdown:
|
||||
|
||||
{
|
||||
"application": {
|
||||
"techniques": [
|
||||
{
|
||||
"name": "Название техники или упражнения",
|
||||
"goal": "Какую конкретную привычку, навык или поведение это помогает изменить",
|
||||
"context_example": "Короткий пример жизненной ситуации, где техника применима (например: вечер после работы, когда тянет залипнуть в телефон)",
|
||||
"steps": [
|
||||
"Шаг 1: ... (при необходимости — мини-рефлексия или запись наблюдений)",
|
||||
"Шаг 2: ...",
|
||||
"Шаг 3: ... (при необходимости — шаг про отслеживание результата: что записать или отметить)"
|
||||
],
|
||||
"client_phrase": "Как это просто объяснить или сформулировать для клиента",
|
||||
"success_criteria": "Измеримый критерий: что именно меняется (частота, длительность, количество эпизодов) и за какой срок (например: количество эпизодов X снижается с N до M в течение T дней)"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Верни только этот объект — ничего до и после.
|
||||
194
1_анализ_главы/extract_application_v2_filled.txt
Normal file
194
1_анализ_главы/extract_application_v2_filled.txt
Normal file
File diff suppressed because one or more lines are too long
64
1_анализ_главы/extract_framework_v2.txt
Normal file
64
1_анализ_главы/extract_framework_v2.txt
Normal file
@@ -0,0 +1,64 @@
|
||||
Ты — эксперт по анализу нон-фикшн. Извлеки из главы только блок «каркас» (framework): принципы и цепочки причина–механизм–результат.
|
||||
|
||||
Контекст:
|
||||
- Книга: "{book_title}"
|
||||
- Глава: "{chapter_title}"
|
||||
- Текст главы: {chapter_text}
|
||||
|
||||
---
|
||||
|
||||
## ЗАДАЧА
|
||||
|
||||
Извлеки фундаментальные принципы и опорные идеи автора. Для каждого принципа — цепочки cause → mechanism → result (что запускает, как работает, к чему приводит).
|
||||
- Если у одной идеи в главе несколько разных сценариев (разные причины или результаты) — приведи для неё несколько цепочек (2–3), а не одну.
|
||||
- Объединяй перекрывающиеся идеи: один принцип = одна опорная мысль. Не дублируй одну и ту же мысль под разными названиями.
|
||||
|
||||
## СТРОГИЕ ПРАВИЛА
|
||||
|
||||
1. Не пересказывай текст и не цитируй большие фрагменты; работай на уровне обобщений и смысловых единиц.
|
||||
2. Язык простой, разговорно-профессиональный. Все специальные термины из главы (паттерны, триггеры, автоматизация, подкрепление и т.п.) обязательно внеси в блок "terms" и дай к каждому пояснение в 3–7 слов: что это значит для обычного человека в поведении.
|
||||
3. Каждый принцип и каждая цепочка должны быть:
|
||||
- понятны без дополнительного объяснения;
|
||||
- приземлены к реальному поведению (что человек делает иначе);
|
||||
- у каждого принципа обязательно заполни поле "example": один бытовой пример в одну фразу (работа, дом, отношения).
|
||||
4. Избегай чрезмерной абстракции и канцелярита. Живая, но точная формулировка (например: не «Парадокс воли: повышение дисциплины требует…», а «Чтобы не собирать волю в кулак каждый раз, среду нужно настроить так, чтобы правильное действие было самым лёгким по умолчанию»).
|
||||
5. Не используй вводные фразы, обращение к читателю и объяснения формата.
|
||||
|
||||
---
|
||||
|
||||
## КРИТИЧНО ДЛЯ ФОРМАТА
|
||||
|
||||
- Блок "terms" должен быть заполнен: все термины из твоего ответа с короткими пояснениями.
|
||||
- У каждого принципа — массив "chains" с минимум одной цепочкой; при нескольких сценариях — несколько цепочек.
|
||||
- У каждого принципа — поле "example" с одним бытовым примером в одну фразу.
|
||||
|
||||
---
|
||||
|
||||
## ФОРМАТ ОТВЕТА
|
||||
|
||||
Строго один JSON-объект с единственным ключом верхнего уровня "framework", без комментариев и markdown:
|
||||
|
||||
{
|
||||
"framework": {
|
||||
"terms": {
|
||||
"термин1": "пояснение в 3–7 слов для обычного человека",
|
||||
"термин2": "пояснение в 3–7 слов"
|
||||
},
|
||||
"principles": [
|
||||
{
|
||||
"title": "Краткое название принципа",
|
||||
"description": "Живая формулировка с пояснением, как проявляется в жизни",
|
||||
"example": "Один бытовой пример в одну фразу: работа, дом или отношения",
|
||||
"chains": [
|
||||
{
|
||||
"cause": "Причина или ситуация, с которой всё начинается",
|
||||
"mechanism": "Что происходит / какой процесс запускается",
|
||||
"result": "К какому результату это приводит для человека"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Верни только этот объект — ничего до и после.
|
||||
64
1_анализ_главы/extract_framework_v2_filled.txt
Normal file
64
1_анализ_главы/extract_framework_v2_filled.txt
Normal file
File diff suppressed because one or more lines are too long
54
1_анализ_главы/extract_insights_v3.txt
Normal file
54
1_анализ_главы/extract_insights_v3.txt
Normal file
@@ -0,0 +1,54 @@
|
||||
Ты — эксперт по анализу нон-фикшн. Извлеки из главы только блок «инсайты» (insights): практически значимые понимания.
|
||||
|
||||
Контекст:
|
||||
- Книга: "{book_title}"
|
||||
- Глава: "{chapter_title}"
|
||||
- Текст главы: {chapter_text}
|
||||
- Уже извлечённый блок framework (для согласованности): {previous_blocks_json}
|
||||
|
||||
---
|
||||
|
||||
## ЗАДАЧА
|
||||
|
||||
Извлеки инсайты — то, что человек по-новому понимает о себе/людях/среде и как это меняет поведение в конкретных ситуациях.
|
||||
- Инсайты должны согласовываться с уже извлечённым framework; не противоречь принципам.
|
||||
- Объединяй перекрывающиеся инсайты: один инсайт = одно понимание. Не дублируй одну мысль под разными названиями.
|
||||
- Инсайт — это вывод или новое понимание, которое меняет поведение. Не включай в список определения терминов (что такое стимул, триггер и т.п.); определения остаются в framework. Если формулировка отвечает на вопрос «что это такое?», а не «что из этого следует для человека?» — это не инсайт.
|
||||
|
||||
## СТРОГИЕ ПРАВИЛА
|
||||
|
||||
1. Не пересказывай текст и не цитируй большие фрагменты; работай на уровне обобщений и смысловых единиц.
|
||||
2. Язык простой, разговорно-профессиональный. При первом использовании в description слов «триггер», «стимул», «паттерн», «подкрепление» и т.п. добавь в скобках пояснение в 3–7 слов, например: триггер (то, что запускает действие почти автоматически).
|
||||
3. Каждый инсайт должен быть:
|
||||
- понятен без дополнительного объяснения;
|
||||
- приземлён к реальному поведению (что человек делает иначе);
|
||||
- у каждого инсайта обязательно заполни поле "example": один бытовой пример в одну фразу (работа, дом, отношения).
|
||||
4. Избегай чрезмерной абстракции и канцелярита; используй живую, но точную формулировку.
|
||||
5. Не используй вводные фразы, обращение к читателю и объяснения формата.
|
||||
|
||||
---
|
||||
|
||||
## КРИТИЧНО ДЛЯ ФОРМАТА
|
||||
|
||||
- Инсайты не противоречат принципам из переданного framework.
|
||||
- У каждого инсайта — поле "example" с одним бытовым примером в одну фразу.
|
||||
- Не дублируй перекрывающиеся инсайты: перед добавлением проверь — не выражает ли новый инсайт ту же опорную мысль, что уже есть в списке? Одна мысль («среда важнее силы воли», «привычка не забывается» и т.д.) = один инсайт. Ориентир: 4–7 инсайтов без смысловых дублей.
|
||||
- Не включай определения терминов как отдельные инсайты; только выводы и понимания.
|
||||
|
||||
---
|
||||
|
||||
## ФОРМАТ ОТВЕТА
|
||||
|
||||
Строго один JSON-объект с единственным ключом верхнего уровня "insights", без комментариев и markdown:
|
||||
|
||||
{
|
||||
"insights": [
|
||||
{
|
||||
"title": "Краткое название инсайта",
|
||||
"description": "Что человек по-новому понимает и как это меняет поведение в конкретных ситуациях",
|
||||
"example": "Один бытовой пример в одну фразу: работа, дом или отношения"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Верни только этот объект — ничего до и после.
|
||||
154
1_анализ_главы/extract_insights_v3_filled.txt
Normal file
154
1_анализ_главы/extract_insights_v3_filled.txt
Normal file
File diff suppressed because one or more lines are too long
58
1_анализ_главы/extract_limitations_v3.txt
Normal file
58
1_анализ_главы/extract_limitations_v3.txt
Normal file
@@ -0,0 +1,58 @@
|
||||
Ты — эксперт по анализу нон-фикшн. Извлеки из главы только блок «ограничения» (limitations): риски и узкие места применения идей.
|
||||
|
||||
Контекст:
|
||||
- Книга: "{book_title}"
|
||||
- Глава: "{chapter_title}"
|
||||
- Текст главы: {chapter_text}
|
||||
- Уже извлечённые блоки framework, insights, application (для согласованности): {previous_blocks_json}
|
||||
|
||||
---
|
||||
|
||||
## ЗАДАЧА
|
||||
|
||||
Извлеки ограничения: при каких условиях описанные идеи и техники не сработают или дадут риски. Ограничения должны относиться к уже извлечённым принципам и техникам; не противоречь им.
|
||||
- Объединяй перекрывающиеся ограничения: одно ограничение = один тип риска или условия. Не дублируй одну мысль под разными формулировками. Один тип риска = один пункт (например: «внутренние эмоции» и «привычка на уровне нейронов/внутренних триггеров» — один тип риска «причина внутри, а не в среде»; не оформляй двумя разными пунктами).
|
||||
- Ограничение — это конкретное условие или ситуация, при которых идеи/техники не сработают или дадут риски. Не включай общие truisms («всё индивидуально», «зависит от человека»); только ограничения с опорой в тексте или следующие из переданных принципов и техник.
|
||||
- Краевой случай: если в главе нет явных ограничений, рисков или узких мест — верни пустой массив: "limitations": []. Не придумывай ограничения ради заполнения.
|
||||
- Ориентир: 2–5 ограничений без смысловых дублей.
|
||||
|
||||
## СТРОГИЕ ПРАВИЛА
|
||||
|
||||
1. Не пересказывай текст и не цитируй большие фрагменты; работай на уровне обобщений и смысловых единиц.
|
||||
2. Язык простой, разговорно-профессиональный. При первом использовании по порядку в списке ограничений слов «триггер», «стимул», «паттерн» и т.п. обязательно добавь в скобках пояснение в 3–7 слов, например: триггер (то, что в окружении запускает действие). В следующих пунктах тот же термин можно использовать без повторного пояснения.
|
||||
3. Каждое ограничение должно быть:
|
||||
- понятно без дополнительного объяснения;
|
||||
- приземлено к реальным ситуациям (работа, дом, отношения);
|
||||
- у каждого ограничения обязательно заполни поле "example": один бытовой пример ситуации, когда это ограничение проявляется (в одну фразу).
|
||||
4. when_relevant — в каких ситуациях, контекстах или для каких людей это ограничение особенно важно учитывать.
|
||||
5. Избегай чрезмерной абстракции и канцелярита; формулировки живые, но точные.
|
||||
6. Не используй вводные фразы, обращение к читателю и объяснения формата.
|
||||
|
||||
---
|
||||
|
||||
## КРИТИЧНО ДЛЯ ФОРМАТА
|
||||
|
||||
- Ограничения не противоречат принципам и техникам из переданных блоков; они указывают, когда идеи не сработают или дадут риски.
|
||||
- У каждого ограничения — поле "example" с одним бытовым примером ситуации в одну фразу (работа, дом, отношения).
|
||||
- Не дублируй перекрывающиеся ограничения: перед добавлением проверь — не описывает ли новый пункт тот же тип риска, что уже есть? Если два пункта по смыслу про одно (например, «когда причина привычки внутренняя»), объедини в один.
|
||||
- В первом по порядку ограничении, где встречается «триггер» или «стимул», дай пояснение в скобках (3–7 слов).
|
||||
- Если в главе нет описанных ограничений или рисков — верни "limitations": [].
|
||||
- Не включай общие truisms; только конкретные ограничения с опорой в тексте или в переданных блоках.
|
||||
|
||||
---
|
||||
|
||||
## ФОРМАТ ОТВЕТА
|
||||
|
||||
Строго один JSON-объект с единственным ключом верхнего уровня "limitations", без комментариев и markdown:
|
||||
|
||||
{
|
||||
"limitations": [
|
||||
{
|
||||
"description": "Риск или узкое место при применении идей на практике",
|
||||
"when_relevant": "В каких ситуациях или для каких людей это важно учитывать",
|
||||
"example": "Один бытовой пример ситуации, когда это ограничение проявляется (работа, дом или отношения)"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Верни только этот объект — ничего до и после.
|
||||
90
1_анализ_главы/extract_limitations_v3_filled.txt
Normal file
90
1_анализ_главы/extract_limitations_v3_filled.txt
Normal file
File diff suppressed because one or more lines are too long
159
1_анализ_главы/merge.json
Normal file
159
1_анализ_главы/merge.json
Normal file
@@ -0,0 +1,159 @@
|
||||
{
|
||||
"framework": {
|
||||
"terms": {
|
||||
"стимул": "что в окружающей среде заставляет человека действовать",
|
||||
"привычка": "повторяющееся действие, которое становится автоматическим",
|
||||
"подкрепление": "воздействие, усиливающее вероятность повторения действия",
|
||||
"среда": "окружение, влияющее на поведение через стимулы и ограничения",
|
||||
"желание, вызванное стимулом": "непроизвольная тяга к действию, спровоцированному внешним триггером",
|
||||
"аутокаталитический процесс": "процесс, усиливающий себя сам"
|
||||
},
|
||||
"principles": [
|
||||
{
|
||||
"title": "Среда формирует поведение",
|
||||
"description": "Человек не управляет привычками напрямую, а воздействует на окружение, чтобы оно вело его к нужным действиям",
|
||||
"example": "Убрать телефон с рабочего стола, чтобы не отвлекаться на соцсети",
|
||||
"chains": [
|
||||
{
|
||||
"cause": "Человек находится в среде с доступными стимулами для нежелательной привычки",
|
||||
"mechanism": "Стимул активирует уже сформированную привычку, которая запускает автоматическое действие",
|
||||
"result": "Человек повторяет вредную привычку, не осознавая этого"
|
||||
},
|
||||
{
|
||||
"cause": "Изменяется среда, удаляются стимулы, провоцирующие нежелательную привычку",
|
||||
"mechanism": "Отсутствие триггеров снижает вероятность срабатывания привычки",
|
||||
"result": "Человек реже проявляет нежелательное поведение"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Привычки не исчезают, они только временно подавлены",
|
||||
"description": "Даже если человек перестаёт делать что-то, привычка остаётся в мозге и может вернуться при подходящих условиях",
|
||||
"example": "Человек перестаёт курить, но снова начинает после посещения места, где раньше курил",
|
||||
"chains": [
|
||||
{
|
||||
"cause": "Человек прекращает проявлять вредную привычку",
|
||||
"mechanism": "Мозг сохраняет нейронные связи, связанные с этой привычкой",
|
||||
"result": "Привычка может вернуться, если появятся подходящие стимулы"
|
||||
},
|
||||
{
|
||||
"cause": "Окружение меняется, и в нем появляются триггеры, связанные с прошлой привычкой",
|
||||
"mechanism": "Стимулы запускают автоматические паттерны поведения",
|
||||
"result": "Человек снова начинает делать то, что уже перестал"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Самоконтроль — это краткосрочный, а не долгосрочный инструмент",
|
||||
"description": "Противостояние искушению неэффективно на длительном сроке, нужно менять контекст",
|
||||
"example": "Человек отказывается от сладкого, но возвращается к нему после стрессового дня",
|
||||
"chains": [
|
||||
{
|
||||
"cause": "Человек пытается контролировать себя в момент искушения",
|
||||
"mechanism": "Это требует энергии и усилий, которые невозможно поддерживать всегда",
|
||||
"result": "Человек устаёт от борьбы и возвращается к нежелательной привычке"
|
||||
},
|
||||
{
|
||||
"cause": "Человек изменяет окружение, чтобы искушения стали менее доступными",
|
||||
"mechanism": "Стимулы для плохого поведения становятся незаметными или невозможными",
|
||||
"result": "Человек реже сталкивается с искушением"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Дисциплина — это настройка среды, а не внутреннее усилие",
|
||||
"description": "Сильные люди не просто дисциплинированы, а живут в среде, которая поддерживает их цели",
|
||||
"example": "Человек встаёт раньше, потому что спальня тёмная и не имеет гаджетов",
|
||||
"chains": [
|
||||
{
|
||||
"cause": "Человек пытается быть дисциплинированным только силой воли",
|
||||
"mechanism": "Это требует большого количества энергии и часто неудачно",
|
||||
"result": "Человек теряет мотивацию и возвращается к нежелательному поведению"
|
||||
},
|
||||
{
|
||||
"cause": "Человек настраивает окружение так, чтобы хорошее поведение было лёгким",
|
||||
"mechanism": "Стимулы для правильных действий становятся более доступными",
|
||||
"result": "Человек чаще выбирает здоровые привычки"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Негативные эмоции усиливают негативное поведение",
|
||||
"description": "Стресс, тревога и другие негативные чувства провоцируют возвращение к вредным привычкам",
|
||||
"example": "Человек садится на диван и ест шоколад, когда ему плохо",
|
||||
"chains": [
|
||||
{
|
||||
"cause": "Человек испытывает стресс или негативные эмоции",
|
||||
"mechanism": "Это активирует привычку, которая помогает снизить дискомфорт",
|
||||
"result": "Человек снова начинает делать то, что раньше снимало напряжение"
|
||||
},
|
||||
{
|
||||
"cause": "Человек пытается избавиться от вредной привычки, но не меняет среду",
|
||||
"mechanism": "Стресс и негативные эмоции остаются, усиливая желание к действию",
|
||||
"result": "Человек возвращается к нежелательной привычке"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"insights": [
|
||||
{
|
||||
"title": "Среда влияет на привычки больше, чем сила воли",
|
||||
"description": "Чтобы изменить привычку, нужно изменить окружение, а не надеяться только на самоконтроль",
|
||||
"example": "Убрать телефон с рабочего стола, чтобы не отвлекаться на соцсети"
|
||||
},
|
||||
{
|
||||
"title": "Привычки не исчезают, только временно подавляются",
|
||||
"description": "Даже если человек перестаёт курить или есть сладкое, эти привычки остаются в мозге и могут вернуться при подходящих условиях",
|
||||
"example": "После посещения бара человек снова начинает пить, не осознавая этого"
|
||||
},
|
||||
{
|
||||
"title": "Негативные эмоции усиливают вредное поведение",
|
||||
"description": "Стресс, тревога и другие негативные чувства могут спровоцировать возвращение к старым привычкам",
|
||||
"example": "После ссоры человек снова начинает есть вредную пищу, чтобы успокоиться"
|
||||
},
|
||||
{
|
||||
"title": "Сокращение стимулов уменьшает повторение нежелательного поведения",
|
||||
"description": "Удаление триггеров, связанных с вредной привычкой, снижает вероятность её возобновления",
|
||||
"example": "Убрать сигареты из дома, чтобы уменьшить вероятность их употребления"
|
||||
},
|
||||
{
|
||||
"title": "Самоконтроль — это временная стратегия, а не долгосрочное решение",
|
||||
"description": "Постоянно бороться с искушением утомительно и непрочное; нужно настраивать среду так, чтобы искушений не было совсем",
|
||||
"example": "Поставить телефон в другую комнату, чтобы не проверять соцсети во время работы"
|
||||
}
|
||||
],
|
||||
"application": {
|
||||
"techniques": [
|
||||
{
|
||||
"name": "Снижение доступности стимула",
|
||||
"goal": "Уменьшение вероятности повторения нежелательной привычки за счёт удаления её триггеров",
|
||||
"context_example": "Вечер после работы, когда тянет залипнуть в телефон и проверять соцсети",
|
||||
"steps": [
|
||||
"Определите конкретный стимул (например, наличие телефона на столе)",
|
||||
"Уберите объект из зоны видимости или досягаемости (например, оставьте телефон в другой комнате)",
|
||||
"Запишите дату и время изменения (для отслеживания эффективности)"
|
||||
],
|
||||
"client_phrase": "Уберите источник искушения из вашей среды — действие станет менее вероятным",
|
||||
"success_criteria": "Частота использования телефона в моменты, когда это не нужно, снижается с 5 раз/день до 1–2 раз/день за 2 недели"
|
||||
}
|
||||
]
|
||||
},
|
||||
"limitations": [
|
||||
{
|
||||
"description": "Идеи не работают, если триггер (то, что в окружении запускает действие) не устранён или остаётся доступным, так как привычка может вернуться при появлении стимула",
|
||||
"when_relevant": "Когда человек не полностью убирает триггер из своей среды или сталкивается с ним в новой обстановке",
|
||||
"example": "Человек удалил сигареты из дома, но снова начинает курить на работе среди коллег-курильщиков"
|
||||
},
|
||||
{
|
||||
"description": "Техники могут не сработать, если негативные эмоции (стресс, тревога) остаются необратленными и усиливают нежелательное поведение",
|
||||
"when_relevant": "Когда человек продолжает испытывать сильный стресс или эмоциональные трудности, не решая их на уровне среды",
|
||||
"example": "Человек убрал телефон из комнаты, но всё равно переедает перед сном из-за хронической тревоги"
|
||||
},
|
||||
{
|
||||
"description": "Изменения среды могут быть недостаточны, если привычка закреплена на уровне автоматических нейронных паттернов и не сопровождается новыми, здоровыми привычками",
|
||||
"when_relevant": "Когда человек устраняет триггер, но не вводит альтернативное поведение для подкрепления",
|
||||
"example": "Человек убрал телевизор из спальни, но не нашёл замену в виде чтения или медитации и проводит время впустую"
|
||||
}
|
||||
]
|
||||
}
|
||||
99
1_анализ_главы/merge_jsons.py
Normal file
99
1_анализ_главы/merge_jsons.py
Normal file
@@ -0,0 +1,99 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Скрипт объединения нескольких JSON-файлов в один.
|
||||
|
||||
Файлы должны лежать в том же каталоге, что и скрипт. Каждый файл — один JSON-объект;
|
||||
результат — один объект, собранный из верхнеуровневых ключей всех файлов.
|
||||
При совпадении ключей побеждает значение из файла, идущего позже в списке.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def get_script_dir() -> Path:
|
||||
"""Возвращает каталог, в котором расположен скрипт."""
|
||||
return Path(__file__).resolve().parent
|
||||
|
||||
|
||||
def merge_json_files(
|
||||
filenames: list[str],
|
||||
base_dir: Path,
|
||||
output_path: Path,
|
||||
indent: int | None = 2,
|
||||
) -> None:
|
||||
"""
|
||||
Читает перечисленные JSON-файлы из base_dir и записывает объединённый объект в output_path.
|
||||
|
||||
Args:
|
||||
filenames: Список имён файлов (без пути).
|
||||
base_dir: Каталог с входными файлами.
|
||||
output_path: Полный путь к результирующему JSON-файлу.
|
||||
indent: Отступ для форматирования JSON (по умолчанию 2).
|
||||
|
||||
Raises:
|
||||
FileNotFoundError: Если какой-либо входной файл не найден.
|
||||
json.JSONDecodeError: Если содержимое файла не является валидным JSON.
|
||||
"""
|
||||
result: dict = {}
|
||||
|
||||
for name in filenames:
|
||||
path = base_dir / name
|
||||
if not path.is_file():
|
||||
raise FileNotFoundError(f"Файл не найден: {path}")
|
||||
|
||||
with open(path, "r", encoding="utf-8") as f:
|
||||
data = json.load(f)
|
||||
|
||||
if not isinstance(data, dict):
|
||||
raise TypeError(
|
||||
f"Файл {name} должен содержать JSON-объект (dict), получен: {type(data).__name__}"
|
||||
)
|
||||
result.update(data)
|
||||
|
||||
with open(output_path, "w", encoding="utf-8") as f:
|
||||
json.dump(result, f, ensure_ascii=False, indent=indent)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
"""Точка входа: разбор аргументов и вызов объединения."""
|
||||
script_dir = get_script_dir()
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Объединить несколько JSON-файлов из каталога скрипта в один файл."
|
||||
)
|
||||
parser.add_argument(
|
||||
"files",
|
||||
nargs="+",
|
||||
metavar="FILE",
|
||||
help="Имена JSON-файлов (в каталоге скрипта)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-o",
|
||||
"--output",
|
||||
default="merged.json",
|
||||
metavar="OUTPUT",
|
||||
help="Имя результирующего файла (по умолчанию: merged.json)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--no-indent",
|
||||
action="store_true",
|
||||
help="Не форматировать вывод (компактный JSON)",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
output_path = script_dir / args.output
|
||||
indent = None if args.no_indent else 2
|
||||
|
||||
merge_json_files(
|
||||
filenames=args.files,
|
||||
base_dir=script_dir,
|
||||
output_path=output_path,
|
||||
indent=indent,
|
||||
)
|
||||
print(f"Записано: {output_path}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
119
1_анализ_главы/run_framework_ollama.py
Normal file
119
1_анализ_главы/run_framework_ollama.py
Normal file
@@ -0,0 +1,119 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Один запуск блока framework через Ollama (qwen3:14b) для сравнения с эталоном выход_frame.json.
|
||||
Вход: вход_главы.json, промпт extract_framework_v2.txt.
|
||||
Выход: выход_frame_ollama.json и краткое сравнение с выход_frame.json.
|
||||
"""
|
||||
|
||||
import json
|
||||
import re
|
||||
import sys
|
||||
import time
|
||||
import urllib.request
|
||||
from pathlib import Path
|
||||
|
||||
OLLAMA_URL = "http://localhost:11434"
|
||||
MODEL = "qwen3:14b"
|
||||
DIR = Path(__file__).resolve().parent
|
||||
|
||||
|
||||
def load_input() -> dict:
|
||||
with open(DIR / "вход_главы.json", encoding="utf-8") as f:
|
||||
return json.load(f)
|
||||
|
||||
|
||||
def load_prompt() -> str:
|
||||
with open(DIR / "extract_framework_v2.txt", encoding="utf-8") as f:
|
||||
return f.read()
|
||||
|
||||
|
||||
def substitute_prompt(prompt: str, data: dict) -> str:
|
||||
return prompt.replace("{book_title}", data.get("book_title", "")).replace(
|
||||
"{chapter_title}", data.get("chapter_title", "")
|
||||
).replace("{chapter_text}", data.get("chapter_text", ""))
|
||||
|
||||
|
||||
def extract_json_from_response(text: str) -> dict:
|
||||
"""Достаёт JSON из ответа модели (может быть обёрнут в ```json ... ```)."""
|
||||
text = text.strip()
|
||||
match = re.search(r"```(?:json)?\s*([\s\S]*?)\s*```", text)
|
||||
if match:
|
||||
text = match.group(1).strip()
|
||||
return json.loads(text)
|
||||
|
||||
|
||||
def call_ollama(prompt: str) -> str:
|
||||
body = json.dumps(
|
||||
{
|
||||
"model": MODEL,
|
||||
"messages": [{"role": "user", "content": prompt}],
|
||||
"stream": False,
|
||||
"format": "json",
|
||||
},
|
||||
ensure_ascii=False,
|
||||
).encode("utf-8")
|
||||
req = urllib.request.Request(
|
||||
f"{OLLAMA_URL}/api/chat",
|
||||
data=body,
|
||||
headers={"Content-Type": "application/json"},
|
||||
method="POST",
|
||||
)
|
||||
try:
|
||||
# Таймаут отключён — ждём завершения генерации (может быть 10+ минут на CPU)
|
||||
with urllib.request.urlopen(req, timeout=None) as resp:
|
||||
data = json.load(resp)
|
||||
return data.get("message", {}).get("content", "")
|
||||
except urllib.error.HTTPError as e:
|
||||
body = ""
|
||||
if e.fp:
|
||||
try:
|
||||
body = e.fp.read().decode("utf-8", errors="replace")[:1000]
|
||||
except Exception:
|
||||
pass
|
||||
raise RuntimeError(f"Ollama HTTP {e.code}: {e.reason}. Body: {body}") from e
|
||||
|
||||
|
||||
def main() -> int:
|
||||
print("Загрузка вход_главы.json и промпта...")
|
||||
inp = load_input()
|
||||
prompt_tpl = load_prompt()
|
||||
prompt = substitute_prompt(prompt_tpl, inp)
|
||||
print(f"Вызов Ollama {MODEL} (таймаут отключён, ждём завершения)...")
|
||||
t0 = time.monotonic()
|
||||
try:
|
||||
raw = call_ollama(prompt)
|
||||
except Exception as e:
|
||||
print(f"Ошибка вызова Ollama: {e}", file=sys.stderr)
|
||||
return 1
|
||||
elapsed = time.monotonic() - t0
|
||||
print(f"Ответ получен за {elapsed:.1f} сек ({elapsed / 60:.1f} мин)")
|
||||
try:
|
||||
result = extract_json_from_response(raw)
|
||||
except json.JSONDecodeError as e:
|
||||
print(f"Не удалось распарсить JSON из ответа: {e}", file=sys.stderr)
|
||||
print("Первые 500 символов ответа:", raw[:500], file=sys.stderr)
|
||||
return 1
|
||||
out_path = DIR / "выход_frame_ollama.json"
|
||||
with open(out_path, "w", encoding="utf-8") as f:
|
||||
json.dump(result, f, ensure_ascii=False, indent=2)
|
||||
print(f"Результат сохранён: {out_path}")
|
||||
|
||||
# Сравнение с эталоном
|
||||
ref_path = DIR / "выход_frame.json"
|
||||
if ref_path.exists():
|
||||
with open(ref_path, encoding="utf-8") as f:
|
||||
ref = json.load(f)
|
||||
fw_ollama = result.get("framework", {})
|
||||
fw_ref = ref.get("framework", {})
|
||||
terms_o = len(fw_ollama.get("terms", {}))
|
||||
terms_r = len(fw_ref.get("terms", {}))
|
||||
principles_o = len(fw_ollama.get("principles", []))
|
||||
principles_r = len(fw_ref.get("principles", []))
|
||||
print("\n--- Сравнение с эталоном выход_frame.json ---")
|
||||
print(f" principles: эталон {principles_r}, Ollama {principles_o}")
|
||||
print(f" terms: эталон {terms_r}, Ollama {terms_o}")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
1
1_анализ_главы/Вход.txt
Normal file
1
1_анализ_главы/Вход.txt
Normal file
File diff suppressed because one or more lines are too long
9
1_анализ_главы/вход_главы.example.json
Normal file
9
1_анализ_главы/вход_главы.example.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"book_id": "00000000-0000-0000-0000-000000000001",
|
||||
"chapter_id": "00000000-0000-0000-0000-000000000002",
|
||||
"chapter_number": 7,
|
||||
"chapter_title": "Секрет самоконтроля",
|
||||
"book_title": "Атомные привычки",
|
||||
"chapter_text": "В 1971 году, когда шел шестнадцатый год войны во Вьетнаме...",
|
||||
"author": "Джеймс Клир"
|
||||
}
|
||||
9
1_анализ_главы/вход_главы.json
Normal file
9
1_анализ_главы/вход_главы.json
Normal file
File diff suppressed because one or more lines are too long
37
1_анализ_главы/вход_главы.spec.json
Normal file
37
1_анализ_главы/вход_главы.spec.json
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Вход шага 1 — анализ главы",
|
||||
"description": "Единый входной JSON для этапа 1 (анализ по блокам). Метаданные используются в подстановках промптов и передаются по пайплайну до шага 7 (Qdrant payload).",
|
||||
"type": "object",
|
||||
"required": ["book_id", "chapter_id", "chapter_number", "chapter_title", "book_title", "chapter_text"],
|
||||
"properties": {
|
||||
"book_id": {
|
||||
"type": "string",
|
||||
"description": "UUID книги"
|
||||
},
|
||||
"chapter_id": {
|
||||
"type": "string",
|
||||
"description": "UUID главы (используется как id точки в Qdrant на шаге 7)"
|
||||
},
|
||||
"chapter_number": {
|
||||
"type": "integer",
|
||||
"description": "Номер главы в книге"
|
||||
},
|
||||
"chapter_title": {
|
||||
"type": "string",
|
||||
"description": "Название главы (подстановка {chapter_title} в промптах)"
|
||||
},
|
||||
"book_title": {
|
||||
"type": "string",
|
||||
"description": "Название книги (подстановка {book_title} в промптах)"
|
||||
},
|
||||
"chapter_text": {
|
||||
"type": "string",
|
||||
"description": "Текст главы (подстановка {chapter_text} в промптах)"
|
||||
},
|
||||
"author": {
|
||||
"type": "string",
|
||||
"description": "Автор книги (опционально; для payload на шаге 7)"
|
||||
}
|
||||
}
|
||||
}
|
||||
18
1_анализ_главы/выход_aplic.json
Normal file
18
1_анализ_главы/выход_aplic.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"application": {
|
||||
"techniques": [
|
||||
{
|
||||
"name": "Снижение доступности стимула",
|
||||
"goal": "Уменьшение вероятности повторения нежелательной привычки за счёт удаления её триггеров",
|
||||
"context_example": "Вечер после работы, когда тянет залипнуть в телефон и проверять соцсети",
|
||||
"steps": [
|
||||
"Определите конкретный стимул (например, наличие телефона на столе)",
|
||||
"Уберите объект из зоны видимости или досягаемости (например, оставьте телефон в другой комнате)",
|
||||
"Запишите дату и время изменения (для отслеживания эффективности)"
|
||||
],
|
||||
"client_phrase": "Уберите источник искушения из вашей среды — действие станет менее вероятным",
|
||||
"success_criteria": "Частота использования телефона в моменты, когда это не нужно, снижается с 5 раз/день до 1–2 раз/день за 2 недели"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
99
1_анализ_главы/выход_frame.json
Normal file
99
1_анализ_главы/выход_frame.json
Normal file
@@ -0,0 +1,99 @@
|
||||
{
|
||||
"framework": {
|
||||
"terms": {
|
||||
"стимул": "что в окружающей среде заставляет человека действовать",
|
||||
"привычка": "повторяющееся действие, которое становится автоматическим",
|
||||
"подкрепление": "воздействие, усиливающее вероятность повторения действия",
|
||||
"среда": "окружение, влияющее на поведение через стимулы и ограничения",
|
||||
"желание, вызванное стимулом": "непроизвольная тяга к действию, спровоцированному внешним триггером",
|
||||
"аутокаталитический процесс": "процесс, усиливающий себя сам"
|
||||
},
|
||||
"principles": [
|
||||
{
|
||||
"title": "Среда формирует поведение",
|
||||
"description": "Человек не управляет привычками напрямую, а воздействует на окружение, чтобы оно вело его к нужным действиям",
|
||||
"example": "Убрать телефон с рабочего стола, чтобы не отвлекаться на соцсети",
|
||||
"chains": [
|
||||
{
|
||||
"cause": "Человек находится в среде с доступными стимулами для нежелательной привычки",
|
||||
"mechanism": "Стимул активирует уже сформированную привычку, которая запускает автоматическое действие",
|
||||
"result": "Человек повторяет вредную привычку, не осознавая этого"
|
||||
},
|
||||
{
|
||||
"cause": "Изменяется среда, удаляются стимулы, провоцирующие нежелательную привычку",
|
||||
"mechanism": "Отсутствие триггеров снижает вероятность срабатывания привычки",
|
||||
"result": "Человек реже проявляет нежелательное поведение"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Привычки не исчезают, они только временно подавлены",
|
||||
"description": "Даже если человек перестаёт делать что-то, привычка остаётся в мозге и может вернуться при подходящих условиях",
|
||||
"example": "Человек перестаёт курить, но снова начинает после посещения места, где раньше курил",
|
||||
"chains": [
|
||||
{
|
||||
"cause": "Человек прекращает проявлять вредную привычку",
|
||||
"mechanism": "Мозг сохраняет нейронные связи, связанные с этой привычкой",
|
||||
"result": "Привычка может вернуться, если появятся подходящие стимулы"
|
||||
},
|
||||
{
|
||||
"cause": "Окружение меняется, и в нем появляются триггеры, связанные с прошлой привычкой",
|
||||
"mechanism": "Стимулы запускают автоматические паттерны поведения",
|
||||
"result": "Человек снова начинает делать то, что уже перестал"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Самоконтроль — это краткосрочный, а не долгосрочный инструмент",
|
||||
"description": "Противостояние искушению неэффективно на длительном сроке, нужно менять контекст",
|
||||
"example": "Человек отказывается от сладкого, но возвращается к нему после стрессового дня",
|
||||
"chains": [
|
||||
{
|
||||
"cause": "Человек пытается контролировать себя в момент искушения",
|
||||
"mechanism": "Это требует энергии и усилий, которые невозможно поддерживать всегда",
|
||||
"result": "Человек устаёт от борьбы и возвращается к нежелательной привычке"
|
||||
},
|
||||
{
|
||||
"cause": "Человек изменяет окружение, чтобы искушения стали менее доступными",
|
||||
"mechanism": "Стимулы для плохого поведения становятся незаметными или невозможными",
|
||||
"result": "Человек реже сталкивается с искушением"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Дисциплина — это настройка среды, а не внутреннее усилие",
|
||||
"description": "Сильные люди не просто дисциплинированы, а живут в среде, которая поддерживает их цели",
|
||||
"example": "Человек встаёт раньше, потому что спальня тёмная и не имеет гаджетов",
|
||||
"chains": [
|
||||
{
|
||||
"cause": "Человек пытается быть дисциплинированным только силой воли",
|
||||
"mechanism": "Это требует большого количества энергии и часто неудачно",
|
||||
"result": "Человек теряет мотивацию и возвращается к нежелательному поведению"
|
||||
},
|
||||
{
|
||||
"cause": "Человек настраивает окружение так, чтобы хорошее поведение было лёгким",
|
||||
"mechanism": "Стимулы для правильных действий становятся более доступными",
|
||||
"result": "Человек чаще выбирает здоровые привычки"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Негативные эмоции усиливают негативное поведение",
|
||||
"description": "Стресс, тревога и другие негативные чувства провоцируют возвращение к вредным привычкам",
|
||||
"example": "Человек садится на диван и ест шоколад, когда ему плохо",
|
||||
"chains": [
|
||||
{
|
||||
"cause": "Человек испытывает стресс или негативные эмоции",
|
||||
"mechanism": "Это активирует привычку, которая помогает снизить дискомфорт",
|
||||
"result": "Человек снова начинает делать то, что раньше снимало напряжение"
|
||||
},
|
||||
{
|
||||
"cause": "Человек пытается избавиться от вредной привычки, но не меняет среду",
|
||||
"mechanism": "Стресс и негативные эмоции остаются, усиливая желание к действию",
|
||||
"result": "Человек возвращается к нежелательной привычке"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
29
1_анализ_главы/выход_insig.json
Normal file
29
1_анализ_главы/выход_insig.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"insights": [
|
||||
{
|
||||
"title": "Среда влияет на привычки больше, чем сила воли",
|
||||
"description": "Чтобы изменить привычку, нужно изменить окружение, а не надеяться только на самоконтроль",
|
||||
"example": "Убрать телефон с рабочего стола, чтобы не отвлекаться на соцсети"
|
||||
},
|
||||
{
|
||||
"title": "Привычки не исчезают, только временно подавляются",
|
||||
"description": "Даже если человек перестаёт курить или есть сладкое, эти привычки остаются в мозге и могут вернуться при подходящих условиях",
|
||||
"example": "После посещения бара человек снова начинает пить, не осознавая этого"
|
||||
},
|
||||
{
|
||||
"title": "Негативные эмоции усиливают вредное поведение",
|
||||
"description": "Стресс, тревога и другие негативные чувства могут спровоцировать возвращение к старым привычкам",
|
||||
"example": "После ссоры человек снова начинает есть вредную пищу, чтобы успокоиться"
|
||||
},
|
||||
{
|
||||
"title": "Сокращение стимулов уменьшает повторение нежелательного поведения",
|
||||
"description": "Удаление триггеров, связанных с вредной привычкой, снижает вероятность её возобновления",
|
||||
"example": "Убрать сигареты из дома, чтобы уменьшить вероятность их употребления"
|
||||
},
|
||||
{
|
||||
"title": "Самоконтроль — это временная стратегия, а не долгосрочное решение",
|
||||
"description": "Постоянно бороться с искушением утомительно и непрочное; нужно настраивать среду так, чтобы искушений не было совсем",
|
||||
"example": "Поставить телефон в другую комнату, чтобы не проверять соцсети во время работы"
|
||||
}
|
||||
]
|
||||
}
|
||||
19
1_анализ_главы/выход_limit.json
Normal file
19
1_анализ_главы/выход_limit.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"limitations": [
|
||||
{
|
||||
"description": "Идеи не работают, если триггер (то, что в окружении запускает действие) не устранён или остаётся доступным, так как привычка может вернуться при появлении стимула",
|
||||
"when_relevant": "Когда человек не полностью убирает триггер из своей среды или сталкивается с ним в новой обстановке",
|
||||
"example": "Человек удалил сигареты из дома, но снова начинает курить на работе среди коллег-курильщиков"
|
||||
},
|
||||
{
|
||||
"description": "Техники могут не сработать, если негативные эмоции (стресс, тревога) остаются необратленными и усиливают нежелательное поведение",
|
||||
"when_relevant": "Когда человек продолжает испытывать сильный стресс или эмоциональные трудности, не решая их на уровне среды",
|
||||
"example": "Человек убрал телефон из комнаты, но всё равно переедает перед сном из-за хронической тревоги"
|
||||
},
|
||||
{
|
||||
"description": "Изменения среды могут быть недостаточны, если привычка закреплена на уровне автоматических нейронных паттернов и не сопровождается новыми, здоровыми привычками",
|
||||
"when_relevant": "Когда человек устраняет триггер, но не вводит альтернативное поведение для подкрепления",
|
||||
"example": "Человек убрал телевизор из спальни, но не нашёл замену в виде чтения или медитации и проводит время впустую"
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user