Skip to content

Prompt 契约

Prompt 契约分为 Chat 回复和处方生成两套。Chat prompt 面向连续对话与知识问答,处方 prompt 面向结构化运动方案生成;两者共享非诊断边界,但输入结构、输出要求和 fallback 逻辑不同。

契约边界

项目Chat 回复处方生成
主要文件response_generation.pyprescription_generation.py
入口方法generate_intelligent_response(...)generate_fallback_response(...)generate_prescription_with_fallback(...)
输入核心用户问题、患者画像、RAG 上下文、来源、会话历史用户档案、评估上下文、手术史、疾病史、近期对话
输出形态自然语言回复结构化 JSON 处方
安全边界非诊断、紧急症状就医、知识不足不伪装引用安全第一、循序渐进、输出后必须安全检查
fallback从知识上下文整理建议,或基于一般常识回答默认安全处方;再次失败时返回应急处方

文档只记录构造框架,不展示完整 prompt 文本,不写真实患者样例。

Chat System Prompt

Chat system prompt 由 ResponseGenerationService.build_system_prompt(...) 构造。

组成内容
助手角色动养AI健康助手,陪伴肿瘤康复患者做运动与健康管理。
回复长度问候、感谢、闲聊和轻情绪表达保持 1-2 句;运动、症状、健康咨询再结构化展开;紧急或禁忌情况详细提示风险并建议就医。
表达风格亲切自然,不刻板,不机械复述档案。
医疗边界不进行医疗诊断;紧急症状建议立即就医。
对话连续性自然延续历史,不重复已说过的内容。
患者画像仅在用户有健康相关咨询时参考;闲聊不展开患者信息。

Chat 患者画像

render_patient_profile(...) 只使用已填写信息,生成一段产品化摘要,不调用 LLM。

信息域字段来源
基础信息姓名或昵称、年龄、性别、身高、体重、BMI。
肿瘤信息癌种、亚型、治疗阶段、骨转移记录。
评估上下文主要症状、疼痛分值、跌倒风险、器械、期望频次和时长、运动偏好。
体能信息fitness_level
疾病史diseases 列表。

该摘要的用途是帮助模型个体化回答,不作为诊断结论。

Chat User Message

build_user_message(...) 把当前问题、RAG 证据和来源拼成 user message:

部分规则
用户问题直接写入当前 query。
专业知识knowledge_context 时追加压缩后的 RAG 上下文。
来源列表有 sources 时最多追加前 3 个来源。
会话历史由 LLM client 的 chat_completion(...) 合并,不直接写进 user message。

当没有 RAG 证据时,Chat fallback 会在 system prompt 中加入“知识来源不足时可基于通用健康管理原则回答,但不要假装引用专业知识库”。

Chat Fallback

场景行为
LLM 失败但有知识上下文optimize_knowledge_response(...) 从上下文中抽取最多 3 条要点,追加来源和遵医嘱边界。
RAG 召回为空调用一般常识 fallback,返回内容带“基于一般常识回答”标记。
高风险输入不进入 prompt 生成,直接返回安全建议。

处方 System Prompt

处方 system prompt 由 PrescriptionGenerationService.build_prescription_system_prompt(...) 构造。

组成内容
角色运动康复医师,为肿瘤康复患者制定个性化运动处方。
总原则安全第一、循序渐进、严格按用户健康档案个性化。
用户摘要性别、年龄、BMI、血压、心率、疾病史、手术史、体能水平。
评估摘要症状、疼痛、共病、每周运动天数、步行耐力、跌倒史、偏好、器械、场景、期望频次和时长。
约束注入根据器械、跌倒风险、疼痛分值和期望时长追加约束。
输出要求仅返回 JSON,无额外文字。

处方约束注入

条件Prompt 约束
无器械只用自重动作,禁用任何器械。
有器械只使用已填写器械。
跌倒风险为 yesunsure禁止高重心、单腿、复杂平衡动作,推荐坐姿或扶撑。
疼痛分值大于等于 4全案强度不超过低,禁止对痛处高负荷牵拉。
填写期望时长每次总时长约等于期望时长。

处方 User Message

build_prescription_user_message(...) 当前使用简洁指令:

部分规则
生成目标生成个性化运动康复方案。
项目数量包含 3 个运动项目。
输出格式严格输出 JSON。
专业知识当前处方主链 use_rag_knowledge=false,不追加 RAG 知识上下文。
近期对话如果存在对话历史,取最近 3 条用户/AI 对话摘要。

处方 JSON 形状

处方 prompt 要求模型返回固定结构,后端随后解析并补齐字段:

字段说明
prescription_id处方标识;缺失时后端补齐。
generated_at生成时间;缺失时后端补齐。
exercises运动项目列表,包含名称、时长、强度、组数、次数、休息、注意事项、指导和 MET。
daily_schedulemorning / afternoon / evening 的动作安排。
safety_guidelines安全指导。
contraindications禁忌或暂停条件。

处方后处理

阶段行为
JSON 提取从模型文本中截取首尾 {...};没有 JSON 时进入默认结构。
字段补齐validate_and_complete_prescription(...) 补齐必需字段和默认运动项。
安全检查check_prescription_safety(...) 检查强度、疾病冲突、安全字段缺失和空运动项。
默认处方LLM 失败时按年龄和心脏病史生成低风险默认运动方案。
应急处方默认处方也失败时返回“休息和咨询医生”形状。

来源锚点

  • Chat prompt: apps/backend_service/app/core/rag/response_generation.py
  • Prescription prompt: apps/backend_service/app/core/rag/prescription_generation.py
  • Chat use case: apps/backend_service/app/use_cases/chat/send_message.py
  • Prescription service: apps/backend_service/app/services/prescription_service.py