Саммари-бот для групп Телеграм

Я как руководитель веб-студии, состою во многих группах – на каждый проект минимум одна. Когда ведётся активная работа по проекту – обсуждаются вопросы, уточняются детали – сообщений может быть много. Передо мной встала задача – как не упустить важное, быть в курсе ключевых договорённостей, своевременно принимать решения.

Подумал и в один из свободных (нет) вечеров решил разработать Телеграм бота, который согласно заданным настройкам будем делать саммари по сообщениям (на момент разработки никаких готовых решений найти не удалось).

Бот написан несколько месяцев назад, мы используем его для внутренних задач. И я готов поделиться им с вами!

Возможности

  • Автоматическая генерация саммари один раз в день или один раз в неделю.
  • Ручная генерация саммари по последним 100 сообщениям в чате, посредством ввода команды /summary.

Начало работы

  1. Перейти в бота по ссылке или найти в поиске @wk_summary_bot.
  2. Нажать кнопку "Добавить бота в группу", выбрать группу из списка.
    Или пригласить бота в группу стандартным образом, через управление участниками.
  3. По умолчанию акивируется ежедневная генерация саммари. Для изменения настроек перейти в бота, ввести команду /settings, выбрать нужную группу и указать настройки.

Как генерируется саммари

  1. В 16:00 МСК ежедневно или каждую пятницу (в зависимости от настроек) получаем список всех сообщений (не старее предыдущей генерации саммари).
  2. Ограничиваем список сообщений лимитом в 50 тыс. символов (отсекаем более старые сообщения).
  3. Формируем запрос в нейросеть: инструкция + список сообщений. Делим запрос на несколько частей, чтобы не упереться в лимиты нейросети.
  4. Отправляем запрос в нейросеть (ChatGPT 4o).
  5. Дожидаемся ответа от нейросети, форматируем и отправляем сообщений в группу.

Используемый промпт

Я приведу тебе историю переписки нескольких людей. Создай саммари (резюме) с выделением всех ключевых договорённостей за каждый день. Структура итогового сообщения: Саммари (заголовок уровня 1) Дата (заголовок уровня 2) Саммари дня Дата (заголовок уровня 2) Саммари дня и так по каждому дню, согласно датам в сообщениях Общие итоги (заголовок уровня 1) Общий итог по всем сообщениям... Добавляй в саммари имена пользователей и даты, если это необходимо для понимания контекста. Если были какие-то договорённости по срокам – укажи их; если сроки были пропущены или отложены – укажи это. Сообщение должно быть отформатировано так, чтобы человеку было удобно его читать. В ответе верни только результат, без лишнего текста. Сообщения: Фамилия Имя ДатаИВремя Сообщение Фамилия Имя ДатаИВремя Сообщение

Ограничения

На момент написания поста существует 2 ограничения:

  1. Общая длина текста сообщений при генерации запроса к нейросети не может превышать 50 тыс. символов.
  2. Генерация ручного саммари (команда /summary) доступна не чаще одного раза в час.

Настраивайте частоту генерации саммари в зависимости от количесва сообщений в вашей группе.

Безопасность данных

Когда вы добавляете нашего бота в группу, он получает доступ ко всем вашим сообщениям. Мы сохраняем эти сообщения в нашей базе данных. После генерации саммари, мы удаляем сообщения из базы.

Если генерация саммари отключена, мы автоматически удаляем все сообщения старше одной недели.

Мы не распространяем, не продаём и не делимся данными с третьими лицами. Но если вам нужно обеспечить ещё большую конфиденциальность или вы работаете с чувствительными данными, мы рекомендуем развернуть наш сервис на своих серверах и хранить сообщения в собственной базе данных.

Исходный код проекта можно найти на GitHub, он находится в открытом доступе.

Также мы готовы предложить нашего бота для коммерческого использования. Если вас заинтересовало наше предложение, пожалуйста, свяжитесь с нами для обсуждения условий.

TODO`s

  1. Настройка времени генерации саммари.
  2. Настройка промпта на генерацию саммари пользователем.
  3. Настройка часового пояса.
  4. Добавление пользовательского соглашения, оферты.
  5. Добавление платной версии без ограничений.

Буду благодарен обратной связи и предложениям по улучшению!

33
Начать дискуссию