基础模型通常能说出正确的医疗指南、研究框架或行业术语,真正困难的是把框架正确地应用到具体问题中。模型可能引用了对的文件,却选错适用人群、遗漏排除条件,或者把需要人工判断的灰区包装成确定结论。
针对这个落差,相关项目开放了 38 个面向医疗与生命科学(HCLS)的 Agent Skills,覆盖 11 个领域,并通过三个完整用例展示技能如何参与推理。在包含 410 个提示词的评估中,这套方法取得了 70%~86% 的胜率。这个结果的价值不只是“回答更好”,而是说明:把专业决策过程显式封装为技能,可能比继续堆叠一条超长系统提示更可靠。
问题不在“知道指南”,而在“正确套用指南”
一个模型可以复述某项标准,却仍然在执行时犯错。医疗和生命科学场景尤其容易出现以下偏差:
- 没有先判断指南适用于哪类人群、研究阶段或业务环境;
- 只匹配到一两个关键词,就跳过前置条件和排除条件;
- 混淆推荐强度、证据等级与强制要求;
- 在信息缺失时自行补全患者、试验或产品事实;
- 给出结论,却没有展示条件映射和证据出处;
- 遇到多个框架冲突时,没有暂停或升级给专业人员。
Agent Skill 的作用,可以理解为给模型增加一份“可执行的专业作业指导书”。它不只是提供知识,还要规定何时调用、按什么顺序检查、必须输出哪些中间结果,以及什么情况下应拒绝形成最终判断。
一个实用的技能通常应包含这些元素:
- 触发条件:哪些任务、关键词或上下文需要调用该技能;
- 适用范围:目标人群、地区、版本、研究阶段或监管环境;
- 决策步骤:先检查什么,再比较什么,何时停止;
- 证据要求:结论必须对应到哪条输入事实和哪项规则;
- 护栏:信息不足、规则冲突或高风险时如何升级;
- 输出结构:把事实、判断、缺失信息和引用分开。
这种拆分能减少模型“读到一个熟悉术语就立即作答”的冲动,也让审计人员更容易复核推理链条。
38 个技能的意义:把专业流程变成可组合资产
38 个技能横跨 11 个 HCLS 领域,说明技能库并不是单一医疗问答提示词,而更接近一组可安装、可选择、可组合的工作单元。项目还提供了安装步骤和三个实际用例,便于团队观察技能如何接入 Agent 工作流。
在工程上,可以把每个技能视为一个带版本的依赖:
- Agent 根据任务选择技能,而不是把所有规则一次性塞进上下文;
- 技能负责约束处理步骤,模型负责理解文本和生成结构化结果;
- 指南更新时,只替换对应技能,不必重写整个 Agent;
- 同一技能可以被问答、文档审核、研究辅助等多个流程复用;
- 评估可以精确到单个技能,定位是路由错误、规则遗漏,还是模型执行失败。
安装真实项目时,应以其仓库中的版本要求和安装说明为准。不要因为技能是开源的,就默认它已经符合组织所在地区的法规、临床规范或数据治理要求。
可以这样实践:构造一个最小技能路由器
下面是一个可直接运行的最小示例。它不包含真实临床规则,也不会给出医疗建议;它只演示如何选择技能,并把“适用性检查—条件映射—风险升级”写进发送给模型的提示词。
将代码保存为 demo.py:
from __future__ import annotations
import sys
SKILLS = [
{
'name': 'framework-application',
'keywords': ['指南', '标准', 'guideline', 'framework', 'eligible'],
'steps': [
'识别任务使用的框架、版本、地区和日期',
'确认目标人群或对象是否落在框架适用范围内',
'逐项映射输入事实、纳入条件和排除条件',
'明确列出缺失、冲突或未经证实的信息',
'只有在证据充分时才形成结论,否则升级人工复核',
],
},
{
'name': 'evidence-review',
'keywords': ['证据', '研究', '论文', 'evidence', 'study', 'trial'],
'steps': [
'把研究设计、研究对象、干预和结局分开提取',
'区分原文事实、合理推断和模型假设',
'检查证据是否能支持当前问题中的目标人群',
'记录不确定性、偏倚风险和待人工确认事项',
],
},
]
def select_skill(task: str) -> dict:
lowered = task.lower()
ranked = sorted(
SKILLS,
key=lambda skill: sum(
keyword.lower() in lowered for keyword in skill['keywords']
),
reverse=True,
)
return ranked[0]
def build_prompt(task: str, skill: dict) -> str:
steps = '\n'.join(
f'{index}. {step}' for index, step in enumerate(skill['steps'], 1)
)
return f'''你是一个受约束的 HCLS 分析助手。
任务:
{task}
已选择技能:{skill['name']}
必须按以下步骤执行:
{steps}
输出格式:
- 适用范围判断
- 已知事实
- 条件映射
- 缺失或冲突信息
- 暂定结论
- 人工复核事项
安全要求:
不要补造患者、研究或指南事实。未提供指南原文或版本时,不得声称已经完成权威判定。输出仅用于辅助分析,不替代专业人员审核。'''
if __name__ == '__main__':
task = ' '.join(sys.argv[1:]).strip()
if not task:
raise SystemExit('用法:python demo.py 任务描述')
selected = select_skill(task)
print(build_prompt(task, selected))
运行:
python demo.py '根据给定指南判断这个研究对象是否满足纳入条件,并列出缺失信息'
程序会生成一份受技能约束的提示词。接入真实 Agent 时,可以把输出发送给组织批准使用的模型,并进一步替换以下部分:
- 把示例中的关键词路由改为分类器或显式工具调用;
- 把内存字典替换为实际开源技能文件;
- 为技能增加版本、来源、适用地区和更新时间;
- 要求模型输出 JSON,方便校验字段是否齐全;
- 在形成高风险结论前加入人工审批节点。
生产环境还应避免把受保护健康信息直接写入日志或第三方模型请求。必要时先做去标识化,并按照组织的数据处理协议配置存储、审计和保留策略。
如何看待 70%~86% 的胜率
410 个提示词提供了比少量演示更扎实的比较基础,而 70%~86% 的胜率表明技能增强方案在评估中经常优于对照方案。但“胜率”不应直接等同于临床准确率、安全率或监管合规率。
在决定采用前,需要进一步确认:
- 对照方案是什么,是否使用了相同模型和上下文;
- 胜负由人工专家、自动评分器还是两者共同判定;
- 410 个提示词是否覆盖组织自己的任务分布;
- 各领域的表现是否均衡,还是由少数高分任务拉高平均值;
- 错误属于措辞问题,还是可能影响患者、试验或监管决策的严重错误。
最稳妥的做法,是把公开评估视为候选方案筛选,而不是上线许可。团队应建立自己的盲测集,至少覆盖正常案例、边界案例、信息缺失、规则冲突、过期指南和提示注入等情况。
上线前的检查清单
Agent Skills 值得采用的核心原因,是它们把隐含在专家经验中的流程变成了可版本化、可测试的工程资产。不过,在 HCLS 场景中,技能不能替代权威资料和专业责任。
上线前建议逐项确认:
- [ ] 每个技能都标明来源、版本、地区和适用范围;
- [ ] Agent 能解释为何选择某个技能;
- [ ] 输出区分原始事实、推断和未知信息;
- [ ] 引用可以定位到具体规则,而不只是指南名称;
- [ ] 信息不足时系统会停止,而不是猜测;
- [ ] 高风险结论必须经过合格人员复核;
- [ ] 使用本地任务集进行了回归测试;
- [ ] 技能和基础模型升级后会重新评估;
- [ ] 日志、隐私、审计和数据保留策略符合组织要求。
对于医疗与生命科学 Agent,真正重要的不是让模型听起来更专业,而是让它以可检查的方式遵循专业流程。开源技能提供了一个有价值的起点;能否安全落地,仍取决于版本治理、领域评估和明确的人类责任边界。