Telegram-бот с ИИ-ассистентом, который отвечает на вопросы о здоровом образе жизни по базе знаний (RAG). Также умеет считать КБЖУ, ставить напоминания и давать рекомендации по питанию и привычкам.
Командный проект. На его основе позже было сделано веб-приложение HealthGo.
- ИИ-ассистент (RAG) — отвечает на вопросы только по базе знаний: находит похожие по смыслу тексты и генерирует ответ локальной LLM
- Пополнение базы знаний — пользователь может добавить новое знание прямо в боте, оно сохраняется в векторную БД
- Калькулятор КБЖУ — расчёт калорий, белков, жиров и углеводов по формуле Миффлина — Сан Жеора
- Напоминания — о воде, сне и упражнениях в выбранное время
- Рекомендации — по питанию и полезным привычкам
- Определения понятий — поиск и добавление понятий в семантическую базу знаний OSTIS
- Профиль пользователя — регистрация, просмотр и удаление данных
- Вопрос пользователя превращается в эмбеддинг (модель
mxbai-embed-large) - ChromaDB находит 3 самых близких по смыслу текста из базы знаний
- Найденные тексты и вопрос подставляются в промпт (LangChain)
- Локальная LLM
llama3.2генерирует ответ только на основе найденного контекста
Модели запускаются локально через Ollama.
| Компонент | Технология |
|---|---|
| Бот | Python, aiogram 3 |
| ИИ / RAG | LangChain, Ollama (llama3.2, mxbai-embed-large), ChromaDB |
| База знаний | OSTIS (sc-client, sc-kpm) |
| Планировщик напоминаний | APScheduler |
- Установите Ollama и скачайте модели:
ollama pull llama3.2 ollama pull mxbai-embed-large
- Установите зависимости:
pip install -r requirements.txt
- Создайте файл
.envв корне проекта:BOT_TOKEN=ваш_токен_от_BotFather - Запустите OSTIS (используется для определений понятий)
- Запустите бота:
python main.py
/start— начало работы/help— справка/register— регистрация/profile— профиль/delete_me— удалить свои данные/define <понятие>— найти определение
main.py # точка входа: запуск бота и планировщика
app/
handlers.py # основные обработчики: КБЖУ, рекомендации, профиль
rag_system.py # RAG: промпт + LLM
rag_data_manager.py # ChromaDB: добавление и поиск знаний
rag_handlers.py # вопросы к ИИ
rag_creation_handlers.py # добавление знаний через бота
reminder_handler.py # напоминания
calorie_calculator.py # расчёт КБЖУ
definition_handler.py # определения понятий
keyboards.py # клавиатуры
ostis_client.py # подключение к OSTIS
ostis_manager.py # работа с узлами OSTIS