Python 大佬帮忙看一下 GPT 流式返回后如何处理的代码?

2023-06-21 09:26:11 +08:00
 EeffDev

代码如下,目前可以流式返回内容到页面上,但是我希望流式返回结束后,我可以进行一些操作,例如保存完整返回到日志、计费等。但是目前 process_response 只会在页面打开后立即执行,并且打印的是“完成 [ ]” 空的 list

应该怎么写呢?(问了 GPT ,翻来覆去也是不对

@app.route("/chat/test", methods=["GET", "POST"])
def chat():
    #  app.logger.info
    os.environ["API_URL"] = "https://api.openai.com/v1/chat/completions"
    chatbot = Chatbot(api_key="key",
                      system_prompt='请帮我生成一句诗,描写春天的'
                      )

    output = []

    def generate_response():
        for data in chatbot.ask_stream("生成"):
            output.append(data)
            yield data

    @after_this_request
    def process_response(response):  # 响应结束后调用该函数
        print("完成", output)
        return response

    return Response(generate_response(), mimetype="text/event-stream")
498 次点击
所在节点    问与答
1 条回复
EeffDev
2023-06-21 10:47:19 +08:00
解决了其实很简单,想多了😂
提问方法:
你好,我有一个文本文件,我想使用 python flask 制作一个服务,打开页面后,该文本文件的内容将通过 text/event-stream 的形式,一个字一个字的打印在页面上,流式返回。
同时我希望在所有文字返回结束后,可以执行删除服务器上该文件的动作。应该怎么写呢?

综合回答后的解决方法:

def generate_response():
for data in chatbot.ask_stream("生成"):
output.append(data)
yield data
print(output)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/950526

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX