想实现sse事件流,但是最终还是一次性返回的响应数据
想用python请求openai接口,然后使用事件流返回响应数据,但是实际应用却是一起返回的。猜测可能是最后的 return response 语句的问题。这个代码应该如何修改达到想要的效果呢?(ps:刚学python,有很多东西不了解,还望指点!!!)(也尝试了flask-sse,失败了。。。没搞出来)
@app.route('/api/stream', methods=["POST"])
def stream():
message = request.form.get('message')
user_id = request.form.get('user_id')
_message = json.loads(message)
openai.api_key = mod2.getKey()
response = openai.ChatCompletion.create(model='gpt-3.5-turbo', messages=_message,stream=True)
# 以上代码获取chatgpt响应,
def eventStream():
for item in response:
json_data = item['choices'][0]['delta']
res_data = json.dumps(item['choices'][0]['delta'], ensure_ascii=False)
if json_data.__contains__('content'):
yield 'data: {}\n\n'.format( res_data)
return Response(eventStream(), mimetype="text/event-stream")
if __name__ == '__main__':
app.run(host="0.0.0.0", debug=True, port=8000)
推荐文章: