Бот-терапевт в экзистенциальном подходе + RAG на кастомных данных
Кейс в категории «AI - искусственный интеллект»: задача, подход к работе и результат для заказчика.
Кейс в категории «AI - искусственный интеллект»: задача, подход к работе и результат для заказчика.
1) Задача
Сделать Telegram-бота для психологической поддержки в подходе экзистенциальной терапии (традиция Ялома и Франкла). Главная сложность таких ботов — модель «галлюцинирует»: уверенно несёт отсебятину вместо опоры на проверенный материал. Нужно было заставить бота отвечать, опираясь на реальный корпус: профессиональные книги + датасет живых ассоциаций людей.
2) Процесс
Собрал RAG-конвейер: книги (PDF/DOCX) очищаются от HTML-тегов, режутся на фрагменты, индексируются в векторную базу ChromaDB, и под каждый запрос пользователя система достаёт релевантные куски — бот отвечает уже с опорой на них.
Поверх этого находится второй слой поиска по датасету ассоциаций: гибрид из быстрого индекса "слово —> записи" и семантического поиска. Добавил мультимодальность: помимо текста бот понимает голосовые (распознавание речи), фото и стикеры. Интерфейс — двуязычный (ru/en) с автоопределением языка.
*отдельно проработал экономику. Сделал абстракцию над LLM-провайдерами (Together AI, OpenAI взаимозаменяемы) и просчитал стоимость на разных нагрузках — от ~$1.5 до ~$15 в месяц (зависит от числа пользователей). Заказчик видит прогнозируемый бюджет на эксплуатацию заранее.
3) Результат
Рабочий бот (@roi_therapy_bot), 145 запустивших пользователей на органике, около трети возвращаются и пользуются регулярно — для бесплатного экспериментального проекта без бюджета на продвижение это хороший показатель удержания. Код открыт, чистая структура, тесты, конфигурация через .env (без хард-кода уязвимых данных прямо в скриптах :D).
Стек:
Python · ChromaDB · sentence-transformers · RAG · OpenAI/Together · Telegram Bot API · мультимодальность (voice/image)
GitHub: github.com/WhatAMistake/roi
В картинках — некоторые из отзывов пользователей в форме обратной связи (персональные данные замазаны)