2026-06-11 10:15:06 +08:00
|
|
|
|
# 提示词模板目录
|
|
|
|
|
|
|
|
|
|
|
|
本文档说明当前项目中 Markdown 提示词模板的用途、调用位置、输入数据和输出要求。新增或修改提示词时,需要同步更新本文档。
|
|
|
|
|
|
|
|
|
|
|
|
## 1. 提示词加载规则
|
|
|
|
|
|
|
|
|
|
|
|
当前提示词分为两类:
|
|
|
|
|
|
|
|
|
|
|
|
1. 文件模板:存放在 `app/prompts`,由对应 Agent 或服务读取。
|
|
|
|
|
|
2. 代码内系统提示:部分 Agent 会在代码中拼接系统提示,同时结合病例、会话、检查结果和评分规则构造输入。
|
|
|
|
|
|
|
|
|
|
|
|
维护要求:
|
|
|
|
|
|
|
|
|
|
|
|
- 医疗问诊训练类提示词不得替代真实临床诊疗。
|
|
|
|
|
|
- AI 病人不得主动泄露病例隐藏信息。
|
|
|
|
|
|
- 检查检验结果只能来自数据库。
|
|
|
|
|
|
- 评分提示词必须要求结构化 JSON,不能返回纯长文本。
|
|
|
|
|
|
- 学习助手命中知识库时必须引用来源;未命中时必须说明未检索到机构知识库参考。
|
|
|
|
|
|
|
|
|
|
|
|
## 2. 模板清单
|
|
|
|
|
|
|
|
|
|
|
|
| 提示词模板 | 文件路径 | 使用场景 | 调用模块 | 触发接口 | 输入数据 | 输出格式 | 说明 |
|
|
|
|
|
|
|---|---|---|---|---|---|---|---|
|
2026-06-11 16:19:07 +08:00
|
|
|
|
| 练习病例提示 | `app/prompts/hint/practice_case_hint.md` | 生成结构化练习提示 | `app/agents/hint_agent.py::HintAgent.generate` | `POST /api/v1/sessions/{session_id}/hints` | 病例标题、主诉、关键症状、关键检查、当前会话 memory、已申请检查、最后一句用户问题 | JSON | 返回 `hints`、`missing_dimensions`、`next_questions`、`recommended_orders`;LLM 失败时使用兜底提示 |
|
2026-06-11 10:15:06 +08:00
|
|
|
|
| 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_score`、`dimension_scores`、`score_details`、`errors`、`improvement_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 不重新评分,只补齐报告字段 |
|
2026-06-11 16:19:07 +08:00
|
|
|
|
| 学习助手命中知识库 | `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` | 用户问题、学习助手短期上下文 | 流式纯文本 | 开头必须说明“未检索到本机构知识库参考” |
|
2026-06-11 10:15:06 +08:00
|
|
|
|
|
|
|
|
|
|
## 3. 训练问诊提示词调用链
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
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. 王主任练习提示调用链
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
POST /api/v1/sessions/{session_id}/hints/stream
|
|
|
|
|
|
-> app/api/sessions.py::stream_hints
|
|
|
|
|
|
-> app/services/session_service.py::stream_hints
|
|
|
|
|
|
-> HintAgent 或业务兜底逻辑
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
结构化提示接口:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
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
|
2026-06-11 16:19:07 +08:00
|
|
|
|
-> app/prompts/hint/practice_case_hint.md
|
2026-06-11 10:15:06 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
输出字段:
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"hints": [],
|
|
|
|
|
|
"missing_dimensions": [],
|
|
|
|
|
|
"next_questions": [],
|
|
|
|
|
|
"recommended_orders": []
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
LLM 输出非法 JSON 或调用失败时,`HintAgent._fallback_output` 会根据病例关键点和已申请检查生成稳定提示。
|
|
|
|
|
|
|
|
|
|
|
|
## 5. 训练评价提示词调用链
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
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_type`、`total_score`、`dimension_scores`、`score_details`、`errors`、`improvement_plan`、`evidence_summary`、`guideline_refs`、`overall_comment`。
|
|
|
|
|
|
|
|
|
|
|
|
异常处理:
|
|
|
|
|
|
|
|
|
|
|
|
- LLM 异常、JSON 解析失败、字段缺失时,`ScoringAgent._fallback_score` 返回稳定结构。
|
|
|
|
|
|
- `ReportAgent` 只整理字段,不重新评分。
|
|
|
|
|
|
|
|
|
|
|
|
## 6. 教学互动评价提示词调用链
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
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_record` 和 `training_score_detail`。
|
|
|
|
|
|
|
|
|
|
|
|
## 7. AI 学习助手提示词调用链
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
2026-06-11 16:19:07 +08:00
|
|
|
|
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
|
2026-06-11 10:15:06 +08:00
|
|
|
|
-> app/agents/learning_assistant_agent.py::LearningAssistantAgent.stream_answer
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
命中知识库时:
|
|
|
|
|
|
|
2026-06-11 16:19:07 +08:00
|
|
|
|
- 输入用户问题、学习助手短期上下文和检索到的知识片段。
|
2026-06-11 10:15:06 +08:00
|
|
|
|
- 每个来源包含 PDF 名称、页码、chunk_uid、引用文本。
|
|
|
|
|
|
- 回答必须标注来源编号,例如 `【来源1】`。
|
|
|
|
|
|
|
|
|
|
|
|
未命中知识库时:
|
|
|
|
|
|
|
|
|
|
|
|
- 开头必须说明未检索到机构知识库参考。
|
|
|
|
|
|
- 不得伪造 PDF、页码或指南名称。
|
|
|
|
|
|
- 回答仅作为医学学习参考。
|
|
|
|
|
|
|
|
|
|
|
|
## 8. 后续维护规则
|
|
|
|
|
|
|
|
|
|
|
|
新增提示词时必须同时确认:
|
|
|
|
|
|
|
|
|
|
|
|
- 是否有明确调用接口。
|
|
|
|
|
|
- 是否有明确 Agent。
|
|
|
|
|
|
- 输入字段是否来自可信数据源。
|
|
|
|
|
|
- 输出格式是否可被前端或服务稳定解析。
|
|
|
|
|
|
- 是否有 fallback。
|
|
|
|
|
|
- 是否需要同步 `prompt_templates` 元数据。
|
|
|
|
|
|
- 是否需要新增 API 测试或 Agent 单元测试。
|