Dan*_*elG 9 python python-asyncio openai-api
我使用 OpenAI API。我从 PowerPoint 演示文稿中提取了幻灯片文本,并为每张幻灯片编写了提示。现在,我想进行异步 API 调用,以便同时处理所有幻灯片。
这是异步主函数的代码:
for prompt in prompted_slides_text:
task = asyncio.create_task(api_manager.generate_answer(prompt))
tasks.append(task)
results = await asyncio.gather(*tasks)
Run Code Online (Sandbox Code Playgroud)
这是generate_answer函数:
@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
Run Code Online (Sandbox Code Playgroud)
问题是:
对象 OpenAIObject 不能在“await”表达式中使用
我不知道如何等待generate_answer函数中的响应
将不胜感激任何帮助!
Shi*_*iva 14
注意:在 v1 版本中,API 已更改,此答案不再有效,请参阅Graciela对新 API 的回答。
您必须openai.ChatCompletion.acreate异步使用 api。
它记录在他们的 Github 上 - https://github.com/openai/openai-python#async-usage
对于那些登陆这里的人来说,这里的错误可能是对象的实例化。它一定要是:
client = AsyncOpenAI(api_key=api_key)
Run Code Online (Sandbox Code Playgroud)
然后你可以使用:
response = await client.chat.completions.create(
model="gpt-4",
messages=custom_prompt,
temperature=0.9
)
Run Code Online (Sandbox Code Playgroud)