Разработал и задеплоил Telegram-бота с AI-чатом и голосовым управлением. Бот понимает текстовые и голосовые сообщения — речь распознаётся через faster-whisper локально, без облачных API. Интегрирован с HH.ru через OAuth 2.0 для работы с вакансиями. Бот общается через собственное Hermes API (FastAPI), которое маршрутизирует запросы к deepseek-v4-pro.
Развёрнут на собственном VPS: Docker-контейнер, systemd-автозапуск, healthcheck-эндпоинт, логирование.
Стек: Python 3.10+, aiogram 3.x, FastAPI, faster-whisper, HH OAuth 2.0, deepseek-v4-pro API, Docker, systemd
Ключевые фичи: — Голосовой ввод (Whisper base, CPU, int8) — AI-диалог с потоковым ответом, кнопка Stop — HH OAuth 2.0: авторизация, поиск вакансий — /status — мониторинг uptime и состояния — Продакшен-деплой: Docker + systemd + auto-restart
Спроектировал архитектуру сервиса из трёх слоёв: Telegram-бот (aiogram 3.x) → Hermes API (FastAPI) → внешние API (deepseek-v4-pro, HH.ru).
Бот написан на aiogram 3.x с разделением на роутеры (команды, голосовые сообщения, текстовый чат). Для голосового ввода интегрировал faster-whisper локально — модель base на CPU с квантованием int8, без облачных API. Инициализация lazy singleton, чтобы не тратить память при старте.
Hermes API на FastAPI: эндпоинты /chat, /health, /status. Маршрутизация запросов к deepseek-v4-pro с потоковым ответом (streaming). Кнопка Stop для прерывания генерации.
HH OAuth 2.0: полный флоу — генерация authorize URL, обмен authorization code на access token, запрос /me для профиля. Токены хранятся в .env.
Деплой: Docker-контейнер, docker-compose, systemd-сервис с auto-restart и healthcheck-эндпоинтом. Логирование через стандартный logging с ротацией.
Бот работает 24/7 на VPS . Принимает текстовые и голосовые сообщения — распознавание речи занимает ~1 секунду для 10-секундного аудио на CPU. AI-диалог через deepseek-v4-pro с возможностью остановки генерации в любой момент.
Интегрирован с HH.ru: пользователь авторизуется через OAuth и получает доступ к поиску вакансий прямо в Telegram.
Отказоустойчивость: systemd автоматически перезапускает контейнер при падении. Мониторинг через /status — uptime, версия, состояние.
Проект активно развивается: добавлены новые фичи (голос, OAuth), проведён рефакторинг (переименование сервиса, чистка кода). Код открыт на GitHub, ведётся документация.