@someqst

Как параллельно выполнять запросы пользователей к боту?

Имеется вот такой бот на питоне с использованием OpenAI API для общения с ChatGPT без VPN
Все работает отлично, он опирается на контекст, но вот камень преткновения:
Допустим, его одновременно используют два пользователя, однако первый на 1 секунду раньше отправил свой запрос.

Происходит такое:
1. Первый пользователь получает Обрабатываю запрос, пожалуйста подождите!
2. Второй пользователь обращается к боту - Обрабатываю запрос, пожалуйста подождите!
3. Первый пользователь получает ответ
4. Второй пользователь получает ответ

Пожалуйста, люди добрые, подскажите, как сделать так:
1. Первый пользователь получает Обрабатываю запрос, пожалуйста подождите!
2. Второй пользователь обращается к боту - тишина
3. Первый пользователь получает ответ
4. Второй пользователь получает Обрабатываю запрос, пожалуйста подождите!

Я буду очень благодарен

import openai
import json
import aiohttp
import asyncio

from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup
from aiogram.utils.callback_data import CallbackData
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor

file = open('config.json', 'r')
config = json.load(file)

openai.api_key = config['openai']
bot = Bot(config['telegram'])
dp = Dispatcher(bot)

@dp.message_handler(commands=['start'])
async def start(message: types.Message):
    await bot.send_message(message.from_user.id, 'Че те надо?')

@dp.message_handler()
async def generate_messages(message: types.Message):
    send_message = await bot.send_message(chat_id=message.chat.id, text='Обрабатываю запрос, пожалуйста подождите!')
    completion = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": 'Я непутевый программист'},
            {"role": "assistant", "content": 'Да, брат, я знаю'},
            {"role": "user", "content": f'Запрос: {message.text}'}], presence_penalty=0.6)
    await bot.edit_message_text(text=completion.choices[0].message["content"], chat_id=message.chat.id, message_id=send_message.message_id)

executor.start_polling(dp, skip_updates=True)
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
@someqst Автор вопроса
В начале слова create в completion поставьте букву а
Перед openai в completion напишите await
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы