药物警戒与不良事件智能体

9 分钟读完

Y33
实战手册 · 领域实战手册

药物警戒与不良事件接收智能体。

在药物安全领域,把一个智能体对准某条通道,这不是一次监控决定,而是一次法律决定:上报时钟从公司首次知悉一份个例起算,而一套会读邮箱的系统,等于让公司知悉了邮箱里的一切。先把通道范围定下来,再去建模型;按召回率与弃答来调,而不是按精确率;并且,永远不要让智能体成为"判定某件事不需上报"的那一方。

STEP 1

读一条通道,是一个自带截止期的动作。

上市后安全性报告跑在一口从"首次知悉"起算的时钟上。按美国的规则,一份既严重又非预期的不良经历报告,必须自申请人初次收到该信息起不迟于 15 个日历日提交;而所谓"收到",指的是任何代表公司行事的人收到——不是安全部门收到,也不是最终做分诊的那个人收到。欧盟的形态是同一个思路加上第二档:严重个例 15 天,非严重个例 90 天。

现在把一个智能体放到社媒通道、呼叫中心的转写流、患者支持邮箱,或者经销商的工单队列上。那条通道里的一切,如今都可以被认为已为公司所知。你造出来的不只是一台检测器;你还扩大了"第 0 天"可被触发的面,而且是以机器规模、在一批原本没人有义务去读的材料上完成的。

所以,第一份产出物不是提示词,而是一份写下来的通道范围说明,由背负上报义务的那一方批准,写明智能体读哪些来源、不读哪些、以及为什么。这份文件正是检查员会索要的东西,也正是那道防线——它能拦住一次出于好意的集成,在某个周五悄悄把你的个例量翻上一倍。

会让团队意外的推论是:新增一条通道属于一次法规变更,不是一个功能开关。把一个新连接器当成一个新研究中心来对待——经过评审、留下文档、标明日期。第三方工具漂移正是那种失败:厂商悄悄扩大了某个连接器返回的内容,而你的范围文件不声不响地不再成立。

STEP 2

工作单元是一份有效个例,而有效性就是四个槽位。

一份个例安全性报告在四个要素齐备时才变得可上报:一位可识别的报告者、一位可识别的患者、一个可疑药品、一项不良反应。缺一个,你手上就不是个例,而是一条需要跟进的线索。这套结构是这个领域最有用的一点,因为它把一个模糊的分类问题,变成了一个模式已知的填槽问题。

围着槽位来建,而不是围着"是/否"的结论来建。对每一条进来的材料,它应当给出四个要素、每个要素附一段证据片段;在文本支撑不出取值的地方给出显式的 missing 或 unclear 状态;而真正值回票价的那一项是——指出那条能把个例补齐的具体跟进问题。"报告者可识别、患者可识别、药品写明为某品牌、反应描述为持续咳嗽;起始日期缺失——去问咳嗽是何时开始的",这是一条个例处理人员几秒钟就能着手的工单。

智能体绝不能做的事是压缩。报告者的原文是一份受监管的产物,必须完整无损地进入个例记录,与模型从中派生出的一切并列存放。结构化输出是对原文的补充,绝不是替代;这与结构化输出通行的纪律相同,只是丢掉原文的罚则要重得多。

STEP 3

按召回率来调,并把弃答做成一等答案。

这里的两类错误不可同日而语。一次假阳性的代价,是个例处理人员的几分钟。一次假阴性则是一份未上报的个例:那是一条合规发现、一条潜在的检查观察项,而在这一切之上游——是对某个本可能改写说明书的信号,少了一份贡献。按 F1 去调阈值,等于在一个没人同意过的兑换比上,拿第二种去换第一种。

由此带来三条落地后果:

  • 报告分层的召回率。单一的汇总值恰恰会藏住你最需要看见的那些个例。按通道、按语种、按产品拆开,再按"反应是用日常语言还是临床语言描述的"拆一次——日常语言的召回率通常最弱,而消费者报告恰恰都住在那里。
  • 把"我拿不准"做成一条被路由的结果,而不是一个低分。智能体解不了的材料,应当带着理由落进人工队列,而这条路由的发生率,是一个你要对外公布的数字。不确定性与标定是让你能给它定价的那一块。
  • 永远不让智能体结案。智能体可以把一条材料上抬给人;只有具备资质的人,才可以判定某条材料不构成有效个例。这种不对称——机器只能上报、人才能驳回——就是整个安全属性所在,而且它无需在未来每一次模型升级时重新谈判。

要预料到那场关于量的对话。一台召回优先的接收智能体,会推高表观个例量,而总会有人把它读成"这系统太吵"。值得提前、书面地说清:这个增量正是目的——你此前根本没在读那些通道。

STEP 4

