Перейти к содержанию

Создаем бота ChatGPT в Telegram - Подробная инструкция


TrustMe

Рекомендуемые сообщения

  • Админы

Всем привет!

Поюзал ботов я не мало, и остановился на одном. Очень интересном и универсальном.

Репозитория на GitHub - ТУТ

Требования:

  • Свой  VPS сервер за границей.
    Да-да. Лучше иметь сервер зарубежный, чтобы избежать потенциального блока на использование API.
  • API ключ от ChatGPT
  • немного навыков обращения с консолью
  • телеграм аккаунт

Шаг 1. Регистрируем бота в BotFather.

Идём к Батьке всех ботов. Сюда.

https://t.me/BotFather

Пишем ему команду: /newbot

Следуем инструкциям. Создав бота вы получите API ключ. Сохраните отдельно, но не отдавайте никому его! Нам нужен будет этот ключ.

Шаг 2. У вас должен быть аккаунт OpenAI, и доступ к ChatGPT. А ещё у вас на аккаунте должны быть кредиты (хотя бы бесплатные 5$) 

Идём на страницу: API keys - OpenAI API

Жмём image.png

Копируем этот API в блокнотик себе и не отдаем никому. Он нам будет нужен дальше.

Шаг 3. Идём на свой VPS сервер.

Рефералки на провайдеров VPS где их можно арендовать размещены тут: Рефералки - opeNode - Mind & Data Space

На сервер попали.

 

UPDATE 1.08.2023

Теперь можно просто заюзать скрипт:

bash <(wget -qO- https://raw.githubusercontent.com/DigneZzZ/chatgpt_telegram_bot/main/setup.sh)

 

Ниже инструкция по ручной установке:

 

пишем в консоле:

git clone https://github.com/karfly/chatgpt_telegram_bot.git

!!! У вас должен быть установлен GIT. Если не установлен, юзай команду: apt install git

После этого, идем в папку:

cd chatgpt_telegram_bot

Теперь нам нужно переименовать конфиг файлы:

mv config/config.example.yml config/config.yml
mv config/config.example.env config/config.env

Теперь нам нужно зайти в конфиг и вставить свои "пять копеек":

nano config/config.yml

Попав сюда видим:

telegram_token: ""
openai_api_key: ""
use_chatgpt_api: true
allowed_telegram_usernames: []  # if empty, the bot is available to anyone. pass a username string to allow it and/or user ids as integers
new_dialog_timeout: 600  # new dialog starts after timeout (in seconds)
return_n_generated_images: 1
n_chat_modes_per_page: 5
enable_message_streaming: true  # if set, messages will be shown to user word-by-word

# prices
chatgpt_price_per_1000_tokens: 0.002
gpt_price_per_1000_tokens: 0.02
whisper_price_per_1_min: 0.006

Дальше все логично, внутрь ковычек вставляем наши API.

В telegram_token: "здесь-апи-ключ" - API ключ от BotFather.
В openai_api_key: "здесь-апи-ключ-OpenAI" - сюда ключ от OpenAI.

Теперь сделаем так, чтобы пользоваться могли только вы. Для этого нам нужен параметр.

В него вставляется НИК в telegram.

Несколько аккаунтов разделяются запятой. 

allowed_telegram_usernames: [durov,BotFather]

ОЧЕНЬ ВАЖНО СОБЛЮДАТЬ РЕГИСТР БУКВ (маленькие или БОЛЬШИЕ) - так как в точности называется ваш ник в Tелеграм.

ЕСЛИ НЕ УКАЗАТЬ НИКОВ - ПОЛЬЗОВАТЬСЯ СМОЖЕТ КАЖДЫЙ!

 

Ещё можно задать время, сколько будет ждать бот, прежде чем сбросить тему диалога (задается в секундах):

new_dialog_timeout: 600

На этом настройки можно заканчивать.

Шаг 4. ЗАПУСКАЕМ БОТА 

docker compose --env-file config/config.env up --build -d

 

На этом всё.

Идём в телеграм, пишем своему боту /start

И радуемся общению 🙂

Вот его команды:

image.png

Моды чата - это то в каком стиле будут даваться ответы.

Доступны такие, можно почитать тут:

image.png

image.png

image.png

Ещё важная настройка, доступная из диалога - /settings

image.png

Я рекомендую использовать ChatGPT. Он соответствует версии ChatGPT3.5 Turbo. Он дешевый и ничем не уступает в ответах дорогому GPT-3.5. Там один токен очень дорого стоит.

Посчитать токены кстати можно здесь:

OpenAI API - TOKENIZER

Обратите внимание, текст на русском потребляет в несколько раз больше токенов за одно слово.

image.png

А вот на английском:

image.png

 

Удачи.

 

Ссылка на комментарий
Поделиться на другие сайты

  • TrustMe изменил название на Создаем бота ChatGPT в Telegram - Подробная инструкция
  • TrustMe популярно и закреплено это тема
  • 1 месяц спустя...
  • Админы
2 минуты назад, tabsiger сказал:

Package 'python-dev' has no installation candidate

Это что и в какой момент?

Ссылка на комментарий
Поделиться на другие сайты

13 минут назад, tabsiger сказал:

На 4 шаге, удалил в Docerfile "python-dev" и все завелось

 

Something went wrong during completion. Reason: You exceeded your current quota, please check your plan and billing details.

Сам бот пишет это..

Ссылка на комментарий
Поделиться на другие сайты

Не увидел ограничений по серверу в инструкции, чтобы использовать openai_api_key подойдет сервер взятый у vdsina расположенный в Нидерландах?

Ссылка на комментарий
Поделиться на другие сайты

  • Админы
19 минут назад, tabsiger сказал:

На 4 шаге, удалил в Docerfile "python-dev" и все завелось

 

Очень странно, я много раз его переставлял, все было ок

 

19 минут назад, tabsiger сказал:

И еще вопрос как получить эти бесплатные 5$ у chatgpt ?

Я брал на plati.market аккаунт с 5$ долларами на счету. за 100 или за 150 рублей.

7 минут назад, tabsiger сказал:

Something went wrong during completion. Reason: You exceeded your current quota, please check your plan and billing details.

Сам бот пишет это..

Баланс для Апи значит пустой)

