English translation — made by Alt004
Персональный помощник на основе модели OpenAI GPT-3.5-turbo и GPT-4o, работающий в Telegram. Он обрабатывает сообщения пользователей, отправляет их на сервер OpenAI и возвращает сгенерированный ответ. Бот поддерживает систему баланса токенов для каждого пользователя, которые используются для запросов к API. Пользователи могут приглашать других пользователей и получать бонусные токены. Бот также предоставляет возможность установки пользовательского системного промпта для модификации стиля ответов.
Сгенерировано самим ботом
Бот отправляет сообщения пользователей по OpenAI API в ChatGPT и возвращает обратно текст ответа. Логи обо всех запросах пользователей приходят админу в личку. Админ имеет полное управление над ботом с помощью специальных команд администратора.
Доступно две основные языковые модели:
- Основная:
gpt-3.5-turbo-0125
, контекстное окно 16k токенов - Премиум:
gpt-4o
, контекстное окно 128k токенов
Для генерации изображений используется модель dall-e-3
, для транскрибации голосовых сообщений - Whisper V2
.
Для работы необходимо создать и заполнить файл .env
в директории скрипта своими значениями следующим образом:
OPENAI_API_KEY=yourapikey
TELEGRAM_API_KEY=yourbottoken
ADMIN_CHAT_ID=123456789
В данном файле:
OPENAI_API_KEY
- API-ключ от OpenAITELEGRAM_API_KEY
- API-токен от бота в TelegramADMIN_CHAT_ID
- ID админа в Telegram
В репозитории находится файл example.env
- это образец необходимого для работы .env
файла.
Достаточно заполнить его своими значениями и переименовать, чтобы не создавать файл самостоятельно.
python main.py
При первом запуске в директории скрипта будет автоматически создан файл data.json
,
в котором будут храниться все необходимые данные.
При каждом последующем запуске скрипт будет читать данные из ранее созданного файла. Обновление файла происходит по мере работы.
Каждому новому пользователю по умолчанию выдается 30к токенов, которые можно использовать в сообщениях боту для запросов по API.
При регистрации по реферальной ссылке начисляется бонус в 20к токенов как пригласившему, так и приглашенному пользователю.
Общение с ботом происходит в формате "один запрос - один ответ", но, если ответить на конкретное сообщение бота (reply), то последующий ответ будет включать в себя контекст сообщения, на которое ответил пользователь. Это позволяет продолжать беседу, придерживаясь основной темы, без необходимости прописывать контекст в каждом сообщении.
При общении в личных сообщениях бот отправляет ответы в диалог, а при общении в групповых чатах - отвечает на конкретное сообщение.
По умолчанию, бот при каждом запросе использует стандартный системный промпт - "You are a helpful assistant"
,
но пользователь, при желании, может указать свой собственный системный промпт через команду /prompt
.
Вернуть системный промпт по умолчанию можно с помощью команды /reset_prompt
.
Модель по умолчанию - gpt-3.5-turbo-1106
, но пользователь может переключить активную языковую модель через команду /switch_model
. Для использования премиум модели gpt-4o
необходим положительный баланс премиум токенов.
Если загрузить изображение и добавить к нему подпись, то запрос будет сделан при помощи модели gpt-4o
, где в качестве контекста выступают одновременно и подпись, и изображение. Подобный запрос расходует баланс премиум токенов.
К боту также можно делать обращения с помощью войсов - голосовых сообщений Телеграм. В таком случае каждая секунда войса вычитает 50 токенов с баланса пользователя. Для транскрибации голосовых сообщений используется модель Whisper V2
.
{
"global": {
"requests": 0,
"tokens": 0
},
"admin_id": {
"requests": 0,
"tokens": 0,
"balance": 777777,
"last_request": "2021-01-01 00:00:00"
},
"user1": {
"requests": 0,
"tokens": 0,
"balance": 30000,
"name": "John",
"username": "@johndoe",
"last_request": "2021-01-01 00:00:00",
"prompt": "You are Marv - a sarcastic reluctant assistant"
}
}
"global"
- общая статистика бота о количестве запросов и использованных токенов- Статистика админа: число запросов, использованных токенов, несгораемый баланс и дата последнего обращения
- Статистика каждого из пользователей: число запросов, использованных токенов, баланс, имя, @юзернейм и дата последнего обращения
/start
- начало работы: регистрация в системе и получение стартового баланса токенов
/help
- список доступных команд
/invite
или /ref
- получить реферальную ссылку для приглашения новых пользователей
/stats
- вывод статистики по количеству запросов и сумме использованных токенов
/balance
- текущий баланс обычных и премиум токенов
/prompt
или /p
- установка своего системного промпта
/reset_prompt
- сброс системного промпта на стандартный
/topup
- плейсхолдер команды для пополнения баланса
/ask_favor
- запрос бесплатных токенов у админа
/imagine
или /img
или /i
- генерация изображения по текстовому описанию
/switch_model
или /switch
или /sw
- переключение активной языковой модели
/pro
или /prem
или /gpt4
- сделать быстрый запрос с помощью GPT-4 без переключения активной языковой модели
/data
или /d
- отправить админу копию файла data.json
или данные конкретного пользователя по его user_id или @username
/refill
или /r
- пополнение баланса пользователя
/block
или /ban
- заблокировать пользователя
/stop
- полностью останавливает бота
/announce
или /a
или /notify
- отправить сообщение всем или выбранным пользователям бота
/recent_users
или /recent
- получить список активных пользователей за последние n дней
/top_users
или /top
- получить список топ n лучших пользователей по указанному параметру