Этот Telegram-бот транскрибирует голосовые сообщения, видео, видео-кружочки и аудиофайлы, а затем создает их краткое и развернутое резюме с помощью AI.
- Высокая производительность: Написан на компилируемом языке Go, что обеспечивает минимальное потребление CPU и памяти.
- Поддержка медиа: Обрабатывает голосовые сообщения, видео, видео-кружочки и аудиофайлы (
mp3,wav,oga). - Два AI провайдера на выбор:
- Google Gemini AI: Использует модели
gemini-2.5-flashиgemini-2.0-flashдля транскрипции и суммаризации. - Groq AI: Использует
Whisperдля транскрипции иKimi-k2/Llama 3.3для суммаризации.
- Google Gemini AI: Использует модели
- Надежность: Встроена логика ретраев и переключения на резервную модель (
fallback) при сбоях API. - Гибкая настройка: Названия моделей и все системные промпты легко настраиваются через переменные окружения.
- Язык: Go (1.24+)
- Взаимодействие с AI:
- Google:
google.golang.org/genai - Groq: REST API через
net/http
- Google:
- Взаимодействие с Telegram: Стандартная библиотека
net/http - Обработка медиа:
ffmpeg(требуется для конвертации) - Развертывание: Docker & Docker Compose
- Git
- Docker и Docker Compose
- Для локальной разработки: Go 1.24+ и
ffmpegв системномPATH.
Создайте файл .env в корневой директории проекта. Ниже приведены примеры конфигурации для каждого провайдера.
# =======================================
# ОБЯЗАТЕЛЬНЫЕ ПЕРЕМЕННЫЕ
# =======================================
# Токен вашего Telegram бота, полученный от @BotFather
BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
# Выбор AI провайдера: "google" или "groq" (по умолчанию: google)
AI_PROVIDER=google
# Ключ API для Google Gemini, полученный из Google AI Studio
GOOGLE_API_KEY=AIzaSyA...
# =======================================
# ОПЦИОНАЛЬНЫЕ ПЕРЕМЕННЫЕ
# (Если не указаны, используются значения по умолчанию)
# =======================================
# --- Настройка моделей Gemini ---
# Основная модель для транскрипции и суммаризации
PRIMARY_MODEL=gemini-2.5-flash
# Резервная модель на случай сбоя основной
FALLBACK_MODEL=gemini-2.0-flash
# --- Настройка промптов для суммирования ---
# Системный промпт, задающий роль и стиль ответов ассистента
# SYSTEM_PROMPT="Вы - ассистент..."
# Шаблон основного промпта. %s будет заменен на транскрипцию.
# USER_PROMPT_TEMPLATE="Сделай резюме для этого текста: %s"
# Шаблон для создания супер-краткого резюме. %s будет заменен на транскрипцию.
# SHORT_PROMPT_TEMPLATE="Выдели главную мысль в 1-2 предложениях из этого: %s"# =======================================
# ОБЯЗАТЕЛЬНЫЕ ПЕРЕМЕННЫЕ
# =======================================
# Токен вашего Telegram бота, полученный от @BotFather
BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
# Выбор AI провайдера: "google" или "groq"
AI_PROVIDER=groq
# Ключ API для Groq, полученный из Groq Console
GROQ_API_KEY=gsk_...
# =======================================
# ОПЦИОНАЛЬНЫЕ ПЕРЕМЕННЫЕ
# (Если не указаны, используются значения по умолчанию)
# =======================================
# --- Настройка моделей Groq ---
# Модель Whisper для транскрипции аудио
GROQ_WHISPER_MODEL=whisper-large-v3-turbo
# Основная модель для суммаризации (Kimi-k2)
GROQ_PRIMARY_MODEL=moonshotai/kimi-k2-instruct-0905
# Резервная модель для суммаризации (Llama 3.3)
GROQ_FALLBACK_MODEL=llama-3.3-70b-versatile
# --- Настройка промптов для суммирования ---
# (Такие же, как для Google провайдера)
# SYSTEM_PROMPT="Вы - ассистент..."
# USER_PROMPT_TEMPLATE="Сделай резюме для этого текста: %s"
# SHORT_PROMPT_TEMPLATE="Выдели главную мысль в 1-2 предложениях из этого: %s"docker compose up --build -dПроверить логи можно командой:
docker compose logs -f| Функция | Google Gemini | Groq |
|---|---|---|
| Транскрипция | Gemini (мультимодальный) | Whisper Large v3 Turbo |
| Суммаризация | Gemini Flash | Kimi-k2 / Llama 3.3 |
| Скорость | Средняя | Высокая (LPU) |
| Бесплатный лимит | Ограниченный | Щедрый |
- Отправьте боту голосовое сообщение, видео, видео-кружочек или аудиофайл.
- Бот ответит сообщением о том, что файл принят в обработку.
- Через некоторое время бот пришлет два сообщения:
- Transcription: Полная текстовая расшифровка аудио.
- Summary: Структурированное резюме, скрытое под спойлером для удобства.
Ответьте на сообщение бота с транскрипцией словом кратко, и бот создаст ещё более короткое резюме (1-2 предложения).
| Переменная | Обязательная | По умолчанию | Описание |
|---|---|---|---|
BOT_TOKEN |
Да | - | Токен Telegram бота |
AI_PROVIDER |
Нет | google |
Провайдер AI (google или groq) |
| Переменная | Обязательная | По умолчанию | Описание |
|---|---|---|---|
GOOGLE_API_KEY |
Да* | - | API ключ Google AI Studio |
PRIMARY_MODEL |
Нет | gemini-flash-latest |
Основная модель |
FALLBACK_MODEL |
Нет | gemini-flash-lite-latest |
Резервная модель |
| Переменная | Обязательная | По умолчанию | Описание |
|---|---|---|---|
GROQ_API_KEY |
Да* | - | API ключ Groq |
GROQ_WHISPER_MODEL |
Нет | whisper-large-v3-turbo |
Модель транскрипции |
GROQ_PRIMARY_MODEL |
Нет | moonshotai/kimi-k2-instruct-0905 |
Основная модель суммаризации |
GROQ_FALLBACK_MODEL |
Нет | llama-3.3-70b-versatile |
Резервная модель суммаризации |
| Переменная | Описание |
|---|---|
SYSTEM_PROMPT |
Системный промпт для модели |
USER_PROMPT_TEMPLATE |
Шаблон промпта для суммаризации (%s = транскрипция) |
SHORT_PROMPT_TEMPLATE |
Шаблон для краткого резюме (%s = транскрипция) |
*Обязательна при выборе соответствующего провайдера.