from flask import Flask, Response from flask_cors import CORS import time from http import HTTPStatus import dashscope from dashscope import Generation DASHSCOPE_API_KEY = "sk-01961138995e44ac8226e56882fa0f5a" dashscope.api_key = DASHSCOPE_API_KEY app = Flask(__name__) CORS(app) @app.route("/") def index(): return "Welcome to Lianqi AI" @app.route("/subscribe_qwen/", methods=["GET", "POST"]) def stream(question): return Response(call_with_stream(question), mimetype="text/event-stream") def event_stream(): while True: yield "data: {}\n\n".format(time.time()) time.sleep(1) def call_with_stream(msg): messages = [{"role": "user", "content": msg}] responses = Generation.call( Generation.Models.qwen_turbo, messages=messages, result_format="message", # set the result to be "message" format. stream=True, incremental_output=True, # get streaming output incrementally ) full_content = "" # with incrementally we need to merge output. for response in responses: if response.status_code == HTTPStatus.OK: full_content += response.output.choices[0]["message"]["content"] print(full_content) yield full_content + "\n\n" else: yield ( "Request id: %s, Status code: %s, error code: %s, error message: %s\n\n" % ( response.request_id, response.status_code, response.code, response.message, ) ) if __name__ == "__main__": app.run(host="0.0.0.0", debug=True, threaded=True, port=20021)