main_qwen.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. from flask import Flask, Response
  2. from flask_cors import CORS
  3. import time
  4. from http import HTTPStatus
  5. import dashscope
  6. from dashscope import Generation
  7. DASHSCOPE_API_KEY = "sk-01961138995e44ac8226e56882fa0f5a"
  8. dashscope.api_key = DASHSCOPE_API_KEY
  9. app = Flask(__name__)
  10. CORS(app)
  11. @app.route("/")
  12. def index():
  13. return "Welcome to Lianqi AI"
  14. @app.route("/subscribe_qwen/<question>", methods=["GET", "POST"])
  15. def stream(question):
  16. return Response(call_with_stream(question), mimetype="text/event-stream")
  17. def event_stream():
  18. while True:
  19. yield "data: {}\n\n".format(time.time())
  20. time.sleep(1)
  21. def call_with_stream(msg):
  22. messages = [{"role": "user", "content": msg}]
  23. responses = Generation.call(
  24. Generation.Models.qwen_turbo,
  25. messages=messages,
  26. result_format="message", # set the result to be "message" format.
  27. stream=True,
  28. incremental_output=True, # get streaming output incrementally
  29. )
  30. full_content = "" # with incrementally we need to merge output.
  31. for response in responses:
  32. if response.status_code == HTTPStatus.OK:
  33. full_content += response.output.choices[0]["message"]["content"]
  34. print(full_content)
  35. yield full_content + "\n\n"
  36. else:
  37. yield (
  38. "Request id: %s, Status code: %s, error code: %s, error message: %s\n\n"
  39. % (
  40. response.request_id,
  41. response.status_code,
  42. response.code,
  43. response.message,
  44. )
  45. )
  46. if __name__ == "__main__":
  47. app.run(host="0.0.0.0", debug=True, threaded=True, port=20021)