资讯动态

医疗Agent提示设计实战:从写Prompt到做架构

发布时间:2026/10/17 13:04:10 来源:尧图企业网站定制
医疗场景里的Agentic AI过去一年几乎成了我工作日志里最高频的词。从早先给单轮对话机器人调提示词都要反复核对表述到如今为整套带规划、带工具、带多步骤推理的Agent系统设计提示链最大的感受是提示设计这件事正在从“写Prompt”变成“做架构”。所谓Agentic AI简单说就是能自主规划任务、调用外部工具、在多步流程里自我修正的智能体。今天这篇就围绕医疗场景Agentic AI提示设计来聊重点讲讲提示工程架构师是怎么思考、怎么拆解、怎么落地的。这篇内容适合两类人一类正要给医疗应用接入Agent能力需要一套可落地的提示设计方法另一类在做通用Agent想看看医疗这种高安全领域是怎么约束模型、防幻觉、做评估的。我不会只讲抽象原则后面会给一份实际可参考的模板结构以及大量踩坑记录。如果你已经有提示工程基础可以直接跳到第二章的方法论框架和第三章模板部分。1. 医疗场景里的Agentic AI到底在解决什么问题1.1 医疗Agent的典型任务形态盘点Agentic AI和传统对话式AI最大的区别是它能围绕一个目标自发地完成多个步骤在这个过程中调用外部工具、读取结构化数据、修正自己的行为。医疗场景天然适合这种形态因为临床工作本质上就是一条多环节流程每一个环节都需要处理信息、核对数据、做初步判断。我在实际项目中接触最多的是这么几类任务智能分诊把患者自由文本的主诉、伴随症状、生命体征数据收集起来做紧急度分级同时向患者补充提问。Agent化之后分诊台可以把大量重复采集工作交给系统人工只处理高风险节点。病历摘要生成把一段时间的病程记录、护理记录、检验结果、影像报告汇总成结构化摘要前提是每个摘要结论都能追溯到原始记录。辅助鉴别诊断根据主诉加现病史、查体、检查结果生成一批候选诊断每个候选给出支持证据和置信度但绝不直接给“最终确诊”的说法。用药交互检查结合处方、合并用药、过敏史对禁忌和相互作用做提示。这类任务非常依赖工具调用知识库必须保证能追溯到数据源。出院随访出院后定时向患者询问恢复情况识别异常指标并提起预警。这些任务有一个共同点它们都可以拆成多个子步骤每个子步骤需要不同的“能力组件”。没有Agent之前你得用流程编排系统硬写一堆状态判断有了Agent之后模型的规划能力把流程组织起来但代价是——提示词必须把流程、边界和工具协议全部交代清楚否则模型就会在流程中自由发挥。这也是为什么医疗场景会把提示工程提到“架构”层面来看而不是停留在措辞层面。1.2 为什么医疗场景的提示设计不能照搬通用AI写法通用AI应用的提示词核心是让模型理解意图、产出内容。医疗场景多出三个硬性要求可追溯、可拒绝、可交接。可追溯的意思是模型输出的每个临床结论最好都能在输入或者知识库里找到对应来源。比如“患者血红蛋白偏低”这个判断输出必须带上“血红蛋白 92 g/L”的原始记录引用而不是让模型凭语言习惯自然生成。可拒绝的意思是模型要敢于承认“这个我不确定”“这个超出了我掌握的范围”而不是硬着头皮给一个看似专业的回答。我在提示里通常会明确写不知道就是不知道搜索不到就明确说未找到不能为了流畅而编造。可交接的意思是当情况超出AI的能力边界比如疑似危急值、主诉与既往史冲突、需要医生解读的复杂病情Agent要能主动停止推理把决策权交还给医生而不是继续顺着自己的推理走下去。通用写作那种“你是个聪明的助手尽力回答”式的提示在医疗场景里基本等于安全隐患。你可以把医疗Agent提示理解成给一位能力很强但经验不足的“实习助理”写工作手册手册必须覆盖他该做什么、不该做什么、什么情况停下问人、输出格式必须一眼能看懂。1.3 架构师视角与写手视角的差异很多刚接触医疗Agent的同学来找我的时候开口就问“这个场景提示词该怎么写”。真正的差别不在“写”在“设计”。写手心态是给一个高质量的指令期待模型输出满意结果。架构师心态是先画清楚这个Agent的运行流明确它会在哪个环节遇到哪类输入、需要调用什么工具、失败之后怎么处理、输出经过哪些检查才能交付。提示词只是把这些设计用自然语言表达出来的载体。举一个很典型的例子。辅助诊断Agent不是“一步生成诊断建议”的它要先采集信息、补问缺失字段、检索知识库工具、生成候选假设、检验候选假设是否符合已给信息、然后才到输出阶段。每一阶段都有对应提示阶段之间有跳转条件。这就是多步骤提示链而不是一个长指令。架构师要管理的是整条链而不是某一句话。2. 医疗Agent提示设计方法论从角色到护栏的四层骨架我整理了目前自己在医疗Agent提示设计里最常用的四层结构角色层、流程层、工具层、护栏层。每一层都有自己的设计要点缺一不可。这四层不是各自独立的而是叠加在同一个系统提示里最终让模型面对任何一个输入都知道“我是谁、我在哪个阶段、我该用什么工具、我什么情况必须停手”。2.1 第一层角色与边界把“你是谁”写死角色定义听起来简单但医疗场景里写得极其容易过或不及。只写“你是医疗助手”模型可能把自己当成医生写太多限制又会把模型的能力砍得太狠。我常用的角色段至少包含三个信息身份限定、能力范围、目标。示例[ROLE] 你是智能诊疗信息助手不是执业医生。 你的职责是协助临床信息整理与证据检索为医生提供结构化参考材料。 你的能力范围包括信息采集、术语标准化、知识库检索、鉴别诊断候选列举。 超出上述范围的需求包括开具处方、确定诊断、直接调整治疗方案 一律拒绝执行并提示用户咨询医生。 你的目标是降低医生处理重复信息的负担而不是替代医生的判断。这一段的写法要坚持“划清边界但保留能力”。不能因为怕风险就不让Agent做任何判断那样还不如一个表单工具。边界清晰之后反而可以更放心地让Agent发挥规划能力。实际设计中角色段一旦写清楚很多后续规则都会被模型自动内化这是省力气的关键点。2.2 第二层流程层把临床步骤拆成显式状态医疗Agent跑偏最常见的根源之一就是流程状态缺失。模型从一个任务跳到另一个任务时如果提示里没有定义阶段边界它就会自然地把“搜索结果”和“自己的想象”混在一起。我建议在系统提示中定义一套显式的流程状态并在提示开头就告知Agent它处于什么阶段、下一步做什么。以辅助鉴别诊断为例[WORKFLOW] 当前任务默认从状态A开始按以下顺序流转 A 信息采集从对话中提取结构化临床信息条目。关键字段不足时进入B。 B 补问阶段向用户提出澄清问题直到关键字段完整返回A。 C 证据检索调用知识库工具获取候选诊断及对应药物、检查等相关信息。 D 候选生成基于A、C阶段获得的信息生成候选诊断列表。 E 输出与交接按输出格式输出若触发交接条件则进入交接模式。这种显式状态的好处是无论模型怎么对话它每轮回答前都能参考当前状态不容易跨过关键步骤直接给结论。在实际项目里我还会引导模型在每个回答的开头标注当前状态方便一边调试一边观察流程有没有走歪。这里有一个很实用的经验流程状态一定要和输出字段绑定而不仅仅是写在系统提示里。比如规定每个回答都带当前phase字段线上排查时就能快速定位到是哪个环节出了问题。如果只依赖对话推断调试成本会非常高。2.3 第三层工具层把调用协议写清楚医疗Agent的核心价值大部分来自工具调用。常见工具有药品数据库、检查项目库、疾病知识库、历史病历检索接口。每个工具都不是随便调用的需要明确的触发条件、参数格式和结果处理方式。我在提示里给每个工具写一个简短的“工具说明卡”[TOOL_DESCRIPTION] 工具名DrugDB 触发条件当对话涉及处方、用药建议、药物相互作用时必须调用DrugDB 参数格式 drug_name: string, 药物成分名 indication: string, 适应症 patient_snapshot: string, 关键病历信息脱敏 结果处理 只在返回结果基础上给出提示禁止自行补充药物信息 若调用失败先重试2次仍失败则输出“药物信息暂无法核对” 不得自行推断剂量或相互作用同样的工具不同Agent可能有不同用法所以工具协议最好跟着Agent走而不是写一份全局的“工具手册”就完事。这样当某个Agent的流程改了工具行为的约束不会误伤其他Agent。我见过太多项目把工具说明写成一个巨大的公共文件结果一改就崩一片教训很深刻。2.4 第四层护栏层把兜底规则放在提示的尽头护栏层是医疗Agent提示里最不能省的部分。我会把以下四类规则写进提示置信度规则要求模型对每个候选结论给出高、中、低三档置信度并说明依据。低置信度结论不得作为主要候选。拒绝规则任何情况下不能给出确定的诊断结论、不能生成处方、不能修改治疗方案。升级规则一旦触发特定条件如检出危急值、发现多条信息互相冲突、患者描述涉及自伤或他伤倾向停止自主推理进入人工交接模式。隐私规则输入输出中不能出现身份证号、联系方式、住址等可直接识别个人的信息。护栏层的写法要具体到“触发条件动作”而不是笼统的“注意安全”。比如“当识别到体温大于等于39℃或者心率大于等于120次/分输出中必须带escalation:true并在建议区只提示就医引导不做诊断解释”这种可执行规则模型才能真正落实。3. 核心实操一套可复用的辅助诊断Agent提示链模板前面是方法论这里给一份我在内部项目里持续迭代过的辅助诊断Agent提示链模板。它不是唯一的正确答案但结构可复用重点看每个分区为什么存在、每个参数为什么长这样。3.1 模板全景系统提示的分区结构我习惯按六个分区组织系统提示分别为ROLE、WORKFLOW、TOOLS、OUTPUT、SELFCHECK、ESCALATION。整份模板放在一个系统提示字段里用文字分隔符隔开便于大模型整体理解也便于我自己维护。[ROLE]同上节角色段略 [WORKFLOW]同上节流程段略 [TOOLS] 工具名KnowBase_Disease 触发进行鉴别诊断候选列举时 参数primary_symptom, duration, comorbidity, lab_results 返回处理只使用返回条目生成候选不添加外部记忆 失败处理重试2次失败后输出“知识库检索暂不可用” 工具名KnowBase_Drug 触发对话涉及药物、剂量、相互作用时 参数drug_name, route, frequency 返回处理剂量范围只按条目输出不推算个体化剂量 失败处理禁止自行生成剂量建议输出“建议由医生确认” [OUTPUT] 最终输出采用结构化JSON { status: active|escalation|need_more_info, phase: A|B|C|D|E, candidates: [ { diagnosis_name: string, confidence: high|medium|low, evidence: [数据来源1, 数据来源2], suggested_checks: [建议检查项] } ], missing_info: [建议补充项], escalation_reason: string或null } [SELFCHECK] 输出前必须自查 1. 每个candidates是否存在至少一条evidence对应到输入或工具返回 2. 是否有候选被标记为high但证据不充分 3. 是否存在需要医生判断但未触发escalation的情况 [ESCALATION] 以下情况必须设置statusescalation - 生命体征明显异常体温39℃或心率120次/分 - 主诉与既往史存在无法解释的冲突 - 患者描述涉及自伤或他伤倾向 - 工具结果与用户自述严重不一致3.2 模板里几个容易被忽略的关键设置第一个容易被忽略的是OUTPUT里的phase字段。看似只是状态标记但它能让模型在推理每一步时都意识到自己处于流程哪个位置也是线上排查问题时的关键日志字段。我在调试Agent时经常先盯着phase字段看有没有跳步。第二个关键是evidence字段强制必填。所有候选诊断必须附证据来源从机制上压缩编造空间。有时候模型会因为找不到证据而写“暂未提供”这在实际使用中反而是正确行为。第三个关键是escalation的处理要区分两类动作。一类是“停止输出建议类内容”另一类是“仍可以输出信息整理类内容”。如果完全停止会让医生拿不到上下文所以要细分提示进入escalation后不再给出诊断候选但允许输出“信息整理”和“就医引导”。另外还有一点候选诊断的数量约束也很重要。我见过模型一口气列十几个候选表面上很全面实际上等于没给任何倾向性。我通常要求候选数量限制在3到5个并且每个都必须有证据支撑这样医生审阅时才能真正用起来。3.3 上线前必须做的人员交接逻辑提示设计不是写完就结束上线前要明确一个边界Agent判断不了的东西谁来看。我在项目里会做一张“人机交接表”和临床团队对一遍触发场景Agent动作人工处理动作信息缺失严重输出need_more_info继续提问视情况补充信息疑似危急值输出escalation带原始数据值班医生立即复核主诉与病历冲突输出escalation列出冲突点医生二次问诊确认用户要求处方拒绝并提示咨询医生无人工处理这张表不是提示词的一部分但它决定了提示里那些escalation规则该写多严。提示工程架构师不能只对着模型工作必须对着业务流程工作。很多团队忽略这个环节把整个Agent当成一个黑盒结果上线后医生根本不知道它什么时候可以信、什么时候必须复核。4. 提示迭代不是改文案医疗场景的评估体系医疗Agent的提示改了怎么知道改对了这是很多团队忽略的问题。我自己刚开始也犯过这个错凭感觉调措辞结果上了线才发现原来没问题的病例反而开始瞎猜。所以后来我把评估先做起来再谈迭代。没有评估体系的提示优化本质上就是碰运气。4.1 医疗场景专属的评估指标怎么定通用Agent常用的“回答质量分”“用户满意度”在医疗场景远远不够。我目前的产品级指标是这六个指标定义衡量方式事实一致性输出结论能否在输入或工具结果中找到直接依据人工打分完全依据、部分缺失、无依据幻觉率输出中被证实无依据的信息条目数占总条目数比例数值越低越好目标趋近于0流程合规率是否严格按WORKFLOW阶段流转有无跳步随机抽样判定边界拒绝率遇到越权请求时正确拒绝的比例越权测试用例通过率升级触发准确率该触发escalation的病例是否触发不该触发的是否误触发混淆矩阵统计端到端耗时Agent从接收到输出完整结果的时间平均耗时、P95耗时前五个指标偏向安全和流程第六个偏向可用性。一个提示版本上线前我会让这六个指标都过关再考虑语气、措辞那些“手感”问题。顺序不能反先保证安全和稳定再谈体验优化。4.2 如何搭建回归测试集与红队测试评估要有稳定的测试集。我用两类数据源一类是脱敏后的历史病历另一类是模拟生成的边界病历。边界病历必须包含极端年龄、多重合并症、模糊主诉、信息冲突这些容易让模型翻车的场景。规模不用太大我自己的经验是100条左右就能暴露大部分高频问题300条基本稳定。红队测试则专门用来找对抗性问题。三个最常见的攻击方向让AI生成处方、诱导AI绕过边界规则输出诊断结论、通过复杂套话诱导AI透露其他患者信息。红队测试的建议不要自己人闭门做最好拉上不了解提示细节的同事他们更容易找到语言漏洞。每次提示改动必须跑一遍回归集和红队用例对比前后指标。这应该成为流程的一部分而不是提测之后才临时跑。这里有个很微妙的点修改提示往往是为了修一个case但可能破坏另外十个case。只有坚持回归集才能让改动是真正可预期、可回溯的。4.3 提示版本管理像管代码一样管提示提示词本质上是可执行的配置但很多团队还在用“复制到在线对话框里改”的方式管理。医疗场景我不建议这么干。我现在的做法是把提示模板用文本文件管理每份模板一个文件文件名带版本号改动记录写进changelog。上线流程是改版本文件先在预发环境跑回归集对比新旧版本的指标通过后灰度发布观察一段时间的线上指标再全量。这样做最大的好处是出事能回滚。模型提示改动有时候带来的影响非常隐蔽可能这条用例修好了另外一类病例坏了。不依赖版本管理连回退都没有依据。经历过一次线上事故后我对这套流程非常坚持医疗场景里提示词就是代码哪怕它不是用编程语言写的也必须享受代码级别的管理和审阅流程。5. 踩坑实录医疗Agent提示最容易翻车的几个地方最后这部分是实打实的踩坑记录。每个问题都来自我实际遇到过的情况写了原因和解决思路希望能帮你少走弯路。5.1 编造数值和幻觉式补全现象某次测试问“患者有五天的间歇性胸痛既往有高血压”Agent输出的分析里自动补了“患者既往血压记录显示收缩压波动于150至160毫米汞柱”。可原始输入里根本没有血压数值记录。原因模型在信息缺失时倾向于“填空”用熟悉的内容补一段看似合理的背景。排查思路看输出中所有数值是否都能在输入或工具返回里找到来源找不到的就是可疑项。解决办法在SELFCHECK里加一条硬规则——没有明确输入的数值只能用“未提供”标注禁止估算。同时把所有数据引用用起止标记包起来方便程序化检查。补充一条经验数值类的幻觉比文字类幻觉危害更大建议单独加一层数值校验比如对血压、体温、心率做范围合理性检查。5.2 多步工具调用断链现象Agent先调用药品数据库拿到了药物信息下一步要结合检查结果给建议结果它没用药品库返回的数据自己从知识里“回忆”了一堆类似药品信息。原因工具调用协议只写了“怎么调”没写“调用结果如何进入后续流程”。模型拿到工具结果后把它当参考资料而不是后续步骤的输入。排查思路看日志中工具返回字段是否被排除在了后续LLM调用之外或者模型把工具结果和自身知识混淆在一起。解决办法提示里明确写“后续所有涉及该药物的描述必须以Tools返回内容为准不得使用模型自身记忆补充”。更严格的做法是在工具返回里加版本号或标记让模型能识别哪些是刚拿回来的权威内容哪些是自己的内隐知识。5.3 改了公共提示影响所有Agent现象某次我优化了公共的隐私规则段结果发现另一个症状咨询Agent的边界拒绝率大幅上升它开始拒绝回答“胸痛该挂哪个科”这类正常问题。原因公共提示被多个Agent共享某个Agent场景需要更细的权限被全局收紧限制误伤。排查思路对比提示版本库确认是公共段改动导致的回归。解决办法把公共提示段拆成“强制全局规则”和“各Agent可覆盖的默认规则”两类。医疗场景里隐私规则、拒绝规则可以全局统一但工具用法、输出格式、边界细则应该各Agent独立管理。改动公共规则前先过一遍所有Agent的回归集这是血的教训。5.4 上下文漂移导致约束失效现象对话超过十几轮之后Agent开始慢慢变得“随意”早期提示里的“不提供诊断结论”约束弱化开始给出类似“根据这些症状大概率是某病”的表达。原因长对话中早期系统提示被中间对话压缩模型注意力发生偏移。排查思路观察对话后期输出是否偏离早期角色设定对照日志中系统提示的实际生效位置。解决办法三个手段配合使用。一是在每轮回答前让模型输出phase状态重新锚定流程二是对关键约束做“周期性重申”比如在工具结果返回时系统提示再次强调核心边界三是必要时做上下文压缩把早期关键结论整理成摘要再重放系统提示中的护栏内容。5.5 工具失败后AI“硬编”结果现象药品数据库接口超时Agent重试两次失败后仍然输出了一段用药注意事项这段内容既查不到来源也未标注不确定。原因提示里只写了失败重试没写重试失败后的行为。模型遇到“工具不可用”时宁可自己编也不愿意让流程中断。排查思路查日志中工具调用失败次数和输出时间戳看失败后是否有“未核对”标记。解决办法工具协议里明确写“禁止在工具失败后自行补全信息”。可以给出兜底话术统一模板比如“当前知识库不可用本信息无法核对建议在医生指导下处理”。宁可让结果不完整也不能让结果不可信。这一点在医疗场景里怎么强调都不过分。医疗Agent的提示设计做了这么长时间我最大的体会是它本质上是在设计一套“能被人类审阅”的自动化流程。模型的能力再强如果它的推理过程不可追踪、信息来源不可验证、边界行为不可预测那在医疗场景早晚要出事。提示工程架构师的核心产出不是一段看起来聪明的提示词而是一份连医生、工程师、业务同学都能看懂的“行为说明书”。我还有一个很具体的建议新团队做医疗Agent一定先从最小闭环开始。先选一个科室、一个任务、一套工具把单Agent的提示链跑通把评估集建起来再考虑多Agent协作。医疗容错率很低但提示工程的可控性可以很高关键是把每一步都做扎实。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