编码是一个受控词表问题,而模型正是在这里悄悄撒谎。

反应要编码到一部受控词典——实务上是 MedDRA——而汇入信号检测的,正是那个编码后的术语。这一步是语言模型看起来最有用、也最危险的地方:一个说得通的术语并不等于一个有效的术语,而一个无效术语不会报错,它只是落进了错误的桶里,从它本该加入的那次分析中消失。

两条规则能守住这一步。第一,模型永远不自己吐出术语;它从当前生效的词典版本中检索候选,给出一份带排序的候选短名单,并为每一条附上支撑它的原文片段。把生成约束在词表之内,而不是去相信输出——机制见受约束解码,反面则是一个被幻觉出来的编码,而它在下游每一个人读来都完全正确。

第二,把词典版本当成你系统版本的一部分。词表是按计划修订的;上一个版本还通行的术语,这一版可能已被降级,而跨越这次变更画出来的对比,不是对比。把它钉住、盖进记录,并在它变动时重设评估基线——与上线与版本管理是同一套元组纪律。

最先该建的评估,是一套编码一致性集:几百条原文,配上经裁定的术语,按 top-1 与 top-5 与你自家编码员的一致率来打分。top-5 告诉你这份短名单有没有用;top-1 告诉你会不会有人信任到不看就接受。

STEP 5

严重性与预期性决定时钟——所以别把它们交到模型手里。

有两项判定驱动着截止期。严重性是按标准来的:死亡、危及生命、住院或住院延长、持续或显著的失能、先天异常,或具有医学重要性的事件。预期性则是与该产品的参考安全性信息作比较。二者合起来,决定一条材料是一份 15 天个例还是一份常规个例。

严重性对智能体而言确实可解,因为它是一张对着文本走的清单,而标准本身稳定。把它做成逐条标准、带证据的显式抽取,而不是一个单一标签。预期性则不同:它要求读到正确产品、正确版本的当前参考文件,而这是一项属于具资质人员的判断。智能体在这里的正确输出,是一份备好的比对——反应术语、参考文本中的相关章节、以及差异在哪——而不是一个结论。

把时钟本身放进系统里,而不是放在一张表格里。第 0 天是一个时间戳:材料进入某条在范围内的通道的那一刻。在接收时就记录它,让它贯穿下游每一个状态,并按"年龄"而不是按"队列深度"告警。一个之所以短、是因为里面每一条都已经十一天大的队列,正是这套系统存在的意义所要预防的失败,而它在一个只数条目的仪表盘上看起来非常健康——挑选真正会触发的那个信号,见生产反馈信号。

STEP 6

按受监管系统来验证它,因为它就是。

这套系统参与的是一个受监管的流程,这意味着别人问它的问题,并不是通常问一个智能体的那些。以下四条约束都是设计决定:早做便宜,晚做昂贵。

  • 可复现是强制的。给定同样的输入与同样的配置,输出必须在十八个月后有人来问时还能被重建。钉住模型版本,把提示词与记录一同存下,保留检索到的参考片段,并把一次换模当成对一套已验证系统的变更来处理——要做影响评估与再确认,而不是一次静默升级。模型下线与迁移是这件事里你控制不了、因而必须提前规划的那一半。
  • 审计轨迹是逐决策的,不是逐运行的。每一个要素由谁或由什么提出、有什么证据支撑、谁接受或推翻了它、在什么时候。形态见审计轨迹与溯源。
  • 问责有一个具名的承担者。在欧盟,具资质人员对整套药物警戒体系负个人责任;智能体是他们体系里的一个组件,而他们需要能够讲清楚它做了什么。在首次发布之前,就用他们的语言,替他们把这份说明写出来。
  • 让离开公司的东西尽量少。个例叙述是带着报告者的可识别健康数据。在任何越出你边界的调用之前先去标识化,把重标识映射留在边界之内,并核查路径上每一个端点的留存条款——那一步在零数据留存与滥用监控里定夺,而它是逐端点决定的,不是逐账户。

先上最窄的那个有用版本:一条已经在范围内的通道、一个产品族、只做接收。输出四项有效性要素并附证据片段、显式的缺失状态、一条建议的跟进问题,以及一张严重性清单——不给结论、不做编码决定、不做结案。在量别的任何东西之前,先对着一套经裁定的集合量分层召回率,把弃答率并排公布,并从第一周起就把"第 0 天年龄"埋上点。在这个领域栽跟头的团队,往往是从一台回答"可上报:是/否"的分类器起步的——因为那恰恰是唯一没人审计得了的输出,也恰恰是智能体不被允许做的那个决定。相关:医疗健康智能体看周边护栏,医疗编码与理赔智能体看它们共享的受控词表模式,内容审核智能体看队列机制。