diff --git a/agent_system/triager/agent.py b/agent_system/triager/agent.py index 7f3f2cc..7be0144 100644 --- a/agent_system/triager/agent.py +++ b/agent_system/triager/agent.py @@ -141,10 +141,10 @@ class TriageAgent(BaseAgent): TriageResult: 包含默认分诊建议的结果 """ return TriageResult( + triage_reasoning="由于分诊分析过程中出现异常,系统推荐全科就诊。建议患者先到全科进行初步评估,医生会根据具体情况进一步转诊到合适的专科。", primary_department="全科", secondary_department="全科(二级)", - confidence_score=0.3, - triage_reasoning="由于分诊分析过程中出现异常,系统推荐全科就诊。建议患者先到全科进行初步评估,医生会根据具体情况进一步转诊到合适的专科。" + confidence_score=0.3 ) def triage_by_chief_complaint(self, chief_complaint: str) -> TriageResult: diff --git a/agent_system/triager/prompt.py b/agent_system/triager/prompt.py index 266989f..f785930 100644 --- a/agent_system/triager/prompt.py +++ b/agent_system/triager/prompt.py @@ -19,11 +19,13 @@ class TriagerPrompt(BasePrompt): # 执行指令和注意事项 instructions = [ - "## 核心分诊任务", - "1. **症状系统分析**: 根据患者主诉和现病史,准确识别疾病涉及的主要器官系统", - "2. **科室匹配判断**: 结合症状特点,选择最适合的一级科室和对应的二级科室", - "3. **专业度评估**: 基于病情复杂程度和专业要求,确定最合适的专科科室", - "4. **信心度评价**: 对分诊决策的确信程度进行量化评估", + "## 分诊分析步骤", + "请按照以下步骤进行分诊分析:", + "", + "**第一步:症状分析与推理** - 分析患者症状特点,识别涉及的器官系统,提供详细的医学推理过程", + "**第二步:一级科室选择** - 根据症状系统归属和年龄特异性,选择最合适的一级科室", + "**第三步:二级科室匹配** - 基于病情复杂程度和专业要求,确定对应的二级科室", + "**第四步:信心度评估** - 对分诊决策的确信程度进行量化评估(0-1分)", "", "## 科室结构体系", "### 一级科室列表:", @@ -59,10 +61,10 @@ class TriagerPrompt(BasePrompt): "", "## 示例输出格式(JSON)", "{", + " \"triage_reasoning\": \"患者主诉胸闷、胸痛,伴有呼吸困难,症状提示心血管系统疾病。结合既往高血压病史,考虑冠心病可能性较大,建议心血管内科就诊进行进一步检查和治疗。\",", " \"primary_department\": \"内科\",", " \"secondary_department\": \"心血管内科\",", - " \"confidence_score\": 0.85,", - " \"triage_reasoning\": \"患者主诉胸闷、胸痛,伴有呼吸困难,症状提示心血管系统疾病。结合既往高血压病史,考虑冠心病可能性较大,建议心血管内科就诊进行进一步检查和治疗。\"", + " \"confidence_score\": 0.85", "}" ] @@ -75,8 +77,8 @@ class TriagerPrompt(BasePrompt): str: JSON 格式的示例输出 """ return """{ + "triage_reasoning": "详细的分诊推理过程,包括症状分析、科室选择依据和建议理由", "primary_department": "推荐的一级科室(必须从科室列表中选择)", "secondary_department": "推荐的二级科室(必须是一级科室的下属科室)", - "confidence_score": 0.85, - "triage_reasoning": "详细的分诊推理过程,包括症状分析、科室选择依据和建议理由" + "confidence_score": 0.85 }""" \ No newline at end of file diff --git a/agent_system/triager/response_model.py b/agent_system/triager/response_model.py index 12e2f47..3fbde81 100644 --- a/agent_system/triager/response_model.py +++ b/agent_system/triager/response_model.py @@ -7,6 +7,11 @@ class TriageResult(BaseResponseModel): """ 科室分诊结果模型 """ + triage_reasoning: str = Field( + ..., + description="分诊推理过程,解释为什么推荐该科室" + ) + primary_department: Literal[ "内科", "外科", "儿科", "妇产科", "皮肤性病科", "口腔科", "眼科", "肿瘤科", "耳鼻咽喉科", "康复科", @@ -26,9 +31,4 @@ class TriageResult(BaseResponseModel): ge=0.0, le=1.0, description="分诊信心度评分(0-1之间)" - ) - - triage_reasoning: str = Field( - ..., - description="分诊推理过程,解释为什么推荐该科室" ) \ No newline at end of file