Files
fastapi/docs/09_prompt_template_catalog.md
T
2026-06-11 16:19:50 +08:00

8.4 KiB
Raw Blame History

提示词模板目录

本文档说明当前项目中 Markdown 提示词模板的用途、调用位置、输入数据和输出要求。新增或修改提示词时,需要同步更新本文档。

1. 提示词加载规则

当前提示词分为两类:

  1. 文件模板:存放在 app/prompts,由对应 Agent 或服务读取。
  2. 代码内系统提示:部分 Agent 会在代码中拼接系统提示,同时结合病例、会话、检查结果和评分规则构造输入。

维护要求:

  • 医疗问诊训练类提示词不得替代真实临床诊疗。
  • AI 病人不得主动泄露病例隐藏信息。
  • 检查检验结果只能来自数据库。
  • 评分提示词必须要求结构化 JSON,不能返回纯长文本。
  • 学习助手命中知识库时必须引用来源;未命中时必须说明未检索到机构知识库参考。

2. 模板清单

提示词模板 文件路径 使用场景 调用模块 触发接口 输入数据 输出格式 说明
练习病例提示 app/prompts/hint/practice_case_hint.md 生成结构化练习提示 app/agents/hint_agent.py::HintAgent.generate POST /api/v1/sessions/{session_id}/hints 病例标题、主诉、关键症状、关键检查、当前会话 memory、已申请检查、最后一句用户问题 JSON 返回 hintsmissing_dimensionsnext_questionsrecommended_ordersLLM 失败时使用兜底提示
AI 病人通用模板 app/prompts/patient/free_chat.md AI 病人通用问诊风格参考 当前 PatientAgent 主要在代码内拼接系统提示 POST /api/v1/sessions/{session_id}/chat/stream 病例、隐藏信息、初始化配置、短期 memory、医生问题 纯文本 文件作为模板资产保留;实际回复规则见 PatientAgent._build_messages
百分制评分 app/prompts/scoring/default_percentage.md 训练评价百分制评分模板 当前 ScoringAgent 在代码内拼接评分系统提示,文件作为模板资产 POST /api/v1/sessions/{session_id}/evaluation 病例、问诊 memory、检查、诊断治疗、评分规则、指南引用 JSON 输出 total_scoredimension_scoresscore_detailserrorsimprovement_plan
五分制评分 app/prompts/scoring/default_five_point.md 训练评价五分制评分模板 当前 ScoringAgent 支持五分制转换,文件作为模板资产 POST /api/v1/sessions/{session_id}/evaluation 同百分制 JSON score_type=five_point 时将百分制结构转换为五分制
儿科肺炎评分 app/prompts/scoring/pediatrics_pneumonia.md 儿科支气管肺炎病例评分参考 当前评分依赖 scoring_rule 和病例数据,文件作为病例专科提示资产 POST /api/v1/sessions/{session_id}/evaluation 儿科病例、检查、诊断、治疗、评分规则 JSON 用于病例专科评分要求维护
教学互动评分 app/prompts/scoring/teaching_interaction_evaluation.md 教学互动答题评价 app/agents/scoring_agent.py::ScoringAgent.score_teaching POST /api/v1/teaching/evaluation 病例、教学题、标准答案、解析、学生作答、评分规则 JSON 评价答题正确率、错误原因、学习建议和教学维度表现
报告整理 app/prompts/report/evaluation_report.md 评价报告整理模板资产 app/agents/report_agent.py::ReportAgent.build_report 使用代码内校验整理 评价生成、PDF 下载 Scoring Agent 输出 JSON Report Agent 不重新评分,只补齐报告字段
学习助手命中知识库 app/prompts/learning_assistant/rag_answer.md RAG 命中时的回答模板资产 当前 LearningAssistantAgent._messages 在代码内拼接同等规则 POST /api/v1/learning-assistant/sessions/{assistant_session_id}/chat/stream 用户问题、学习助手短期上下文、知识库片段、PDF 名称、页码、chunk_uid 流式纯文本 回答中必须引用来源编号,不得编造 PDF 和页码
学习助手未命中知识库 app/prompts/learning_assistant/no_reference_answer.md 未命中知识库时的回答模板资产 当前 LearningAssistantAgent._messages 在代码内拼接同等规则 POST /api/v1/learning-assistant/sessions/{assistant_session_id}/chat/stream 用户问题、学习助手短期上下文 流式纯文本 开头必须说明“未检索到本机构知识库参考”

