소스 검색

Revert "develop-0520"

This reverts commit 7b327448
luojunhui 1 개월 전
부모
커밋
ff4cfbb862
1개의 변경된 파일90개의 추가작업 그리고 81개의 파일을 삭제
  1. 90 81
      pqai_agent_server/api_server.py

+ 90 - 81
pqai_agent_server/api_server.py

@@ -19,136 +19,147 @@ from pqai_agent_server.utils import (
     run_response_type_prompt,
 )
 
-app = Flask("agent_api_server")
+app = Flask('agent_api_server')
 logger = logging_service.logger
 
 
-@app.route("/api/listStaffs", methods=["GET"])
+@app.route('/api/listStaffs', methods=['GET'])
 def list_staffs():
     staff_data = app.user_relation_manager.list_staffs()
     return wrap_response(200, data=staff_data)
 
 
-@app.route("/api/getStaffProfile", methods=["GET"])
+@app.route('/api/getStaffProfile', methods=['GET'])
 def get_staff_profile():
     staff_id = request.args["staff_id"]
     profile = app.user_manager.get_staff_profile(staff_id)
     if not profile:
-        return wrap_response(404, msg="staff not found")
+        return wrap_response(404, msg='staff not found')
     else:
         return wrap_response(200, data=profile)
 
 
-@app.route("/api/getUserProfile", methods=["GET"])
+@app.route('/api/getUserProfile', methods=['GET'])
 def get_user_profile():
-    user_id = request.args["user_id"]
+    user_id = request.args['user_id']
     profile = app.user_manager.get_user_profile(user_id)
     if not profile:
-        resp = {"code": 404, "msg": "user not found"}
+        resp = {
+            'code': 404,
+            'msg': 'user not found'
+        }
     else:
-        resp = {"code": 200, "msg": "success", "data": profile}
+        resp = {
+            'code': 200,
+            'msg': 'success',
+            'data': profile
+        }
     return jsonify(resp)
 
 
-@app.route("/api/listUsers", methods=["GET"])
+@app.route('/api/listUsers', methods=['GET'])
 def list_users():
-    user_name = request.args.get("user_name", None)
-    user_union_id = request.args.get("user_union_id", None)
+    user_name = request.args.get('user_name', None)
+    user_union_id = request.args.get('user_union_id', None)
     if not user_name and not user_union_id:
-        resp = {"code": 400, "msg": "user_name or user_union_id is required"}
+        resp = {
+            'code': 400,
+            'msg': 'user_name or user_union_id is required'
+        }
         return jsonify(resp)
     data = app.user_manager.list_users(user_name=user_name, user_union_id=user_union_id)
-    return jsonify({"code": 200, "data": data})
+    return jsonify({'code': 200, 'data': data})
 
 
-@app.route("/api/getDialogueHistory", methods=["GET"])
+@app.route('/api/getDialogueHistory', methods=['GET'])
 def get_dialogue_history():
