Создайте своего первого Telegram-бота на базе ChatGPT: Пошаговое руководство 2023

Создайте своего первого Telegram-бота на базе ChatGPT: Пошаговое руководство 2023

Вступление

Хотели бы вы создать чат-бота, который мог бы вести интеллектуальные беседы с вашими пользователями? В этом пошаговом руководстве мы покажем вам, как создать Telegram-бота, который использует ChatGPT для генерации ответов, похожих на человеческие.

@ai_machinelearning_big_data - наш бесплатный, обучающий телеграм канал

@vistehno - ChatGpt в телеграм, нейросеть ведет канал, пишет код, обзор нейросетей и многое другое.

К концу этой статьи у вас будет полнофункциональный Telegram-бот, который вы сможете использовать для общения со своими пользователями. Мы расскажем всё, что вам нужно знать, в том числе о том, как настроить API ChatGPT и API Telegram Bot, как интегрировать их и как протестировать вашего бота, чтобы убедиться, что он работает должным образом.

Мы создали и подключили ChatGPT бот в телеграм. Теперь вы можете бесплатно пользоваться им, задавть любые вопросы, решать задачи и, генерировать контент, обсуждать новости, генерировать стихи для девушки, все , что угодно.

. На днях мы подключим новую версию апи и тогда ChatGpt будет генерировать еще более невероятный контент. Рекомендуем посмотреть на это чудо.

Давайте приступать!

Краткая информация о ChatGPT

ChatGPT - это большая языковая модель, разработанная Open AI, которая может генерировать человекоподобные ответы на текстовые подсказки. Он был обучен на огромном наборе данных интернет-текста и способен генерировать широкий спектр ответов, от коротких фраз до целых абзацев.

Одной из ключевых особенностей ChatGPT является его способность генерировать ответы, которые контекстуально релевантны и способны точно подойти к тематике диалога. Это делает его подходящим для использования в чат-ботах, где он может помочь обеспечить увлекательные разговоры с пользователями.

В дополнение к своим разговорным возможностям, ChatGPT также может использоваться для множества других задач языковой обработки, таких как перевод, генерация текста и обобщение. Его гибкость и проработанность делают его ценным инструментом для разработчиков, стремящихся создавать интеллектуальные и привлекательные приложения.

Приступаем к работе

Создайте каталог:

mkdir chatgptbot cd chatgptbot

Настройте виртуальную среду Python и активируйте её:

python3 -m venv env source env/bin/activate

В папке chatgptbot создайте два файла:

  • bot.py
  • copilot.py

Сейчас мы будем взаимодействовать с файлом copilot.py .

Во-первых, установите openai и другие библиотеки:

pip install openai pip install python-dotenv

Импортируйте библиотеки:

import os import json from dotenv import load_dotenv import openai

Создание класса и функций

Создайте класс с именем Copilot и добавьте две функции:

  • clear_text — отвечает за очистку лишних пробелов.
  • get_answer — отвечает за получение ответа. Вызывает класс Completion из библиотеки openai. Для того, чтобы продолжить наш запрос, нам нужен API-ключ.
class Copilot: def clear_text(self, text): a = text.replace("\n", " ") b = a.split() c = " ".join(b) return c def get_answer(self, question): prompt = question load_dotenv() openai.api_key = os.getenv("CHAT_GPT3_API_KEY") response = openai.Completion.create( engine="text-davinci-003", prompt=prompt, max_tokens=512, temperature=0.5, ) json_object = response # Convert the JSON object to a JSON string json_string = json.dumps(json_object) # Parse the JSON string using json.loads() parsed_json = json.loads(json_string) text = parsed_json['choices'][0]['text'] cleared_text = self.clear_text(text) return cleared_text

Получение API-ключа ChatGPT3

Перейдите на официальный сайт openai и войдите в систему или зарегистрируйтесь. После успешного входа в свою учетную запись перейдите в раздел API keys и сгенерируйте новый API-ключ.

Создать файл .env:

touch .env

Добавить API-ключ

Вы можете получить его здесь: OpenAI

CHAT_GPT3_API_KEY=paste here your api key

Здесь представлено его использование:

copilot = Copilot() a = copilot.get_answer("Hello, there!") print(a)

