如何等待OpenAI助手的实际回复?(Python OpenAI API)

我正在使用OpenAI助手API(Python)。到目前为止,运行良好。但有时候API返回的是我发送给助手的消息,而不是助手的回复。

from openai import OpenAIfrom os import environOPEN_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秒。这种方法有效,但我不认为这是最佳解决方案(或者完全可靠)。有什么方法可以等到助手真正回复吗?

非常感谢。

更新:

这个方法有效:

from openai import OpenAIfrom os import environOPEN_API_KEY = environ.get('xxxxx')assistant_id = "xxxxx"client = OpenAI(api_key=OPEN_API_KEY)assistant = client.beta.assistants.retrieve(assistant_id)def get_answer(run, thread):    while not run.status == "completed":        print("Waiting for answer...")        run = client.beta.threads.runs.retrieve(            thread_id=thread.id,            run_id=run.id        )            messages = client.beta.threads.messages.list(thread.id)    answer = messages.data[0].content[0].text.value        try:        answer = messages.data[0].content[0].text.value    except Exception as e:        print(e)        answer = ''            return answerdef ask_assistant(message_text):     print(f'sending to assistant: {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    )        answer = get_answer(run, thread)      print(f'assistant response: {answer}')    return answer        if __name__ == "__main__":    ask_assistant('Hello')

回答:

这应该有效:

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)

感谢@[隐藏人名]

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注