Как создать Telegram-бота с интеграцией ChatGPT.
В этом руководстве пошагово объясняется, как создать собственный Telegram-чатбот, способный взаимодействовать с OpenAI ChatGPT. Учебник написан на языке Python и использует пакеты python-telegram-bot и openai.
1) Создание чатбота Telegram
Откройте вашу IDE и создайте файл с именем telegram-bot.py
Мы будем использовать этот пакет https://github.com/python-telegram-bot/python-telegram-bot, который поможет нам создать telegram-бота. Обязательно установите его с помощью
pip3 install python-telegram-bot
После установки вставьте этот код в файл telegram-bot.py:
import logging
import os
from telegram import Update
from telegram.ext import (ApplicationBuilder, CommandHandler, ContextTypes,
MessageHandler, filters)
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO
)
TELEGRAM_API_TOKEN = os.getenv("TELEGRAM_API_TOKEN")
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await context.bot.send_message(chat_id=update.effective_chat.id, text="I'm a bot, please talk to me!")
async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE):
await context.bot.send_message(chat_id=update.effective_chat.id, text=update.message.text)
if __name__ == '__main__':
application = ApplicationBuilder().token(TELEGRAM_API_TOKEN).build()
start_handler = CommandHandler('start', start)
echo_handler = MessageHandler(filters.TEXT & (~filters.COMMAND), echo)
application.add_handler(start_handler)
application.add_handler(echo_handler)
application.run_polling()
Мы определяем два обработчика, один помощник команды (так, если вы набираете /start в telegram) и один обработчик сообщения.
Обработчик сообщений (funcion echo) для целей тестирования выдает только то, что набрал пользователь. Итак, давайте опробуем нашего бота. Но для этого нам необходимо зарегистрировать нашего бота в telegram, чтобы получить API_KEY.
1.1) Зарегистрируйте нашего бота в telegram
Перейдите на сайт https://web.telegram.org/k/ и войдите в систему со своего смартфона. Воспользуйтесь строкой поиска и найдите “BotFather”.
Начните регистрацию с помощью команды /start.
В ней перечислены все возможные команды, далее мы переходим к команде /newbot для регистрации нового бота.
Теперь попробуйте найти хорошее имя для своего бота, у меня были некоторые трудности:
После успешной регистрации вы получите сообщение от BotFather о том, что ваш бот зарегистрирован, где вы можете его найти и токен для доступа к нему. Скопируйте этот токен
Создайте файл .env в том же каталоге, что и файл telegram-bot.py, и добавьте в него следующую строку:
TELEGRAM_API_TOKEN=<your_telegram_api_token>
Замените на ваш фактический API-токен Telegram, предоставленный BotFather.
Теперь мы можем протестировать вашего telegram-бота! В IDE откройте терминал и по пути, где находится ваш скрипт, запустите бота с помощью команды
python3 telegram-bot.py
Откройте ссылку, по которой вы можете найти своего бота, или воспользуйтесь строкой поиска в telegram, чтобы найти его. Нажмите кнопку запуска и напишите что-нибудь.
Отлично! Мы успешно выполнили часть 1. Теперь нам нужно подключить нашего бота к ChatGPT. Идея проста: бот получает данные от пользователя. Мы будем запрашивать у ChatGPT эти данные и перенаправлять ответ от ChatGPT обратно нашему пользователю. Поехали!
2) Создание клиента CHAT-GPT
Давайте создадим новый python-файл, который будет обрабатывать все ChatGPT Stuff, я назову его
"chatgpt_client.py".
Для запроса chatgpt api мы будем использовать официальный пакет openai python. Установим пакет openai python с помощью
pip3 install openai
Скопируйте этот код в новый созданный файл:
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
def request_chat_gpt(user_message):
try:
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": user_message}
]
)
return completion.choices[0].message['content']
except Exception as e:
print(f"An error occurred: {e}")
return "" # Return an empty string or handle the error appropriately
Теперь перейдите на сайт openAI и получите свой токен.
Поместите ключ API в файл .env, добавьте следующую строку:
OPENAI_API_KEY="<your_openai_api_key>"
Замените <ваш_openai_api_key> на ваш реальный ключ OpenAI API.
Чтобы использовать интеграцию openai в обработчике эха, можно заменить строку await context.bot.send_message(chat_id=update.effective_chat.id, text=update.message.text) на следующую:
response = request_chat_gpt(update.message.text)
await context.bot.send_message(chat_id=update.effective_chat.id, text=response)
Конечно же, не забудьте импортировать функцию
from chatgpt_client import request_chat_gpt
В результате ввод данных пользователем будет отправлен в функцию request_chat_gpt, которая, используя API OpenAI, сгенерирует ответ. Затем ответ будет отправлен обратно пользователю с помощью обработчика echo.
Вот и все! Надеюсь, вам понравилось. В следующий раз мы создадим чат-бот для AirBnB, который сможет отвечать гостям на вопросы, например, о Wifi Passwort или времени выезда, звучит круто, правда?
Спасибо!