OpenAI API流响应导致Heroku超时

mcdcgff0  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(169)

我正在Heroku上运行一个Python / Django应用程序,它调用OpenAI聊天完成API。前端是一个React应用程序,也在Heroku上。前端向后端发送一个请求,然后后端调用OepnAI API,后端接收流响应并将其流到前端。
流可能需要很长时间(>30秒)才能完成。它在本地工作正常。当在生产中的Heroku上运行它时,正好30秒后,我在日志中得到一个错误"[CRITICAL] WORKER TIMEOUT",并且流错误。
根据heroku的这篇文章,30秒的超时不应该应用于流请求,而应该是一个滚动的55秒窗口(我正好在这个范围内)。
然而,它似乎不起作用。我尝试了使用OpenAI的python库和直接使用requests

url = "https://api.openai.com/v1/chat/completions"
    headers = {
      "Authorization": f"Bearer {OPENAI_KEY}",
      "Content-Type": "application/json"
    }

    body = {
        'model':'gpt-4-1106-preview',
        'messages':messages,
        'temperature':temperature,
        'stream':True
    }

    r = requests.post(url, headers=headers, json=body, stream=True)

    for line in r.iter_lines():
        if line:
             l = json.loads(line.decode("utf-8").split('data: ')[1].strip())
             yield l['choices'][0]['delta']['content']

字符串
当我通过python控制台在后端运行它时,它需要30多秒,但运行和完成都很好,我在前端看到的错误是host-rrweb-network.js:1 POST <...backend url...> net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)

h9vpoimq

h9vpoimq1#

通过将--keep-alive 3000 --timeout 3000添加到我的procfile修复

相关问题