Hai Lin 2 tygodni temu
rodzic
commit
541e2651b2
2 zmienionych plików z 38 dodań i 1 usunięć
  1. 21 0
      app.py
  2. 17 1
      duplicate_checker.py

+ 21 - 0
app.py

@@ -86,6 +86,27 @@ def confirm_repeat():
     except Exception as e:
         return jsonify({"code": -1, "message": str(e)}), 500
 
+@app.route('/api/question_info', methods=['GET'])
+def get_question_info():
+    """
+    查询题目在向量库中的信息
+    参数: questionId
+    """
+    question_id = request.args.get('questionId')
+    if not question_id:
+        return jsonify({"code": -1, "message": "Missing questionId"}), 400
+    
+    try:
+        result = checker.get_question_data(int(question_id))
+        return jsonify({
+            "code": 0,
+            "result": result
+        })
+    except ValueError:
+        return jsonify({"code": -1, "message": "Invalid questionId format"}), 400
+    except Exception as e:
+        return jsonify({"code": -1, "message": str(e)}), 500
+
 if __name__ == '__main__':
     # 启动服务,默认 5000 端口
     app.run(host='0.0.0.0', port=8888, debug=False)

+ 17 - 1
duplicate_checker.py

@@ -339,7 +339,8 @@ class QuestionDuplicateChecker:
                     {"role": "system", "content": "你是一个专业的数学题目查重助手。"},
                     {"role": "user", "content": prompt}
                 ],
-                response_format={"type": "json_object"}
+                response_format={"type": "json_object"},
+                temperature=0
             )
             
             result = json.loads(response.choices[0].message.content)
@@ -475,6 +476,21 @@ class QuestionDuplicateChecker:
         
         return {"status": "success", "is_duplicate": False, "top_similar": []}
 
+    def get_question_data(self, question_id: int) -> Dict:
+        """获取向量库中特定ID的数据及总数"""
+        total_count = self.index.ntotal if self.index else 0
+        
+        target_metadata = None
+        for m in self.metadata:
+            if m['id'] == question_id:
+                target_metadata = m
+                break
+        
+        return {
+            "total_count": total_count,
+            "question_data": target_metadata
+        }
+
     def add_to_index(self, question_id: int, vector: np.ndarray, text: str):
         """将题目加入索引"""
         if any(m['id'] == question_id for m in self.metadata):