1 минуту назад, tabsiger сказал:

Не увидел ограничений по серверу в инструкции, чтобы использовать openai_api_key подойдет сервер взятый у vdsina расположенный в Нидерландах?

Для бота подойдет.

Ссылка на комментарий
Поделиться на другие сайты

Разобрался, 1 мая истекли 18$ но вот python-dev не встаёт, ставил на чистый Ubuntu 22.04, хотя и с без него все работает, были б кредиты...

Ссылка на комментарий
Поделиться на другие сайты

  • Админы
55 минут назад, tabsiger сказал:

На 4 шаге, удалил в Docerfile "python-dev" и все завелось

 

 

24 минуты назад, tabsiger сказал:

Разобрался, 1 мая истекли 18$ но вот python-dev не встаёт, ставил на чистый Ubuntu 22.04, хотя и с без него все работает, были б кредиты...

Надо было попробовать исправить на  python3-dev

Ссылка на комментарий
Поделиться на другие сайты

Немного дополнил перевод. Обновил реп. В первом сообщении.

Изменено пользователем persoun
Ссылка на комментарий
Поделиться на другие сайты

  • Админы

Обновил свой репозиторий по установке.

https://github.com/DigneZzZ/chatgpt_telegram_bot/

Добавлен скрипт для упрощенной установки setup.sh.

