routes.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. # routes.py
  2. from flask import Blueprint, render_template, request, jsonify
  3. from app.services.file_service import parse_file # 导入 service 中的函数
  4. from app.services.chat_service import clear_chat_history, create_chat
  5. from app.services.embed_service import parse_file_to_embed
  6. from llm_model.get_vector_db import get_vector_db
  7. main_bp = Blueprint('main', __name__)
  8. # 主页
  9. @main_bp.route('/')
  10. def index():
  11. return render_template('index.html')
  12. # 测试接口
  13. @main_bp.route("/hello")
  14. def hello():
  15. return "Hello, World!"
  16. # 语音文件上传
  17. @main_bp.route('/upload', methods=['POST'])
  18. def upload_file():
  19. if 'file' not in request.files:
  20. return jsonify({"error": "No file part in the request"}), 400
  21. file = request.files['file']
  22. if file.filename == '':
  23. return jsonify({"error": "No file selected for uploading"}), 400
  24. # 保存文件并解析
  25. res_obj = parse_file(file)
  26. return jsonify(res_obj), 200
  27. # 关闭聊天记录
  28. @main_bp.route('/closeMsg', methods=['DELETE'])
  29. def del_msg():
  30. return jsonify({"msg": "清除成功",
  31. "code": 200,
  32. "chat_history": clear_chat_history(),
  33. })
  34. # 聊天
  35. @main_bp.route('/msg', methods=['POST'])
  36. def input_msg():
  37. # 从请求中获取JSON数据
  38. data = request.get_json()
  39. # 检查是否接收到数据
  40. if not data:
  41. return jsonify({"error": "No data received"}), 400
  42. # 打印接收到的消息
  43. print(data['msg'])
  44. msg = data['msg']
  45. type = data['type']
  46. json_res = create_chat(msg, type)
  47. # 返回响应
  48. return jsonify(json_res)
  49. # 知识问答文件解析
  50. @main_bp.route('/embed', methods=['POST'])
  51. def route_embed():
  52. if 'file' not in request.files:
  53. return jsonify({"error": "No file part"}), 400
  54. file = request.files['file']
  55. if file.filename == '':
  56. return jsonify({"error": "No selected file"}), 400
  57. return parse_file_to_embed(file)
  58. # 删除向量库
  59. @main_bp.route('/embed', methods=['DELETE'])
  60. def route_delete():
  61. db = get_vector_db()
  62. db.delete_collection()
  63. return jsonify({"message": "Collection deleted successfully"}), 200