3. 训练问诊提示词调用链

POST /api/v1/sessions/{session_id}/chat/stream
  -> app/api/sessions.py::chat_stream
  -> app/services/session_service.py::stream_chat
  -> app/agents/patient_agent.py::PatientAgent.stream_reply
  -> PatientAgent._build_messages
  -> LLM stream_chat

输入包括:

  • case_base.chief_complaint
  • case_base.ai_patient_profile
  • case_base.hidden_patient_info
  • patient_config
  • Redis 短期 memory
  • 医学生当前问题

输出要求:

  • 纯文本
  • 1 到 3 句话
  • 患者或家属口吻
  • 不输出 JSON / Markdown / 思考过程
  • 不主动泄露隐藏信息
  • 不编造检查结果

4. 王主任练习提示调用链

POST /api/v1/sessions/{session_id}/hints/stream
  -> app/api/sessions.py::stream_hints
  -> app/services/session_service.py::stream_hints
  -> HintAgent 或业务兜底逻辑

结构化提示接口:

POST /api/v1/sessions/{session_id}/hints
  -> app/api/sessions.py::generate_hints
  -> app/services/session_service.py::generate_hints
  -> app/agents/hint_agent.py::HintAgent.generate
  -> app/prompts/hint/practice_case_hint.md

输出字段:

{
  "hints": [],
  "missing_dimensions": [],
  "next_questions": [],
  "recommended_orders": []
}

LLM 输出非法 JSON 或调用失败时,HintAgent._fallback_output 会根据病例关键点和已申请检查生成稳定提示。

5. 训练评价提示词调用链

POST /api/v1/sessions/{session_id}/evaluation
  -> app/api/sessions.py::create_evaluation
  -> app/services/evaluation_service.py::create_evaluation
  -> app/agents/scoring_agent.py::ScoringAgent.score
  -> app/agents/report_agent.py::ReportAgent.build_report

输入包括病例、Redis 问诊 memory、training_order 检查结果、training_submission 诊断治疗提交、scoring_rule 评分规则和预留指南引用。

输出必须包含 score_typetotal_scoredimension_scoresscore_detailserrorsimprovement_planevidence_summaryguideline_refsoverall_comment

异常处理:

  • LLM 异常、JSON 解析失败、字段缺失时,ScoringAgent._fallback_score 返回稳定结构。
  • ReportAgent 只整理字段,不重新评分。

6. 教学互动评价提示词调用链

POST /api/v1/teaching/evaluation
  -> app/api/teaching.py::create_teaching_evaluation
  -> app/services/teaching_service.py::create_evaluation
  -> app/agents/scoring_agent.py::ScoringAgent.score_teaching

输入包括病例信息、教学题列表、标准答案、解析文本、学生作答和评分规则。输出复用训练评价结构,写入 training_recordtraining_score_detail

7. AI 学习助手提示词调用链

POST /api/v1/learning-assistant/sessions
  -> app/api/learning_assistant.py::create_learning_assistant_session
  -> app/services/learning_assistant_service.py::create_session
  -> app/services/learning_assistant_session_store.py::LearningAssistantSessionStore.create

POST /api/v1/learning-assistant/sessions/{assistant_session_id}/chat/stream
  -> app/api/learning_assistant.py::stream_learning_assistant_session_chat
  -> app/services/learning_assistant_service.py::stream_session_chat
  -> app/agents/learning_assistant_agent.py::LearningAssistantAgent.stream_answer

命中知识库时:

  • 输入用户问题、学习助手短期上下文和检索到的知识片段。
  • 每个来源包含 PDF 名称、页码、chunk_uid、引用文本。
  • 回答必须标注来源编号,例如 【来源1】

未命中知识库时:

  • 开头必须说明未检索到机构知识库参考。
  • 不得伪造 PDF、页码或指南名称。
  • 回答仅作为医学学习参考。

8. 后续维护规则

新增提示词时必须同时确认:

  • 是否有明确调用接口。
  • 是否有明确 Agent。
  • 输入字段是否来自可信数据源。
  • 输出格式是否可被前端或服务稳定解析。
  • 是否有 fallback。
  • 是否需要同步 prompt_templates 元数据。
  • 是否需要新增 API 测试或 Agent 单元测试。