bash <(wget -qO- https://raw.githubusercontent.com/DigneZzZ/chatgpt_telegram_bot/main/setup.sh)

Добавить русский язык можно командой:

bash <(wget -qO- https://raw.githubusercontent.com/DigneZzZ/chatgpt_telegram_bot/main/russian.sh)

Модели чата берутся из репозитория  @persoun

Ссылка на комментарий
Поделиться на другие сайты

  • 3 месяца спустя...

Привет!
У меня такая ошибка после установки. Ставил с помощью скрипта

Спойлер
update = {

  "update_id": 992707431,

  "message": {

    "chat": {

      "id": 123,

      "type": "private",

      "first_name": "1231",

      "username": "12313"

    },

    "text": "hi",

    "group_chat_created": false,

    "message_id": 342,

    "delete_chat_photo": false,

    "date": 1701091570,

    "supergroup_chat_created": false,

    "channel_chat_created": false,

    "from": {

      "is_bot": false,

      "username": "1231",

      "first_name": "123123",

      "id": 123,

      "language_code": "ru",

      "is_premium": true

    }

  }

}



Traceback (most recent call last):

  File "/usr/local/lib/python3.8/site-packages/telegram/ext/_application.py", line 1104, in process_update

    await coroutine

  File "/usr/local/lib/python3.8/site-packages/telegram/ext/_handler.py", line 141, in handle_update

    return await self.callback(update, context)

  File "bot/bot.py", line 307, in message_handle

    await task

  File "bot/bot.py", line 210, in message_handle_fn

    if (datetime.now() - db.get_user_attribute(user_id, "last_interaction")).seconds > config.new_dialog_timeout and len(db.get_dialog_messages(user_id)) > 0:

TypeError: '>' not supported between instances of 'int' and 'NoneType'

 


 

 

Ссылка на комментарий
Поделиться на другие сайты

  • Админы
6 минут назад, seo сказал:

Привет!
У меня такая ошибка после установки. Ставил с помощью скрипта

  Скрыть контент

update = {

  "update_id": 992707431,

  "message": {

    "chat": {

      "id": 123,

      "type": "private",

      "first_name": "1231",

      "username": "12313"

    },

    "text": "hi",

    "group_chat_created": false,

    "message_id": 342,

    "delete_chat_photo": false,

    "date": 1701091570,

    "supergroup_chat_created": false,

    "channel_chat_created": false,

    "from": {

      "is_bot": false,

      "username": "1231",

      "first_name": "123123",

      "id": 123,

      "language_code": "ru",

      "is_premium": true

    }

  }

}



Traceback (most recent call last):

  File "/usr/local/lib/python3.8/site-packages/telegram/ext/_application.py", line 1104, in process_update

    await coroutine

  File "/usr/local/lib/python3.8/site-packages/telegram/ext/_handler.py", line 141, in handle_update

    return await self.callback(update, context)

  File "bot/bot.py", line 307, in message_handle

    await task

  File "bot/bot.py", line 210, in message_handle_fn

    if (datetime.now() - db.get_user_attribute(user_id, "last_interaction")).seconds > config.new_dialog_timeout and len(db.get_dialog_messages(user_id)) > 0:

TypeError: '>' not supported between instances of 'int' and 'NoneType'

 


 

 

Репозиторий обновился...

Нужно посмотреть что поменялось.

Ссылка на комментарий
Поделиться на другие сайты

22 часа назад, DigneZzZ сказал:

Репозиторий обновился...

Нужно посмотреть что поменялось.

А если в ручном режиме устанавливать по вашей инструкции, то все ок? Ранее запускал на винде, но не особо удобно было. Сейчас апишку с РУ/РБ айпи дернуть уже нельзя, блочит сразу.

Поэтому, например, AEZA (не реклама) не подойдет под подобный бот, так как у аезы серваки в РУ и на chatgpt не пустит. 

п.с. ответ саппорта aeza:
 

Цитата

Мы не можем повлиять на обновление гео-базы у сайтов по получению информации по IP. Из-за того, что подсеть новая для нас, она ещё не обновилась и содержит информацию старого провайдера, примерно через недели 2-4 информация обновится и будет отображаться как Швеция, Стокгольм.

 

есть хостер, с оплатой из Ру, с серваками в DE и Fi, иногда бывают промо тарифы по 1 евро) Опять таки, рекламить не собираюсь, кому надо - в ЛС.

Ссылка на комментарий
Поделиться на другие сайты

  • Админы
14 минут назад, seo сказал:

А если в ручном режиме устанавливать по вашей инструкции, то все ок? Ранее запускал на винде, но не особо удобно было. Сейчас апишку с РУ/РБ айпи дернуть уже нельзя, блочит сразу.

Поэтому, например, AEZA (не реклама) не подойдет под подобный бот, так как у аезы серваки в РУ и на chatgpt не пустит. 

п.с. ответ саппорта aeza:
 

 

есть хостер, с оплатой из Ру, с серваками в DE и Fi, иногда бывают промо тарифы по 1 евро) Опять таки, рекламить не собираюсь, кому надо - в ЛС.

