我使用 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函数中的响应
将不胜感激任何帮助!
假设我有一个字符串列表/元组,
COLOURS = [
"White",
"Black",
"Red"
"Green",
"Blue"
]
for c in COLOURS:
# rest of the code
Run Code Online (Sandbox Code Playgroud)
有时我忘记在列表中的每个条目后面放置逗号("Red"在上面的代码片段中)。这会产生一个"RedGreen"而不是两个单独的"Red"列表"Green"项。
由于这是有效的 Python,因此没有 IDE/文本编辑器显示警告/错误。错误的值仅在测试过程中才会引起注意。
我应该使用什么写作风格或代码结构来防止这种情况?
我尝试了以下变体:
vec![5, 5, 5] > vec![1, 1, 1]退货true
vec![5] > vec![1, 1, 1]退货true
vec![5, 0] > vec![6, 1]退货false
vec![1, 5, 2] > vec![0, 6, 1]退货true
似乎只有第一个元素用于确定输出;向量大小差异和其余元素在比较中被忽略。应该是这样吗?
数组似乎以相同的方式响应,唯一的区别是两个数组的大小应该相同。