Telegram-бот

Установка и импорт библиотек:

pip install python-telegram-bot --pre pip install requests
import os import json import requests import time from copilot import Copilot from dotenv import load_dotenv from telegram import ( ReplyKeyboardMarkup, Update, KeyboardButton, ) from telegram.ext import ( Application, CommandHandler, ContextTypes, ConversationHandler, MessageHandler, filters, )

States:

(ENTRY_STATE, QUESTION_STATE, ) = range(2)

Перейдите к файлу .env:

Добавьте токен Telegram-бота:

Его можно получить здесь: BotFather

TELEGRAM_BOT_TOKEN=paste your Telegram bot token

Вот отправная точка нашего Telegram-бота!

Давайте используем conv_handler и сделаем Telegram-бота масштабируемым для будущих обновлений:

if __name__ == '__main__': load_dotenv() application = Application.builder().token(os.getenv("TELEGRAM_BOT_TOKEN")).read_timeout(100).get_updates_read_timeout(100).build() conv_handler = ConversationHandler( entry_points=[CommandHandler('start', start)], states={ ENTRY_STATE: [ MessageHandler(filters.Regex('^Back$'), start), MessageHandler(filters.Regex('^Question-Answering$'), pre_query_handler), ], QUESTION_STATE: [ MessageHandler(filters.Regex('^Back$'), start), MessageHandler(filters.TEXT, pre_query_answer_handler), ], }, fallbacks=[], ) application.add_handler(conv_handler) print("Bot is running ...") application.run_polling()

Давайте создадим функцию, которую можно будет повторно использовать:

def _generate_copilot(prompt: str): """Gets answer from copilot""" copilot = Copilot() c = copilot.get_answer(prompt) return c

Добавление команды /start:

async def start(update: Update, context: ContextTypes): """Start the conversation and ask user for an option.""" button = [[KeyboardButton(text="Question-Answering")]] reply_markup = ReplyKeyboardMarkup( button, resize_keyboard=True ) await update.message.reply_text( "Choose an option: 👇🏻", reply_markup=reply_markup, ) return ENTRY_STATE

Создайте функцию для пользовательского ввода (текста):

#Handling the question async def pre_query_handler(update: Update, context: ContextTypes): """Ask the user for a query.""" button = [[KeyboardButton(text="Back")]] reply_markup = ReplyKeyboardMarkup( button, resize_keyboard=True ) await update.message.reply_text( "Enter your text: 👇🏻", reply_markup=reply_markup, ) return QUESTION_STATE

Обработка пользовательского ввода (text) и генерация текста (answer):

#Handling the answer async def pre_query_answer_handler(update: Update, context: ContextTypes): """Display the answer to the user.""" button = [[KeyboardButton(text="Back")]] reply_markup = ReplyKeyboardMarkup( button, resize_keyboard=True ) question = update.message.text answer = _generate_copilot(question) context.user_data['answer'] = answer await update.message.reply_text( answer, reply_markup=reply_markup, ) return QUESTION_STATE

На этом ваш первый Telegram-бот готов! Теперь вы можете экспериментировать с ним, добавлять ему какой-либо функционал, развивать его.

Полезные ссылки

Статья была взята из этого источника:

1111
22 комментария

Руководство не рабочее, не понятно какой код куда вставлять.

5
Ответить

что именно не работает ? python какой версии ?

Ответить

Ндамс. Совсем даже не для чайников текст ) Где создавать, что запускать, куда что вводить) а так - да, наверн полезная инструкция.

4
Ответить

да уж...Мне пришлось спрашивать у самого чатGPT куда какой код вставлять, чтобы разобраться что писал автор статьи. Умник бл

2
Ответить

Проблема даже не в вашем коде, а в том что не понятно куда вставлять эти куски кода.

Если с гитхаба клонирую проект вставляю ключи работает, но chatgp не отвечает, может быть там на узбекском нужно я не знаю.

И вот это тоже не понятно что такое (ENTRY_STATE,
QUESTION_STATE,
) = range(2)

python 3.9.2

2
Ответить

Эта инструкция видимо очень сложная для моего уровня владения python

Ответить

Пост больше подходит для habr, чем для vc

2
Ответить