我正在与 openai 助手 API (python) 交互。到目前为止,效果很好。但有时API会返回我发送给助手的消息而不是助手的回复。
from openai import OpenAI
from os import environ
OPEN_API_KEY = environ.get('OPEN_API_KEY')
assistant_id = "xxxxxxx"
client = OpenAI(api_key=OPEN_API_KEY)
assistant = client.beta.assistants.retrieve(assistant_id)
def ask_assistant(message_text):
print(f'received message: {message_text}')
thread = client.beta.threads.create()
message = client.beta.threads.messages.create(
thread_id=thread.id,
role="user",
content=message_text
)
run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant_id
)
run_retrieve = client.beta.threads.runs.retrieve(
thread_id=thread.id,
run_id=run.id
)
messages = client.beta.threads.messages.list(thread.id)
final_text = messages.data[0].content[0].text.value
try:
final_text = messages.data[0].content[0].text.value
print(final_text)
except Exception as e:
print(e)
final_text = ''
return final_text
if __name__ == "__main__":
ask_assistant('How are you?')
作为一个热修复,我实现了一个睡眠功能,在检索回复之前等待 3 秒。这可行,但我不认为它是最好的解决方案(或根本可靠)。有什么想法如何等到助理真正回复吗?
非常感谢。
这应该有效:
run = openai.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id
)
print(run)
while run.status !="completed":
run = openai.beta.threads.runs.retrieve(
thread_id=thread.id,
run_id=run.id
)
print(run.status)
messages = openai.beta.threads.messages.list(
thread_id=thread.id
)
print(messages.data[0].content[0].text.value)