Вручную можно,должно получиться

С Ру серверов лучше не запускать.

Но если хостер в РФ, а сервер зарубежный, как например Аеза,то бота на таком сервере можно запускать. У меня уже год так работает.

Ссылка на комментарий
Поделиться на другие сайты

19 часов назад, DigneZzZ сказал:

Вручную можно,должно получиться

ПОнял, попробую

 

19 часов назад, DigneZzZ сказал:

Но если хостер в РФ, а сервер зарубежный, как например Аеза,то бота на таком сервере можно запускать. У меня уже год так работает.

У меня софт работает с апишкой chatgpt, вешал на aeza впнку, в итоге с ней как и с Ру айпи

image.thumb.png.a318fba9975670f01a902cf11a159229.png

Ссылка на комментарий
Поделиться на другие сайты

  • Админы
1 минуту назад, seo сказал:

У меня софт работает с апишкой chatgpt, вешал на aeza впнку, в итоге с ней как и с Ру айпи

image.thumb.png.a318fba9975670f01a902cf11a159229.png

Ого!

Ну возьми у Hetzner, там точно работает, или у melbicom,у них тоже раньше работало все хорошо

Ссылка на комментарий
Поделиться на другие сайты

Ошибка на финальной стадии, что порт занят. 

[+] Running 3/3

 ✔ Container mongo                 Started                                                                                                                   0.6s 

 ✔ Container chatgpt_telegram_bot  Started                                                                                                                   0.2s 

 ✔ Container mongo-express         Recreated                                                                                                                 0.2s 

Error response from daemon: driver failed programming external connectivity on endpoint mongo-express (a2ee474f97c67b05f09b222a3af6247a207d724ea0004697d54be4f4b1e2add1): Error starting userland proxy: listen tcp4 127.0.0.1:8081: bind: address already in use

 

Как поменять?

Ссылка на комментарий
Поделиться на другие сайты

  • Админы
7 минут назад, kaka0 сказал:

Ошибка на финальной стадии, что порт занят. 

[+] Running 3/3

 ✔ Container mongo                 Started                                                                                                                   0.6s 

 ✔ Container chatgpt_telegram_bot  Started                                                                                                                   0.2s 

 ✔ Container mongo-express         Recreated                                                                                                                 0.2s 

Error response from daemon: driver failed programming external connectivity on endpoint mongo-express (a2ee474f97c67b05f09b222a3af6247a207d724ea0004697d54be4f4b1e2add1): Error starting userland proxy: listen tcp4 127.0.0.1:8081: bind: address already in use

 

Как поменять?

В файле /config/config.env

image.png

Ссылка на комментарий
Поделиться на другие сайты

  • 5 месяцев спустя...

На Ubuntu 24.04 LTS  не получилось с первого раза запустить все по мануалу. Видимо проблема в разных докерах версиях или еще что то помогла команда из пунтка 4 docker-compose --env-file config/config.env up --build -d  только в ней нужно убрать дефис между docker и compose. docker compose --env-file config/config.env up --build -d и тогда все запустится. На старых версиях ubuntu таких проблем не было.

 

 
Ссылка на комментарий
Поделиться на другие сайты

  • Админы
4 часа назад, Hasegawa сказал:

На Ubuntu 24.04 LTS  не получилось с первого раза запустить все по мануалу. Видимо проблема в разных докерах версиях или еще что то помогла команда из пунтка 4 docker-compose --env-file config/config.env up --build -d  только в ней нужно убрать дефис между docker и compose. docker compose --env-file config/config.env up --build -d и тогда все запустится. На старых версиях ubuntu таких проблем не было.

 

 

да, с новой версией docker немного синтаксис поменялся)

поправил в первом сообщении

 

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...

Важная информация

Вы принимаете наши Условия использования, Политика конфиденциальности, Правила. А также использование Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.

Яндекс.Метрика