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))
tasks.append(task)
results = await asyncio.gather(*tasks)
and this is generate_answer function:
@staticmethod
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(
model="gpt-3.5-turbo",
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!
For those landing here, the error here was probably the instantiation of the object. It has to be:
client = AsyncOpenAI(api_key=api_key)
Then you can use:
response = await client.chat.completions.create(
model="gpt-4",
messages=custom_prompt,
temperature=0.9
)