Что в черном ящике? #1
Сегодня я почувствовал, что мне неудобно переключаться между окнами, чтобы вручную добавлять события в календарь.
И тут же я захотел написать Telegram-бота с AI, который планировал бы мероприятия прямо на свободные слоты. Чтоб так "рас рас и готово".
Есть вариант собрать бота на n8n или другом «сервисе построения автоматизированных цепочек». Однако в таком случае придется оплачивать подписку. Поэтому я предпочел self-hosted решение – то есть запустить все на своей машине.
Стал искать подобный инструмент с помощью ChatGPT – и нашел репозиторий Calibot. Никогда не видел на гитхабе проект с таким уровнем документации – там есть и видео с демонстрацией, и диаграмма компонентов, и сиквенсы! Может, я плохо искал? Да не суть...
Структура репозитория
calibot/
├── backend/
│ └── app/ # весь код приложения
│ ├── agent/ # NLP-агент: извлечение намерений из сообщений
│ ├── api/ # маршруты FastAPI, модели запросов/ответов
│ ├── services/ # основная бизнес-логика: календарь, Telegram, LLM-интеграция
│ ├── utils/ # утилиты/хелперы
│ ├── config.py # конфигурация (env, ключи, настройки)
│ ├── main.py # точка входа при запуске сервера
│ └── prompts.py # prompt-шаблоны для LLM
├── .python-version # версия Python
├── pyproject.toml # зависимости проекта (pip / poetry-подобное)
├── README.md # описание, инструкция по запуску и настройке
├── calibot_demo.mp4 # демонстрация как работает бот (видео)
├── calibot_system_design.png # схема архитектуры
└── calibot_sequence_diagram.png # диаграмма последовательности взаимодействий
Давайте разберем как оно работает:
0. Настраиваем конфиг (в частности токен Telegram-бота, ключи от Google Календаря, ключи от AI-модели). Без этого ничего не заведется.
1. Сообщение, отправленное через интерфейс Telegram-бота, поступает в наш сервис, на слой NLP-процессора. Определяется релевантность сообщения (это сообщение про событие для календаря?), затем сообщение структурируется – превращается в четкий запрос к AI. Интересный подход, попытка сделать ответы AI более предсказуемыми. Кстати, сделано это также с помощью AI. Посмотрите
2. Отправляется запрос к AI согласно типу команды, с соответствующим промптом.
3. Действия, запрошенные пользователем, осуществляются посредством интеграции с Google Календарем. При этом происходит авторизация и исполнение самих запросов.
4. Весь процесс логируется в БД, а рассылка уведомлений организована через webhook.
В итоге я задумался: почему таких продуктов нет на рынке? Только этот репозиторий с 40 звездами…
А причина вот в чем – ценность сомнительна.
Что мы оптимизируем? Пару секунд переключения на интерфейс календаря?
Пока я выяснял, как сделать своего бота, я забыл, какой сегодня день, и... полез в календарь.
Авторам репозитория – огромный респект за схемы! Благодаря им легко понять, как все устроено.
10 лайков – и мы продолжим ковыряться в открытых сервисах и смотреть "как они работают изнутри".
@analyst_exe