Как решить ошибку File "<string>", line 13, in generate_response TypeError: object OpenAIObject can't be used in 'await' expression

Рейтинг: 0Ответов: 1Опубликовано: 29.05.2023

Я хочу сделать бота с искусственным интеллектом но мне пишет ошибку File "", line 13, in generate_response TypeError: object OpenAIObject can't be used in 'await' expression вот код:

from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor

bot = Bot(token="")
openai.api_key = ''

dp = Dispatcher(bot)

@dp.message_handler()
async def generate_response(message: types.Message):
    response = await openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "system", "content": "/start"}, {"role": "user", "content": message.text}],
        max_tokens=100,
        temperature=0.7
    )
    await message.answer(response.choices[0].message.content)



if __name__ == "__main__":
    executor.start_polling(dp, skip_updates=True)```

Ответы

▲ 0

Все методы в openai синхронные. Не нужно использовать await:

import openai
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor

bot = Bot(token="")
openai.api_key = ''

dp = Dispatcher(bot)

@dp.message_handler()
async def generate_response(message: types.Message):
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "system", "content": "/start"}, {"role": "user", "content": message.text}],
        max_tokens=100,
        temperature=0.7
    )
    await message.answer(response.choices[0].message.content)



if __name__ == "__main__":
    executor.start_polling(dp, skip_updates=True)

А если все таки хочется асинхронно:

import openai
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor

bot = Bot(token="")
openai.api_key = ''

dp = Dispatcher(bot)

@dp.message_handler()
async def generate_response(message: types.Message):
    response = await openai.ChatCompletion.acreate(
        model="gpt-3.5-turbo",
        messages=[{"role": "system", "content": "/start"}, {"role": "user", "content": message.text}],
        max_tokens=100,
        temperature=0.7
    )
    await message.answer(response.choices[0].message.content)



if __name__ == "__main__":
    executor.start_polling(dp, skip_updates=True)