Сегодня я путешествовал по безграничным просторам рунета в поисках информации о том, как подружить GPT-3.5 Turbo и Telegram-ботом. Оказалось, что доступных материалов немного, и большая часть из них предназначена для опытных пользователей. В связи с этим, я создал максимально простой и понятный скрипт, с которым сможет справиться даже новичок.
Для успешной работы скрипта вам потребуется VPN (если вы находитесь в России) и платный аккаунт от OpenAI. Оплатить подписку можно через разнообразные сервисы, на Авито вы найдете множество предложений.
Скрипт интеграции Telegram и API GPT-3.5 Turbo:
В скрипте будем использовать библиотеку aiogram и openai.
Некоторое прояснение:
Пример массива (списка) с сообщениями в формате Python. В данном случае, массив содержит три элемента, каждый из которых представлен в виде словаря с двумя ключами: "role" и "content". Вот подробное объяснение каждого элемента:
Для успешной работы скрипта вам потребуется 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". Вот подробное объяснение каждого элемента:
- {"role": "system", "content": "Психология"}: "role" - роль участника в диалоге, в данном случае "system" означает системное сообщение. "content" - содержание сообщения, здесь это "Ваш текст".
- {"role": "user", "content": "Психология"}: "role" - роль участника в диалоге, в данном случае "user" означает сообщение от пользователя. "content" - содержание сообщения, в данном случае также "Ваш текст".
- {"role": "assistant", "content": "Психология"}: "role" - роль участника в диалоге, в данном случае "assistant" означает сообщение от виртуального ассистента (например, GPT-3.5 Turbo). "content" - содержание сообщения, опять же "Ваш текст".
Последнее редактирование: