OpenAI api – asynchronous API calls

I work with the OpenAI API. I have extracted slides text from a PowerPoint presentation, and written a prompt for each slide. Now, I want to make asynchronous API calls,
so that all the slides are processed at the same time.

this is the code from the async main function:

for prompt in prompted_slides_text:
    task = asyncio.create_task(api_manager.generate_answer(prompt))
results = await asyncio.gather(*tasks)

and this is generate_answer function:

    async def generate_answer(prompt):
        Send a prompt to OpenAI API and get the answer.
        :param prompt: the prompt to send.
        :return: the answer.
        completion = await openai.ChatCompletion.create(
                messages=[{"role": "user", "content": prompt}]

        return completion.choices[0].message.content

the problem is:

object OpenAIObject can’t be used in ‘await’ expression

and I don’t know how to await for the response in generate_answer function

Would appreciate any help!

>Solution :

You have to use openai.ChatCompletion.acreate to use the api asynchronously.

It’s documented on their Github –

Leave a Reply