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

问题描述 投票:0回答:1

我正在与 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 秒。这可行,但我不认为它是最好的解决方案(或根本可靠)。有什么想法如何等到助理真正回复吗?

非常感谢。

python openai-api
1个回答
0
投票

这应该有效:

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)

感谢@joyasree78

© www.soinside.com 2019 - 2024. All rights reserved.