Giter Site home page Giter Site logo

gpt-bot's Introduction

GPT Bot

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

Особенности

  • Чат с OpenAI GPT-3.5
  • Расшифровка голосовых сообщений (понмает войсы на русском и отвечает на них)
  • Сохраненяет контекст разговора
  • Адаптивное урезает истории на основе количества токенов, чтобы не вылезать за лимиты запросов
  • Выбор роли/характера/персонажа бота (предустановленные подсказки)
  • Полная кастомизация всех текстовых сообщений от бота через файл конфигурации
  • Конфигурация параметров диалога с 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.

gpt-bot's People

Contributors

tikhomirovv avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.