Я написал Telegram-бота для Gemini с фокусом на приватность. Теперь он в open-source.
Проблема: Где мои данные?
Всем привет!
На рынке существует несколько моделей работы AI-ботов. Самые распространенные используют собственный API-ключ разработчика и вводят лимиты или платную подписку. Мой проект относится к другой, более нишевой категории — ботам, работающим по модели BYOK (Bring Your Own Key). По сути, MyGemini — это просто удобный и безопасный интерфейс, который использует ваш личный API-ключ для доступа к Gemini, давая вам полный контроль над расходами и лимитами.
Я активно использую Google Gemini, но меня всегда беспокоил один вопрос при работе со сторонними Telegram-ботами: "Что происходит с моим API-ключом и историей переписки?" Передавать ключ, привязанный к моему аккаунту, в неизвестный закрытый сервис — большой риск.
Я хотел решение, где я сам контролирую свои данные. Поскольку готового варианта, который бы меня полностью устроил, я не нашел, я написал его сам.
Сегодня я рад поделиться проектом MyGemini. Это Telegram-бот, который предлагает два пути использования — для тех, кто ценит максимальную приватность, и для тех, кому важнее удобство.
Два пути — выберите свой:
Путь 1: Максимальная приватность (Разверните свою копию)
Для тех, кто, как и я, не хочет доверять свои данные никому. Весь проект опубликован на GitHub под свободной лицензией MIT.
>> Посмотреть код на GitHub: https://github.com/kobaltgit/MyGemini
Вы можете запустить точную копию этого бота на своем собственном сервере или даже домашнем компьютере. В этом случае:
- Ваш API-ключ никогда не покидает вашей системы.
- Вся история переписки хранится в вашей локальной базе данных.
- Вы получаете полный контроль над кодом и данными.
Это идеальный вариант для разработчиков и всех, кто серьезно относится к приватности.
Путь 2: Удобство и быстрый старт (Используйте моего бота)
Если вы доверяете open-source проектам и хотите просто начать пользоваться ботом прямо сейчас, я разместил на своем сервере публичную версию.
>> Попробовать MyGemini прямо сейчас: https://t.me/mgem_bot
В этой версии вам потребуется предоставить свой Google AI API ключ, но с важным отличием: вы делаете это, зная, что бот работает на полностью открытом исходном коде. Вы в любой момент можете зайти на GitHub и убедиться, что код делает именно то, что заявлено: надежно шифрует ваш ключ и использует его только для отправки запросов в Google.
Ключевые возможности бота:
- Раздельные диалоги: Создавайте независимые чаты для разных тем (работа, хобби, учеба), и их контексты никогда не смешаются.
- Настраиваемые "Персоны": Превратите бота в "Эксперта по Python", "Историка" или "Копирайтера" одним кликом.
- Понимает изображения и голос: Отправьте картинку или запишите голосовое сообщение — бот поймет и ответит.
- Поиск в интернете: Может использовать Google Поиск для ответов на актуальные вопросы.
Заглянем под капот
Проект написан на Python 3.10+ с фокусом на современную асинхронную архитектуру.
- Асинхронное ядро: Всё построено на asyncio. Я использовал асинхронную версию pyTelegramBotAPI и aiohttp для неблокирующих запросов к Gemini REST API.
- Чистая конфигурация: Секреты хранятся в .env, а логирование подробно настраивается через logging.yaml, что позволяет разделять логи на несколько файлов (общие, БД, API и т.д.).
- Неблокирующая БД: Используется простой sqlite3, но все операции с базой данных выполняются в отдельном потоке через asyncio.to_thread, чтобы не тормозить основной цикл событий.
- Обработка сообщений: Длинные ответы от модели, особенно с кодом, грамотно делятся на части с помощью MarkdownTextSplitter из библиотеки LangChain, а telegramify-markdown гарантирует корректное экранирование для MarkdownV2 формата Telegram.
Этот проект стал для меня отличным опытом погружения в asyncio, и теперь это мой основной инструмент для работы с Gemini.
Независимо от того, просто ли вы ищете мощного ИИ-ассистента в Telegram или вы разработчик, который ищет интересный проект для изучения и доработки, — буду рад, если вы его оцените.
Буду благодарен за отзывы, а звезда на GitHub сделает мой день! Спасибо, что дочитали.