CONVERSATION_UPGRADE.md 3.3 KB

对话式交互改造说明

一、改造目标

  • 自然流畅:避免机械式问答,加入过渡语、语气词、礼貌用语
  • 上下文连贯:记住对话历史,进行有逻辑的延续
  • 共情关怀:在患者描述症状后给予安抚与理解
  • 亲切专业:语言温和易懂,保持医疗信息准确

二、实现方案

1. 新增 ConversationResponseService

位置backend/src/main/java/com/medical/demo/service/ConversationResponseService.java

职责

  • 调用百炼 API 生成对话式回复
  • 根据用户输入和对话历史,决定是「追问澄清」还是「推荐科室」
  • 输出格式:{ "action": "ASK_FOLLOWUP" | "PROCEED_RECOMMEND", "content": "回复内容" }

Prompt 设计要点

  • 角色:甘肃省中医院导诊助理,专业、温和、有同理心
  • 策略:描述模糊时追问(位置、性质、持续时间等);描述具体时推荐科室
  • 语气:使用「了解了」「嗯」「好的」等过渡语,避免冷冰冰

2. 修改 ChatService 挂号流程

流程变化

原流程:用户「我头疼」 → 直接生成诊断分析 → 推荐科室卡片
新流程:用户「我头疼」 → 对话服务生成回复 → 
       - ASK_FOLLOWUP:仅发送追问文本,等待下一轮
       - PROCEED_RECOMMEND:发送回复 + 科室推荐卡片

上下文管理

  • sessionData 中存储 conversationHistory[{role, content}, ...]
  • 每次用户消息和 AI 回复都会追加到历史
  • 科室推荐时,将多轮用户描述拼接为完整症状传给 DepartmentRecommendationService

3. 典型对话示例

轮次 用户 系统回复
1 我头疼 了解了,您提到头疼。能再多描述一下疼痛的位置或感觉吗?比如是胀痛、刺痛还是其他?这样我可以帮您更准确地判断,并建议合适的科室。
2 头顶胀痛,两天了,有点恶心 了解了,您有头顶胀痛、伴恶心,持续两天,这种情况需要及时就诊。根据您的描述,为您推荐以下科室,请选择:[科室卡片]

三、进一步优化建议

1. Prompt 迭代

可在 ConversationResponseService.buildSystemPrompt() 中:

  • 增加更多示例对话
  • 细化追问场景(如:仅说「肚子疼」时追问部位、排便等)
  • 加入对焦虑、急症情绪的识别与安抚话术

2. 其他流程的对话化

  • 建档引导:可改为对话式询问「请问您是否已在本院建档?」
  • 报告解读:解读前可加一句「收到您的报告了,正在为您分析,请稍候」
  • 查询建档:未找到时「暂时没有查到您的档案,需要我帮您新建一份吗?」

3. 前端体验

  • 可增加「正在输入」动画,模拟打字效果
  • 对追问类回复可高亮「请补充描述」等引导语

4. 会话清理

  • 用户选择科室后,可清空或截断 conversationHistory,避免影响后续新咨询
  • 可设置会话过期时间,定期清理 sessionData

四、配置说明

对话服务复用百炼配置:

  • bailian.api-key
  • bailian.api-url
  • bailian.model(默认 qwen-turbo)

如需单独配置对话模型,可在 ConversationResponseService 中增加 @Value 注入。