Skip to content

🤖 A Telegram bot that integrates with OpenAI's official ChatGPT APIs to provide answers, written in Python

License

Notifications You must be signed in to change notification settings

fisuri/chatgpt-telegram-bot

 
 

Repository files navigation

Чат-бот Telegram ChatGPT

python-version openai-version license Publish Docker image

A Telegram bot that integrates with OpenAI's official ChatGPT, DALL·E and Whisper APIs to provide answers. Ready to use with minimal configuration required.

Скриншоты

demo

Особенности

  • Поддержка разметки в ответах
  • Сброс разговора с помощью команды /reset.
  • Индикатор набора текста при генерации ответа
  • Доступ можно ограничить, указав список разрешенных пользователей
  • Поддержка Docker и прокси
  • (NEW!) Создание изображений с помощью DALL-E через команду /image
  • (NEW!) Расшифровка аудио- и видеосообщений с помощью Whisper (может потребоваться ffmpeg)
  • (NEW!) Автоматическое подведение итогов разговора во избежание чрезмерного использования токенов
  • (NEW!) Отслеживать использование токенов по каждому пользователю - @AlexHTW
  • (NEW!) Получите статистику использования персонального токена и стоимость в день/месяц с помощью команды /stats - @AlexHTW
  • (NEW!) Бюджеты пользователей и бюджеты гостей - @AlexHTW
  • (NEW!) Поддержка потока
  • (NEW!) Поддержка GPT-4
    • Если у вас есть доступ к API GPT-4, просто измените параметр OPENAI_MODEL на gpt-4
  • (NEW!) Локализация языка бота
    • Доступные языки 🇬🇧 🇩🇪 🇷🇺 🇹🇷 🇮🇹 🇫🇮 🇪🇸 🇮🇩 🇳🇱 🇨🇳 🇹🇼 🇻🇳 🇮🇷
  • (NEW!) Улучшена поддержка встроенных запросов для групповых и приватных чатов - @bugfloyd
    • Чтобы использовать эту функцию, включите встроенные запросы для вашего бота в BotFather с помощью команды /setinline command

Дополнительные функции - нужна помощь!

Если вы хотите помочь, ознакомьтесь с issues раздел и внести свой вклад!
Если вы хотите помочь с переводами, загляните в раздел Translations Manual

PR всегда приветствуются!

Предварительные требования

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

Конфигурация

Скопируйте accounts.json.example и переименуйте его в accounts.json.

Настройте конфигурацию, скопировав файл .env.example и переименовав его в .env а затем отредактируйте необходимые параметры по желанию:

Параметр Описание
OPENAI_API_KEY Ваш API-ключ OpenAI, который можно получить здесь
TELEGRAM_BOT_TOKEN Токен вашего Telegram-бота, полученный с помощью BotFather (см. руководство)
ADMIN_USER_IDS Идентификаторы пользователей Telegram администраторов. У этих пользователей есть доступ к особым командам администратора, информации и безоговорочных ограничений бюджета. ID администратора не нужно добавлять в ALLOWED_TELEGRAM_USER_IDS. Обратите внимание: по умолчанию отсутствуют админы ('-').
ALLOWED_TELEGRAM_USER_IDS Список идентификаторов пользователей Telegram через запятую, которые могут взаимодействовать с ботом (используйте getidsbot, чтобы найти идентификатор вашего пользователя). Внимание: по умолчанию для всех разрешено (*).

Дополнительная конфигурация

Следующие параметры являются необязательными и могут быть заданы в файле .env:

Бюджеты

