AI-система когнитивно-поведенческой терапии (CBT AI)

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
AI-система когнитивно-поведенческой терапии (CBT AI)
Сложная
~2-4 недели
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    853
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

AI-система когнитивно-поведенческой терапии (КПТ)

КПТ хорошо поддаётся структуризации: её техники — это повторяемые протоколы с чёткой логикой. ABC-модель, дневник мыслей, экспозиция, поведенческая активация — всё это можно автоматизировать как интерактивные упражнения с AI-ведением. Не самостоятельная терапия, но расширение доступа к методам КПТ между сессиями с терапевтом.

Ключевые КПТ-модули в системе

Дневник автоматических мыслей — структурированный ABC (Activating event → Belief → Consequence), выявление когнитивных искажений, формулировка альтернативных мыслей.

Поведенческая активация — трекинг активностей с оценкой удовольствия/мастерства, планирование деятельности, отслеживание связи активности и настроения.

Экспозиционная иерархия — построение шкалы тревоги, пошаговая экспозиция с отслеживанием SUDS (Subjective Units of Distress Scale).

Mindfulness-упражнения — медитации с голосовым ведением, журнал настоящего момента.

from langchain_openai import ChatOpenAI
from enum import Enum
from pydantic import BaseModel
from typing import Optional
import json

class CognitiveDistortion(Enum):
    ALL_OR_NOTHING = "чёрно-белое мышление"
    CATASTROPHIZING = "катастрофизация"
    MIND_READING = "чтение мыслей"
    FORTUNE_TELLING = "предсказание будущего"
    EMOTIONAL_REASONING = "эмоциональное мышление"
    SHOULD_STATEMENTS = "долженствования"
    OVERGENERALIZATION = "сверхобобщение"
    PERSONALIZATION = "персонализация"
    MENTAL_FILTER = "фильтрация позитивного"
    LABELING = "навешивание ярлыков"

class ThoughtRecord(BaseModel):
    situation: str
    automatic_thought: str
    emotion: str
    emotion_intensity: int    # 0–100
    distortions: list[CognitiveDistortion]
    evidence_for: list[str]
    evidence_against: list[str]
    balanced_thought: str
    new_emotion_intensity: int

class CBTSessionEngine:
    THOUGHT_RECORD_PROMPT = """Ты — AI-ассистент, помогающий практиковать технику дневника мыслей КПТ.
Веди пользователя через шаги методично, один шаг за раз.
Не переходи к следующему шагу, пока пользователь не ответил на текущий.
Задавай открытые вопросы. Не интерпретируй за пользователя.
Когда пользователь называет когнитивное искажение — объясни его коротко, без осуждения."""

    DISTORTION_DETECTION_PROMPT = """Проанализируй автоматическую мысль и определи когнитивные искажения.

Мысль: "{thought}"
Контекст ситуации: "{situation}"

Из списка искажений КПТ определи 1–3 наиболее подходящих:
- Чёрно-белое мышление: всё/ничего, всегда/никогда
- Катастрофизация: худший возможный исход неизбежен
- Чтение мыслей: "Я знаю, что они думают"
- Предсказание будущего: "Это точно провалится"
- Эмоциональное мышление: "Я чувствую себя неудачником, значит я неудачник"
- Долженствования: "Я должен", "Мне нельзя"
- Сверхобобщение: "Всегда так случается"
- Персонализация: принятие ответственности за внешние события

Верни JSON: {{distortions: [{{name, explanation_for_user}}]}}"""

    def __init__(self):
        self.llm = ChatOpenAI(model="gpt-4o", temperature=0.3)

    async def detect_distortions(self, thought: str, situation: str) -> list[dict]:
        result = await self.llm.ainvoke(
            self.DISTORTION_DETECTION_PROMPT.format(
                thought=thought,
                situation=situation
            )
        )
        return json.loads(result.content)["distortions"]

    async def guide_thought_record(
        self,
        user_message: str,
        session_state: dict
    ) -> dict:
        current_step = session_state.get("current_step", "situation")

        step_prompts = {
            "situation": "Что именно произошло? Опиши конкретную ситуацию — когда, где, что случилось.",
            "thought": "Какая мысль промелькнула в голове в этот момент? Постарайся поймать именно первую автоматическую реакцию.",
            "emotion": "Что ты почувствовал(а)? Назови эмоцию и оцени её интенсивность от 0 до 100.",
            "evidence_for": "Какие факты подтверждают эту мысль? Только реальные факты, не чувства.",
            "evidence_against": "Какие факты противоречат этой мысли?",
            "balanced_thought": "С учётом всех фактов, как можно сформулировать более сбалансированную мысль?"
        }

        # Сохраняем ответ пользователя
        session_state[current_step] = user_message

        # Если шаг 'thought' — анализируем искажения
        if current_step == "thought" and "situation" in session_state:
            distortions = await self.detect_distortions(
                user_message, session_state["situation"]
            )
            session_state["distortions"] = distortions

        # Определяем следующий шаг
        steps = list(step_prompts.keys())
        current_idx = steps.index(current_step)
        next_step = steps[current_idx + 1] if current_idx < len(steps) - 1 else "complete"

        session_state["current_step"] = next_step

        if next_step == "complete":
            return await self._summarize_thought_record(session_state)

        response_text = step_prompts[next_step]

        # При переходе к "evidence_for" добавляем информацию об искажениях
        if next_step == "evidence_for" and session_state.get("distortions"):
            distortion_names = ", ".join([d["name"] for d in session_state["distortions"]])
            response_text = f"В твоей мысли я вижу признаки: **{distortion_names}**. Но давай не будем торопиться с выводами.\n\n{response_text}"

        return {"response": response_text, "step": next_step, "state": session_state}

Поведенческая активация: трекинг активностей

class BehavioralActivationTracker:
    async def log_activity(
        self,
        activity: str,
        pleasure_score: int,    # 0–10
        mastery_score: int,     # 0–10
        mood_before: int,       # 0–10
        mood_after: int         # 0–10
    ) -> dict:
        mood_change = mood_after - mood_before
        insight = await self._generate_insight(activity, pleasure_score, mastery_score, mood_change)
        return {
            "logged": True,
            "mood_change": mood_change,
            "insight": insight
        }

    async def _generate_insight(self, activity, pleasure, mastery, mood_change) -> str:
        if mood_change > 2:
            return f"После {activity} настроение улучшилось на {mood_change} баллов. Это важный сигнал — такие активности стоит планировать чаще."
        elif mood_change < -1:
            return f"Активность {activity} снизила настроение. Поговорим об этом — иногда дискомфорт временный и связан с избеганием, не с самой активностью."
        return "Активность зафиксирована. Продолжаем отслеживать паттерны."

Кейс: корпоративная программа поддержки ментального здоровья, 1200 сотрудников. AI-модуль КПТ использовался как самопомощь между встречами с корпоративным психологом. За 3 месяца: 340 уникальных пользователей, в среднем 4.2 сессии на пользователя. По опросу: 67% отметили снижение интенсивности тревожных мыслей, 71% — полезность дневника мыслей как инструмента.

Этические ограничения: система не работает с тяжёлой депрессией, суицидальными мыслями, психозами. Все эти случаи автоматически перенаправляются к специалисту.

Сроки: базовые КПТ-модули (дневник мыслей + поведенческая активация): 4–6 недель; полная платформа с трекингом и аналитикой прогресса: 10–14 недель.