-    staff_id = request.args["staff_id"]
-    user_id = request.args["user_id"]
-    recent_minutes = int(request.args.get("recent_minutes", 1440))
-    dialogue_history = app.history_dialogue_service.get_dialogue_history(
-        staff_id, user_id, recent_minutes
-    )
-    return jsonify({"code": 200, "data": dialogue_history})
+    staff_id = request.args['staff_id']
+    user_id = request.args['user_id']
+    recent_minutes = int(request.args.get('recent_minutes', 1440))
+    dialogue_history = app.history_dialogue_service.get_dialogue_history(staff_id, user_id, recent_minutes)
+    return jsonify({'code': 200, 'data': dialogue_history})
 
 
-@app.route("/api/listModels", methods=["GET"])
+@app.route('/api/listModels', methods=['GET'])
 def list_models():
     models = [
         {
-            "model_type": "openai_compatible",
-            "model_name": chat_service.VOLCENGINE_MODEL_DEEPSEEK_V3,
-            "display_name": "DeepSeek V3 on 火山",
+            'model_type': 'openai_compatible',
+            'model_name': chat_service.VOLCENGINE_MODEL_DEEPSEEK_V3,
+            'display_name': 'DeepSeek V3 on 火山',
         },
         {
-            "model_type": "openai_compatible",
-            "model_name": chat_service.VOLCENGINE_MODEL_DOUBAO_PRO_32K,
-            "display_name": "豆包Pro 32K",
+            'model_type': 'openai_compatible',
+            'model_name': chat_service.VOLCENGINE_MODEL_DOUBAO_PRO_32K,
+            'display_name': '豆包Pro 32K',
         },
         {
-            "model_type": "openai_compatible",
-            "model_name": chat_service.VOLCENGINE_MODEL_DOUBAO_PRO_1_5,
-            "display_name": "豆包Pro 1.5",
+            'model_type': 'openai_compatible',
+            'model_name': chat_service.VOLCENGINE_MODEL_DOUBAO_PRO_1_5,
+            'display_name': '豆包Pro 1.5',
         },
         {
-            "model_type": "openai_compatible",
-            "model_name": chat_service.VOLCENGINE_BOT_DEEPSEEK_V3_SEARCH,
-            "display_name": "DeepSeek V3联网 on 火山",
+            'model_type': 'openai_compatible',
+            'model_name': chat_service.VOLCENGINE_BOT_DEEPSEEK_V3_SEARCH,
+            'display_name': 'DeepSeek V3联网 on 火山',
         },
         {
-            "model_type": "openai_compatible",
-            "model_name": chat_service.VOLCENGINE_MODEL_DOUBAO_1_5_VISION_PRO,
-            "display_name": "豆包1.5视觉理解Pro",
+            'model_type': 'openai_compatible',
+            'model_name': chat_service.VOLCENGINE_MODEL_DOUBAO_1_5_VISION_PRO,
+            'display_name': '豆包1.5视觉理解Pro',
         },
     ]
     return wrap_response(200, data=models)
 
 
-@app.route("/api/listScenes", methods=["GET"])
+@app.route('/api/listScenes', methods=['GET'])
 def list_scenes():
     scenes = [
-        {"scene": "greeting", "display_name": "问候"},
-        {"scene": "chitchat", "display_name": "闲聊"},
-        {"scene": "profile_extractor", "display_name": "画像提取"},
-        {"scene": "response_type_detector", "display_name": "回复模态判断"},
-        {"scene": "custom_debugging", "display_name": "自定义调试场景"},
+        {'scene': 'greeting', 'display_name': '问候'},
+        {'scene': 'chitchat', 'display_name': '闲聊'},
+        {'scene': 'profile_extractor', 'display_name': '画像提取'},
+        {'scene': 'response_type_detector', 'display_name': '回复模态判断'},
+        {'scene': 'custom_debugging', 'display_name': '自定义调试场景'}
     ]
     return wrap_response(200, data=scenes)
 
 
-@app.route("/api/getBasePrompt", methods=["GET"])
+@app.route('/api/getBasePrompt', methods=['GET'])
 def get_base_prompt():
-    scene = request.args["scene"]
+    scene = request.args['scene']
     prompt_map = {
-        "greeting": prompt_templates.GENERAL_GREETING_PROMPT,
-        "chitchat": prompt_templates.CHITCHAT_PROMPT_COZE,
-        "profile_extractor": prompt_templates.USER_PROFILE_EXTRACT_PROMPT,
-        "response_type_detector": prompt_templates.RESPONSE_TYPE_DETECT_PROMPT,
-        "custom_debugging": "",
+        'greeting': prompt_templates.GENERAL_GREETING_PROMPT,
+        'chitchat': prompt_templates.CHITCHAT_PROMPT_COZE,
+        'profile_extractor': prompt_templates.USER_PROFILE_EXTRACT_PROMPT,
+        'response_type_detector': prompt_templates.RESPONSE_TYPE_DETECT_PROMPT,
+        'custom_debugging': '',
     }
     model_map = {
-        "greeting": chat_service.VOLCENGINE_MODEL_DOUBAO_PRO_32K,
-        "chitchat": chat_service.VOLCENGINE_MODEL_DOUBAO_PRO_32K,
-        "profile_extractor": chat_service.VOLCENGINE_MODEL_DOUBAO_PRO_1_5,
-        "response_type_detector": chat_service.VOLCENGINE_MODEL_DOUBAO_PRO_1_5,
-        "custom_debugging": chat_service.VOLCENGINE_BOT_DEEPSEEK_V3_SEARCH,
+        'greeting': chat_service.VOLCENGINE_MODEL_DOUBAO_PRO_32K,
+        'chitchat': chat_service.VOLCENGINE_MODEL_DOUBAO_PRO_32K,
+        'profile_extractor': chat_service.VOLCENGINE_MODEL_DOUBAO_PRO_1_5,
+        'response_type_detector': chat_service.VOLCENGINE_MODEL_DOUBAO_PRO_1_5,
+        'custom_debugging': chat_service.VOLCENGINE_BOT_DEEPSEEK_V3_SEARCH,
     }
     if scene not in prompt_map:
         return wrap_response(404, msg="scene not found")
