Chat Digest
Итоги чата и живые ответы: текст, голос, фото и видео
- Состав проекта
- Telegram-бот, обработка медиа, память и дайджесты
- Материалы
- По запросуКод в закрытом репозитории
Задача
Помочь участникам следить за разговором в групповом чате: собрать главное за день и ответить по контексту, когда бота зовут по имени, отмечают или отвечают на его сообщение.
Решение
Разработал бота на Python. Он сохраняет переписку в SQLite, расшифровывает голосовые и звук из видео, описывает фото и ключевые кадры мультимодальной моделью и удаляет исходные файлы после анализа. В полночь модель получает ленту дня, память чата и прошлые выпуски и пишет итог. По имени, упоминанию или ответу на его сообщение бот включается в разговор с учётом недавних реплик. Отдельный проход LLM ведёт память: сленг, мемы и подтверждённые факты об участниках.
Сложности
Не путать авторов реплик, не повторять темы прошлых выпусков и вовремя промолчать: если день был тяжёлым, выпуск не выходит, а пропуск записывается в журнал.
Результат
Бот публикует итог дня по расписанию и коротко отвечает, когда к нему обращаются по имени. Тесты и регрессия промпта работают без внешних API, а предпросмотр собирает итог на копии базы без отправки в чат.
Возможности
Голос, видео и фото
Whisper расшифровывает речь, FFmpeg извлекает кадры, мультимодальная модель описывает изображения.
Память чата
Факты привязываются к Telegram ID участника; неподтверждённые отбрасываются.
Учёт прошлых выпусков
Модель видит предыдущие итоги и использованные темы, чтобы не повторять одни и те же шутки.
Ответы в чате
Короткий ответ по имени, упоминанию или reply с учётом авторов, недавних реплик и обработанных медиа.
Устройство
- Telegram Bot APIприём сообщений, файлов и обращений к боту
- FFmpegкадры и звук из видео
- PolzaWhisper, зрение и Gemini 3.1 Flash Lite
- SQLiteсообщения, очередь медиа, память и журнал выпусков
- systemdзапуск на сервере
Стек
- Python 3.11
- Telegram Bot API
- SQLite
- Polza.ai
- Gemini 3.1 Flash Lite
- Whisper API
- FFmpeg
- systemd
Презентация
