ChatGPT-бот на Python

Последние месяцы поставили рекорд по количеству программ, интегрированных с искусственным интеллектом. Я, конечно, тоже не смог остаться в стороне.

В результате появился проект pokitoki — это чат-бот, который использует языковую модель ChatGPT (она же GPT-3.5) от OpenAI.

Некоторые возможности:

  • Работает в личных и групповых чатах.
  • Отвечает на прямые вопросы и упоминания.
  • Можно переспросить или дополнить последний вопрос.
  • Можно задавать уточняющие вопросы.

Личные чаты

В личном чате бот работает как ваш персональный ассистент.

Вопрос и ответ

Чтобы разрешить личные чаты с другими пользователями, пропишите их в настройке telegram_usernames.

По умолчанию у бота ужасная память, поэтому он не помнит предыдущие реплики. Но можно задавать уточняющие вопросы через ответную реплику или плюсик:

Уточнящий вопрос через реплай
уточнение через ответ
Уточнящий вопрос через плюсик
и через плюсик

Команды:

  • /retry — переспрашивает последний вопрос
  • /help — показывает помощь

Чтобы перефразировать или дополнить последний вопрос, отредактируйте его. Бот заметит это и ответит на уточненный вопрос.

Группы

Чтобы бот ответил на вопрос в группе, тегните его на уже заданном вопросе или задайте прямой вопрос:

Упоминание бота
тегните бота
Прямой вопрос
или задайте прямой вопрос

Чтобы бот отвечал всем участникам группы, пропишите ID группы в настройке telegram_chat_ids. Если настройка не задана, бот игнорирует вопросы от всех участников группы, кроме перечисленных в telegram_usernames.

Если не знаете ID группы, команда /version поможет его выяснить:

Chat information:
- id: -1001405001234
- title: My Favorite Group
- type: supergroup

Bot information:
- id: 5930739038
- name: @pokitokibot
- version: 56
- usernames: 6 users
- chat IDs: []
- access to messages: True

Как установить

  1. Получить ключ для OpenAI API
  2. Получить токен для телеграм-бота от @BotFather
  3. Скопировать config.example.yml в config.yml и прописать там ключи.
  4. Запустить бота:
docker compose up --build

Бот сознательно сделан максимально простым, чтобы можно было быстро разобраться в коде.

Исходники на гитхабе

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