Скрипт для Телеграм бота gpt chat 3.5 turbo

Lesson

Moderator
Команда форума
Сегодня я путешествовал по безграничным просторам рунета в поисках информации о том, как подружить GPT-3.5 Turbo и Telegram-ботом. Оказалось, что доступных материалов немного, и большая часть из них предназначена для опытных пользователей. В связи с этим, я создал максимально простой и понятный скрипт, с которым сможет справиться даже новичок.
Для успешной работы скрипта вам потребуется VPN (если вы находитесь в России) и платный аккаунт от OpenAI. Оплатить подписку можно через разнообразные сервисы, на Авито вы найдете множество предложений.

Скрипт интеграции Telegram и API GPT-3.5 Turbo:

В скрипте будем использовать библиотеку aiogram и openai.

Python:
import openai
from aiogram import Bot, Dispatcher, executor, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage

bot = Bot(token="Токен бота")
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)

openai.api_key = "Ваш OpenAI api"

messages = [
    {"role": "system", "content": "Ваш текст"},
    {"role": "user", "content": "Ваш текст"},
    {"role": "assistant", "content": "Ваш текст"}]

async def update(messages, role, content):
    messages.append({"role": role, "content": content})
    return messages

@dp.message_handler()
async def msg(message: types.Message):
      print(message)
   
      await update(messages, "user", message.text)
      response = openai.ChatCompletion.create(
          model="gpt-3.5-turbo",
          messages=messages
          )

      await message.answer(response['choices'][0]['message']['content'])
 
if __name__ == '__main__':
      executor.start_polling(dp, skip_updates=True)

Некоторое прояснение:
Пример массива (списка) с сообщениями в формате Python. В данном случае, массив содержит три элемента, каждый из которых представлен в виде словаря с двумя ключами: "role" и "content". Вот подробное объяснение каждого элемента:
  1. {"role": "system", "content": "Психология"}: "role" - роль участника в диалоге, в данном случае "system" означает системное сообщение. "content" - содержание сообщения, здесь это "Ваш текст".
  2. {"role": "user", "content": "Психология"}: "role" - роль участника в диалоге, в данном случае "user" означает сообщение от пользователя. "content" - содержание сообщения, в данном случае также "Ваш текст".
  3. {"role": "assistant", "content": "Психология"}: "role" - роль участника в диалоге, в данном случае "assistant" означает сообщение от виртуального ассистента (например, GPT-3.5 Turbo). "content" - содержание сообщения, опять же "Ваш текст".
В контексте чат-бота, такой массив может быть использован для хранения истории диалога между пользователем и ассистентом. Сообщения могут быть добавлены или удалены из массива в процессе общения, а также использованы для формирования запросов к API GPT-3.5 Turbo или другим системам.
 
Последнее редактирование:
Назад
Сверху