Параметр Описание Значение по умолчанию
BUDGET_PERIOD Определяет временной интервал, к которому применяются все бюджеты. Доступные периоды: daily (сбрасывает бюджет каждый день), monthly (сбрасывает бюджеты первого числа каждого месяца), all-time (никогда не сбрасывает бюджет). Дополнительную информацию см. в Руководстве по бюджету. monthly
USER_BUDGETS Список $-сумм для каждого пользователя из списка ALLOWED_TELEGRAM_USER_IDS, разделенный запятыми, для установки пользовательского лимита использования расходов OpenAI API для каждого. Для *- списков пользователей первое значение USER_BUDGETS присваивается каждому пользователю. Примечание: по умолчанию, нет лимитов для любого пользователя (*). Дополнительную информацию см. в Руководстве по бюджету. *
GUEST_BUDGET $-amount в качестве лимита использования для всех гостевых пользователей. Гостевые пользователи - это пользователи в групповых чатах, которых нет в списке ALLOWED_TELEGRAM_USER_IDS. Значение игнорируется, если в бюджетах пользователей не установлены лимиты использования (USER_BUDGETS="*"). Дополнительную информацию см. в Руководстве по бюджету. 100.0
TOKEN_PRICE $-цена за 1000 жетонов, используемая для расчета информации о стоимости в статистике использования (https://openai.com/pricing) 0.002
IMAGE_PRICES Список, разделенный запятыми, состоящий из 3 элементов цен для различных размеров изображений: 256x256, 512x512 и 1024x1024. 0.016,0.018,0.02
TRANSCRIPTION_PRICE USD-цена за одну минуту расшифровки аудиозаписи 0.006

Просмотрите Руководство по бюджету для возможных конфигураций бюджета.

Дополнительные опции конфигурации

Параметр Описание Значение по умолчанию
ENABLE_QUOTING Включать ли цитирование сообщений в личных чатах true
ENABLE_IMAGE_GENERATION Включать ли генерацию изображений с помощью команды /image. true
ENABLE_TRANSCRIPTION Разрешить ли расшифровку аудио- и видеосообщений true
PROXY Прокси, который будет использоваться для бота OpenAI и Telegram (например, http://localhost:8080) -
OPENAI_MODEL Модель OpenAI, которую следует использовать для генерации ответов gpt-3.5-turbo
ASSISTANT_PROMPT Системное сообщение, которое задает тон и управляет поведением помощника You are a helpful assistant.
SHOW_USAGE Показывать ли информацию об использовании токена OpenAI после каждого ответа false
STREAM Передавать ли ответы в потоковом режиме. Примечание: несовместимо, если включено, с N_CHOICES больше 1 true
MAX_TOKENS Верхняя граница того, сколько токенов вернет API ChatGPT 1200 for GPT-3, 2400 for GPT-4
MAX_HISTORY_SIZE Максимальное количество сообщений для хранения в памяти, после чего разговор будет обобщен, чтобы избежать чрезмерного использования токенов 15
MAX_CONVERSATION_AGE_MINUTES Максимальное количество минут, которое разговор должен прожить с момента последнего сообщения, после чего разговор будет сброшен 180
VOICE_REPLY_WITH_TRANSCRIPT_ONLY Отвечать ли на голосовые сообщения только стенограммой или отвечать на стенограмму в формате ChatGPT false
VOICE_REPLY_PROMPTS Список фраз, разделенных точкой с запятой ("Hi bot;Hello chat"). Если стенограмма начинается с любой из них - она будет рассматриваться как подсказка даже если VOICE_REPLY_WITH_TRANSCRIPT_ONLY установлено на true -
N_CHOICES Количество ответов для каждого входного сообщения. Примечание: установка значения больше 1 не будет работать правильно, если включен STREAM. 1
TEMPERATURE Число от 0 до 2. Более высокие значения сделают вывод более случайным 1.0
PRESENCE_PENALTY Число между -2,0 и 2,0. Положительные значения наказывают новые лексемы в зависимости от того, появляются ли они в тексте до сих пор. 0.0
FREQUENCY_PENALTY Число между -2,0 и 2,0. Положительные значения штрафуют новые лексемы на основе их существующей на данный момент частоты в тексте 0.0
IMAGE_SIZE Размер генерируемого DALL-E изображения. Допустимые значения: 256x256, 512x512 или 1024x1024. 512x512
GROUP_TRIGGER_KEYWORD Если установлено, бот в групповых чатах будет отвечать только на сообщения, начинающиеся с этого ключевого слова -
IGNORE_GROUP_TRANSCRIPTIONS Если установлено значение true, бот не будет обрабатывать транскрипции в групповых чатах. true
BOT_LANGUAGE Язык общих сообщений бота. В настоящее время доступны: en, de, ru, tr, it, fi, es, id, nl, zh-cn, zh-tw, vi, fa. Contribute with additional translations ru

Более подробную информацию можно найти в официальном справочнике API.

Установка

Клонируйте репозиторий и перейдите в каталог проекта:

git clone https://github.com/fisuri/chatgpt-telegram-bot.git -b main
cd chatgpt-telegram-bot

Из исходного кода

  1. Создайте виртуальное окружение:
python -m venv venv
  1. Активируйте виртуальное окружение:
# Для Linux или macOS:
source venv/bin/activate

# Для Windows:
venv\Scripts\activate
  1. Установите зависимости, используя файл requirements.txt:
pip install -r requirements.txt
  1. Используйте следующую команду для запуска бота:
python bot/main.py

Используя Docker Compose Запустите следующую команду для сборки и запуска Docker image:

docker compose up

Готовые Docker-образы

Вы также можете использовать Docker-образ из Docker Hub:

docker pull n3d1117/chatgpt-telegram-bot:latest

или из GitHub Container Registry:

docker pull ghcr.io/n3d1117/chatgpt-telegram-bot:latest

Благодарности

Ограничения ответственности

Это личный проект и не связан с OpenAI.

Лицензия

Этот проект выпущен в соответствии с условиями лицензии GPL 2.0. Более подробную информацию можно найти в файле LICENSE, включенном в репозиторий.

About

🤖 A Telegram bot that integrates with OpenAI's official ChatGPT APIs to provide answers, written in Python

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.7%
  • Dockerfile 0.3%