-    data = {"model_name": model_map[scene], "content": prompt_map[scene]}
+    data = {
+        'model_name': model_map[scene],
+        'content': prompt_map[scene]
+    }
     return wrap_response(200, data=data)
 
 
-@app.route("/api/runPrompt", methods=["POST"])
+@app.route('/api/runPrompt', methods=['POST'])
 def run_prompt():
     try:
         req_data = request.json
         logger.debug(req_data)
-        scene = req_data["scene"]
-        if scene == "profile_extractor":
+        scene = req_data['scene']
+        if scene == 'profile_extractor':
             response = run_extractor_prompt(req_data)
             return wrap_response(200, data=response)
-        elif scene == "response_type_detector":
+        elif scene == 'response_type_detector':
             response = run_response_type_prompt(req_data)
             return wrap_response(200, data=response.choices[0].message.content)
         else:
@@ -156,7 +167,7 @@ def run_prompt():
             return wrap_response(200, data=response.choices[0].message.content)
     except Exception as e:
         logger.error(e)
-        return wrap_response(500, msg="Error: {}".format(e))
+        return wrap_response(500, msg='Error: {}'.format(e))
 
 
 @app.route("/api/healthCheck", methods=["GET"])
@@ -238,43 +249,41 @@ def send_message():
 @app.errorhandler(werkzeug.exceptions.BadRequest)
 def handle_bad_request(e):
     logger.error(e)
-    return wrap_response(400, msg="Bad Request: {}".format(e.description))
+    return wrap_response(400, msg='Bad Request: {}'.format(e.description))
 
 
 if __name__ == "__main__":
     parser = ArgumentParser()
-    parser.add_argument("--prod", action="store_true")
-    parser.add_argument("--host", default="127.0.0.1")
-    parser.add_argument("--port", type=int, default=8083)
-    parser.add_argument("--log-level", default="INFO")
+    parser.add_argument('--prod', action='store_true')
+    parser.add_argument('--host', default='127.0.0.1')
+    parser.add_argument('--port', type=int, default=8083)
+    parser.add_argument('--log-level', default='INFO')
     args = parser.parse_args()
 
     config = configs.get()
     logging_level = logging.getLevelName(args.log_level)
-    logging_service.setup_root_logger(
-        level=logging_level, logfile_name="agent_api_server.log"
-    )
+    logging_service.setup_root_logger(level=logging_level, logfile_name='agent_api_server.log')
 
-    user_db_config = config["storage"]["user"]
-    staff_db_config = config["storage"]["staff"]
+    user_db_config = config['storage']['user']
+    staff_db_config = config['storage']['staff']
     user_manager = MySQLUserManager(
-        user_db_config["mysql"], user_db_config["table"], staff_db_config["table"]
+        user_db_config['mysql'], user_db_config['table'], staff_db_config['table']
     )
     app.user_manager = user_manager
 
-    wecom_db_config = config["storage"]["user_relation"]
+    wecom_db_config = config['storage']['user_relation']
     user_relation_manager = MySQLUserRelationManager(
-        user_db_config["mysql"],
-        wecom_db_config["mysql"],
-        config["storage"]["staff"]["table"],
-        user_db_config["table"],
-        wecom_db_config["table"]["staff"],
-        wecom_db_config["table"]["relation"],
-        wecom_db_config["table"]["user"],
+        user_db_config['mysql'],
+        wecom_db_config['mysql'],
+        config['storage']['staff']['table'],
+        user_db_config['table'],
+        wecom_db_config['table']['staff'],
+        wecom_db_config['table']['relation'],
+        wecom_db_config['table']['user'],
     )
     app.user_relation_manager = user_relation_manager
     app.history_dialogue_service = HistoryDialogueService(
-        config["storage"]["history_dialogue"]["api_base_url"]
+        config['storage']['history_dialogue']['api_base_url']
     )
 
     app.run(debug=not args.prod, host=args.host, port=args.port)