Skip to content

tikhomirovv/gpt-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

efc1af5 · May 18, 2024

History

56 Commits
May 16, 2024
Dec 27, 2023
May 18, 2024
May 5, 2023
Jul 28, 2023
Jul 28, 2023
Jul 27, 2023
Jul 27, 2023
May 4, 2023
May 4, 2023
Dec 1, 2023
Dec 27, 2023
Jul 27, 2023
May 4, 2023
Jan 1, 2024
Jul 27, 2023
Jan 1, 2024

Repository files navigation

GPT Bot

GPT Bot - это Telegram бот, который использует OpenAI API для обработки естественного языка. Бот построен на Node.js и TypeScript и предоставляет простой интерфейс для общения с ChatGPT.

Особенности

  • Чат с OpenAI GPT (3.5, 4, 4-turbo - модель настраивается в конфиге)
  • Расшифровка голосовых сообщений (понмает войсы на русском и отвечает на них)
  • Сохраненяет контекст разговора
  • Адаптивное урезает истории на основе количества токенов, чтобы не вылезать за лимиты запросов
  • Выбор роли/характера/персонажа бота (предустановленные подсказки)
  • Полная кастомизация всех текстовых сообщений от бота через файл конфигурации
  • Конфигурация параметров диалога с ChatGPT
  • Whitelist для ограничения доступа к боту
  • Баланс пользователя в токенах с ограничением при нулевом балансе (БД)
  • Статистика использования токенов для каждого пользователя (БД)

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

Для использования бота сначала необходимо создать Telegram бота и получить токен от Telegram Bot API. Затем создайте учетную запись в OpenAI и получите ключ API на OpenAI API.

После получения необходимых токенов, склонируйте репозиторий и установите зависимости:

git clone https://github.com/tikhomirovv/gpt-bot.git
cd gpt-bot

Затем создайте файл .env и установите следующие переменные окружения:

TELEGRAM_BOT_TOKEN=<ваш-токен-Telegram-бота>
OPENAI_API_KEY=<ваш-ключ-OpenAI-API>

# Можно подключить базу для управления пользовательским балансом и отслеживания usage
MONGO_HOST_PORT="localhost:27017"
MONGO_USERNAME=""
MONGO_PASSWORD=""

Или выполните команду:

cp .env.example .env

Наконец, запустите бота, выполнив такое:

yarn dev # локальный запуск в режиме разработки
make build && make run # собрать докер-образ + контейнер и запустить его

Теперь вы можете начать общаться с ботом, запустив команду /start.

База данных

MongoDB. Используется для:

  • ведения баланса пользователя в токенах
  • сохранение объема затраченных пользователем токенов

Базу данных использовать не обязательно, все связанные с ней функции будут работать только при указании MONGO_HOST_PORT в .env и успешном подключении.

Существует cli команда для пополнения баланса:

# пополнить баланс пользователя на 10000 токенов
yarn cli tokens-add --telegramId 9988775544 --q 10000

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

Можно изменить конфигурацию бота: текст сообщений, настройки для ChatGPT и прочее. Конфигурация лежит в ./config. По-умолчанию загружается default.json, можно переопределить конфигурацию добавлением файлика с окружением ({NODE_ENV_VAR}.json, production.json например) или локальный local.json / local-{NOTE_ENV_VAR}.json.

Подробнее о файлах конфигурации: https://github.com/node-config/node-config/wiki/Configuration-Files#file-load-order Подробнее о настройках для ChatGPT: https://platform.openai.com/docs/api-reference/chat/create

Будьте внимательны, некоторые сообщения используют формат Markdown, он требует экранирования спец.символов. Правила экранирования: https://core.telegram.org/bots/api#markdownv2-style

Whitelist может быть null (отключен) или (string | number)[] - списком username или chatId в Телеграме.

Команды

Доступны следующие команды:

  • /start - запустить бота и получить приветственное сообщение
  • /character - настроики характера
  • /reset - сбросить контекст (ИИ забудет, о чем был разговор)
  • /balance - баланс токенов и статистика пользователя (доступно только с БД)
  • /terms - правила использования с кнопкой согласия
  • /help - FAQ и прочее

Внесение изменений

Участие в проекте приветствуется! Если вы нашли ошибку или у вас есть предложения на функцию, откройте задачу в GitHub. Если вы хотите внести изменения в код, сделайте форк репозитория и отправьте запрос на объединение.

Лицензия

Открытая лицензия MIT - см. LICENSE.