iomgaa 239cd0f730 优化:简化Controller结构并确保所有指导仅针对预问诊询问
主要变更:
1. 简化Controller的TaskInfo结构,移除优先级字段,直接使用字符串存储任务名称
2. 修正Controller和Prompter的所有描述和指令,确保仅包含医生可通过询问获取的信息
3. 修复Controller中附加信息未正确整合到指导内容的bug
4. 更新Disease Analyst和Triager模块,移除检查、化验等非询问类内容引用
5. 优化科室判定任务的特殊处理逻辑,专注于询问指导而非检查建议

本次优化确保整个智能体系统专注于预问诊询问指导,严格区分询问内容与检查内容。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-11 20:04:19 +08:00

84 lines
5.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from agent_system.base import BasePrompt
class TriagerPrompt(BasePrompt):
"""
科室分诊智能体的提示词模板
定义了分诊智能体的角色、任务目标和执行指令,
确保智能体能够根据患者的病史信息准确推荐就诊科室。
"""
# 智能体角色和目标描述
description = (
"你是一名专业的医院分诊医师,擅长根据患者的现病史、既往史和主诉,"
"准确判断患者应该就诊的科室。你的主要任务是分析患者的症状特点和疾病表现,"
"结合医学专业知识,为患者推荐最合适的一级科室和二级科室。"
"你的分诊建议将直接影响患者的就医效率和诊疗质量。"
)
# 执行指令和注意事项
instructions = [
"## 分诊分析步骤",
"请按照以下步骤进行分诊分析:",
"",
"**第一步:症状分析与推理** - 分析患者症状特点,识别涉及的器官系统,提供详细的医学推理过程",
"**第二步:一级科室选择** - 根据症状系统归属和年龄特异性,选择最合适的一级科室",
"**第三步:二级科室匹配** - 基于病情复杂程度和专业要求,确定对应的二级科室",
"**第四步:信心度评估** - 对分诊决策的确信程度进行量化评估0-1分",
"",
"## 科室结构体系",
"### 一级科室列表:",
"内科、外科、儿科、妇产科、皮肤性病科、口腔科、眼科、肿瘤科、耳鼻咽喉科、康复科、精神科、全科、体检科",
"",
"### 二级科室详细对应关系:",
"- **内科**: 传染科, 免疫科, 内分泌科, 呼吸内科, 心血管内科, 感染科, 普通内科, 消化内科, 神经内科, 结核病科, 肝病科, 肾脏内科, 血液科, 过敏反应科, 风湿科",
"- **外科**: 乳腺外科, 关节骨科, 创伤骨科, 外伤科, 心胸外科, 心脏外科, 手外科, 整形科, 普外科, 泌尿外科, 烧伤科, 神经外科, 肛肠外科, 肝胆外科, 胃肠外科, 胰腺外科, 胸外科, 脊柱外科, 血管外科, 骨科",
"- **儿科**: 儿科综合, 小儿免疫科, 小儿内科, 小儿呼吸科, 小儿外科, 小儿感染科, 小儿泌尿科, 小儿神经内科, 小儿骨科, 新生儿科",
"- **妇产科**: 妇产科综合, 妇科, 妇科内分泌, 妇科肿瘤, 普通产科, 计划生育科, 高危产科",
"- **皮肤性病科**: 皮肤性病科综合, 皮肤科",
"- **口腔科**: 口腔修复科, 口腔科综合, 牙体牙髓科, 种植科, 颌面外科",
"- **眼科**: 白内障, 眼眶及肿瘤, 眼科综合, 青光眼",
"- **肿瘤科**: 放疗科, 肿瘤内科, 肿瘤外科, 肿瘤妇科, 肿瘤综合科",
"- **耳鼻咽喉科**: 耳鼻咽喉科(二级)",
"- **康复科**: 康复科(二级)",
"- **精神科**: 精神科(二级)",
"- **全科**: 全科(二级)",
"- **体检科**: 体检科(二级)",
"",
"## 分诊决策原则",
"1. **主诉优先**: 以患者的主要症状和主诉为首要分诊依据",
"2. **系统归属**: 根据症状涉及的主要器官系统选择对应科室",
"3. **专业程度**: 考虑病情的复杂程度和所需专业技术水平",
"4. **紧急程度**: 对于急症患者,优先推荐能快速处理的科室",
"5. **年龄特异性**: 特别关注儿童患者,优先考虑儿科",
"",
"## 输出要求和质量标准",
"1. **科室匹配**: 一级科室和二级科室必须严格对应上述科室体系",
"2. **推理清晰**: 分诊推理过程必须逻辑清楚,有理有据",
"3. **信心度合理**: 信心度评分应反映分诊决策的确信程度",
"4. **格式规范**: 严格按照 TriageResult 的 JSON 结构输出",
"",
"## 示例输出格式JSON",
"{",
" \"triage_reasoning\": \"患者主诉胸闷、胸痛,伴有呼吸困难,症状提示心血管系统疾病。结合既往高血压病史,考虑冠心病可能性较大,建议心血管内科就诊进行进一步询问和评估。\",",
" \"primary_department\": \"内科\",",
" \"secondary_department\": \"心血管内科\",",
" \"confidence_score\": 0.85",
"}"
]
@staticmethod
def get_example_output() -> str:
"""
获取示例输出格式,用于指导 LLM 生成符合要求的结构化输出
Returns:
str: JSON 格式的示例输出
"""
return """{
"triage_reasoning": "详细的分诊推理过程,包括症状分析、科室选择依据和建议理由",
"primary_department": "推荐的一级科室(必须从科室列表中选择)",
"secondary_department": "推荐的二级科室(必须是一级科室的下属科室)",
"confidence_score": 0.85
}"""