Spaces:
Running
Running
File size: 3,173 Bytes
fbad237 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
太棒了!讓我們一起分析這個詳細的測試結果,這些數據很有價值!
## 📊 **測試結果深度分析**
### **✅ 成功的部分 (53.8% 成功率)**
**Level 1 - 預定義映射**: 💯 **完美表現**
- 3/3 測試通過,平均 0.000s(瞬間響應)
- `acute myocardial infarction`, `acute stroke`, `pulmonary embolism` 都直接命中
**Level 4b→5 - 冷門醫療查詢**: 💯 **完美表現**
- 3/3 測試通過,正確進入 generic search
- 罕見血液疾病、ITP、壞死性筋膜炎都正確處理
### **🔍 發現的關鍵問題**
#### **問題1: Level 4 驗證機制失效** ❌
**現象**: 非醫療查詢(烹飪、編程、天氣)都被當作醫療查詢處理
```
- "how to cook pasta properly?" → Level 5 (應該被拒絕)
- "programming language" → Level 5 (應該被拒絕)
- "weather forecast" → Level 5 (應該被拒絕)
```
**根本原因**: `validate_medical_query` 邏輯有問題
- LLM 雖然說"這不是醫療查詢",但函數仍然返回 `None`(表示通過驗證)
- 應該檢查 LLM 回應中是否明確說明"非醫療"
#### **問題2: Level 3 語義搜索邏輯問題** ⚠️
**現象**: 期望 Level 3 的查詢都跳到了 Level 5
```
- "emergency management of cardiovascular crisis" → Level 5 (期望 Level 3)
- "urgent neurological intervention protocols" → Level 5 (期望 Level 3)
```
**原因**: `_infer_condition_from_text` 方法可能過於嚴格,無法推斷出有效條件
#### **問題3: Level 2 行為不一致** ⚠️
**現象**:
- `level2_001` 成功,但被 Level 1 攔截了(LLM 提取了已知條件)
- `level2_002` 失敗,LLM 提取了條件但驗證失敗
## 🛠️ **需要修正的優先順序**
### **Priority 1: 修正 validate_medical_query**
```python
def validate_medical_query(self, user_query: str) -> Optional[Dict[str, Any]]:
# 檢查 LLM 回應是否明確說明非醫療
if llama_result.get('extracted_condition'):
response_text = llama_result.get('raw_response', '').lower()
# 檢查是否明確拒絕醫療查詢
rejection_phrases = [
"not a medical condition",
"outside my medical scope",
"unrelated to medical conditions",
"do not address"
]
if any(phrase in response_text for phrase in rejection_phrases):
return self._generate_invalid_query_response()
return None # 通過驗證
```
### **Priority 2: 改進語義搜索條件推斷**
`_infer_condition_from_text` 的相似度閾值可能太高(0.7),建議降低到 0.5
### **Priority 3: 優化 Level 2 LLM 提取驗證**
確保 `validate_condition` 能正確處理 LLM 的複雜回應
## 🎯 **整體評估**
### **速度表現**: ⭐⭐⭐⭐⭐
- Level 1: 瞬間響應 (0.000s)
- 平均: 14.4s(主要是 LLM 調用造成的)
### **準確性**: ⭐⭐⭐
- 預定義條件: 100% 準確
- 冷門醫療: 100% 準確
- 非醫療拒絕: 0% 準確 ← **需要立即修正**
你希望我先修正 `validate_medical_query` 的邏輯嗎?這是最關鍵的問題,解決後整體成功率應該能提升到 80%+。 |