版权与内容来源声明本文为原创整理。文中涉及官方文档、开源仓库、论文与公开报道的内容均在附表 A 中标注来源引用官方原文保持原样不作改写。文中命令、版本号与界面截图以本文成文时的实测/核验结果为准标注「待验证」的部分请以你本地环境实际输出为判断依据。本文不推荐任何不合规的软件获取方式也不对任何收益结果作承诺。转载请注明出处。第 1 章 读反的不是语义是方向1.1 药师读一段相互作用读的是「下一步做什么」医院药学岗的人看【药物相互作用】那一节眼睛扫的不是名词是动词。一段话读完脑子里落下来的是一句处置这个组合能不能开、开了要不要改量、改完要不要加监测。处方审核台上一句「存在相互作用」没有用——几乎每一对药都「存在相互作用」真正要判断的是方向和强度是根本不许碰还是可以碰但要减量还是照原样用、只是多看一眼。所以药师读说明书读的是一份指令在什么条件下该做什么动作以及这个动作有多紧迫。1.2 模型读同一段读的是「两个词同时出现」大模型做抽取时默认任务形态是「关系抽取」找出实体对判断它们之间有没有关系。这个范式落到说明书上就出事——它把「避免合用」「慎用」「需调整剂量」「无需调整」当成同一类信号都表示这两个药有关系。压平之后下游怎么处理都会错当禁忌看能合用的被判成不能开当提示看真正该避开的被降成一句提醒。后者更隐蔽因为界面上看起来「已经提示过了」。说明书原文措辞已淡化改写药师读出的处置动作模型容易输出的关系与某类抗凝药合用可增加出血风险避免合用不合用已在用的需重新评估方案存在相互作用与某类降糖药合用需减少剂量并加强血糖监测可合用先减量再加监测存在相互作用与某类抗凝药合用无需调整剂量可合用按原方案执行存在相互作用三行原文处置动作完全不同输出却一模一样。这就是「读反」的成因不是模型不认识字是任务定义把方向这一维丢了。1.3 本文的边界本文只谈信息处理与结构化怎么把方向、单位、证据强度拆成机器能用的字段怎么判断一条抽取结果够不够格进规则库。不谈具体药物不给用药建议不下临床结论。文中药名一律写成「某类降糖药」「某类抗凝药」占位符用「示例药甲」「示例药乙」。涉及患者处置的地方一律以说明书原文与处方审核流程为准由药师/医师判断。这条边界不是免责话术是技术要求。规则库的价值在于可回溯到原文一旦掺进非原文的推断回溯链就断了。第 2 章 说明书的相互作用段落本来就是指令型文本2.1 规章管到「怎么写」不只是「写什么」把说明书当普通文本处理是很多项目第一步就走偏的地方。它其实是受格式约束的行政文本。原国家食品药品监督管理局以局令第 24 号公布的《药品说明书和标签管理规定》2006-03-15 发布、2006-06-01 施行国家药监局官网仍挂有原文核验日期 2026-10-26。第九条明确说明书应包含药品安全性、有效性的重要科学数据、结论和信息具体格式、内容和书写要求由国家局制定并发布。技术含义是章节结构、项目名称、书写口径有统一规范不是企业自由发挥。所以这一节稳定可定位不必猜它在第几段。第十条还有一句常被忽略说明书的专业词汇应采用国家统一颁布或规范的表述度量衡单位应当符合国家标准的规定。这是后文单位折算的落脚点——单位写法被规范过不规范的写法本身就是异常信号。2.2 美国处方信息里这一节要求写「怎么防、怎么处理」美国联邦法规 21 CFR 201.57 的 ©(8) 项标题直接就是「7 Drug interactions」。核到的原文要求这一节必须描述与其他处方药、非处方药、药物类别或食物之间临床显著的相互作用已观察到的或预测的并给出预防或处理这些相互作用的具体可操作指示原文为 specific practical instructions for preventing or managing them机制若已知须简要说明已在「禁忌」或「警告与注意事项」中描述过的须在本节展开得更详细。在完整处方信息的章节顺序里它编为第 7 节不良反应之后、特殊人群用药之前核验日期 2026-10-26这给了抽取一个稳定的解析锚点。「具体可操作指示」就是「指令型文本」的官方表达这一节要回答「碰到了怎么办」不是「这两个东西有关系」。2.3 一个由旧条文引出的教训这里有个坑它直接决定「证据强度」这个字段能不能用。我凭印象记得这一节有一句「仅由动物或体外实验支持的相互作用通常不予纳入」。核原文才发现这句在 2002 年版 21 CFR 201.57 里确实有美国政府出版局存档可查现行版这一节没有体外数据能否纳入另行规定在第 12 章。把旧版那句写进提示词模型会把「仅有体外数据支持的相互作用」判成解析异常——真实存在的段落被当成格式错误。结论引法条和引格式要求必须写清核的是哪一版、哪一天。本文凡出现「现行」都限定在 2026-10-26 这一次核验。第 3 章 四个方向标签与它们的边界3.1 四个标签各自对应一个动作把方向收敛成枚举下游才能写判断。四个标签是校对里比较稳的一档避免不该同时用。动作是「不合用」已在用的要重新评估方案。慎用可以用但条件更严。动作是「先确认条件再决定用不用」。调整剂量可以用但用量要改。动作是「改量」改多少看原文有没有给。无需调整可以用按原方案。动作是「不动」。四个标签不是程度递进是四种动作类型。把它们排成「危险—安全」数轴是第二个常见的错「调整剂量」和「慎用」谁更靠危险一端取决于具体段落。标签原文常见写法不能并到复核时要盯的点避免避免合用、禁止合用、不宜合用、不应同时使用慎用是否同时给了替代方案或洗脱期慎用慎用、谨慎合用、应谨慎避免原文有没有写明「慎用」的前提条件调整剂量调整剂量、减少剂量、降低剂量、减量无需调整原文有没有给调整幅度或调整依据无需调整无需调整、不需调整、不必调整剂量调整剂量是否只是「无需调整」而非「无相互作用」「无需调整剂量」不等于「没有相互作用」——原文可能只说用量不改仍要求监测。读成「安全」是把一句话读成两句。3.2 「慎用」为什么不能并进「避免」这是最常见的合并方向既然「慎用」也是提醒小心统一归到「不建议」好了。不行两者的责任分配不同。「避免」把判断做完了执行者照办即可「慎用」把判断留给执行者要求他去看条件、看患者情况。合并之后一批「本可由药师按条件放行」的组合被拦死临床端感受到的是「系统老拦我」然后开始绕过系统——绕过之后前面所有结构化工作归零。反向合并更糟把「避免」降级成「慎用」等于把做完的判断退回一线。3.3 裁定权为什么不能交出去模型能完成「出现了哪几个方向词」但不该完成「属于哪个标签」。标签的边界靠药学语境不靠字面。原文写「与某类降糖药合用应谨慎避免合用低剂量方案」——「避免」管的是「低剂量方案」这个宾语不是「合用」这个动作。字面规则判冲突人一眼读对。所以规则该这么写多方向命中一律不猜直接进人工队列。这不是给模型打补丁是把「谁有裁定权」写进代码。方向标签归一命中即返回多方向命中不猜importre DIRECTION_RULES[(无需调整,[无需调整,不需调整,不必调整剂量]),(避免,[避免合用,禁止合用,不宜合用,不应同时使用]),(调整剂量,[调整剂量,减少剂量,降低剂量,减量]),(慎用,[慎用,谨慎合用,应谨慎]),]NEG_PREFIX(无需,不需,不必,不须)defnormalize(sentence):hits[]forlabel,keysinDIRECTION_RULES:forkinkeys:forminre.finditer(re.escape(k),sentence):headsentence[max(0,m.start()-2):m.start()]iflabel调整剂量andany(head.endswith(p)forpinNEG_PREFIX):continue# 「无需调整剂量」不算调整剂量hits.append(label)breakhitslist(dict.fromkeys(hits))iflen(hits)1:return{label:None,conflict:hits,note:多方向命中人工裁定}ifnothits:return{label:未标注,conflict:[],note:无方向词人工复核}return{label:hits[0],conflict:[],note:ok}第一版写错两次。第一次把「密切监测」放进「慎用」词表「需减少剂量并密切监测血糖」被判双命中——「密切监测」不是方向是附加动作与方向正交得单独抽字段。第二次没处理否定前缀「无需调整剂量」含子串「调整剂量」又双命中修法是命中时回看前两字。修完跑四条样例前三条各归其位第四条同时出现「谨慎」和「避免」仍判冲突——这次是对的。第 4 章 单位折算模型抄数字的地方4.1 mg/kg·d 和 mg/d 不是同一种数第二个坑更隐蔽它不产生「矛盾」只产生「看起来对的错数」。剂量常写成几种形态按体重的每千克每天多少毫克、按体表面积的每平方米每天多少毫克、每日总量的每天多少毫克或多少克。模型抽数字时会把「100」和「2000」都抽出来塞进同一个字段。于是跨段落、跨药品的比较全部失真按体重 100 与每日总量 2000量纲不是一回事中间差一个「体重」变量。没有体重不可比给了体重还得确认原文说的是实际体重、理想体重还是调整体重。抽取结果里出现不规范的写法千分位空格、全角数字、混用的分隔符首先是质量信号不是可以「自动容错」的小问题——第十条已经把单位写法规范过了。4.2 三类给药基准各自缺什么字段把「能不能比」拆开只依赖两件事给药基准是什么质量单位是什么。原文写法给药基准缺字段会怎样可比的前提每千克每天若干 mg体重无法折算成每日总量也不能与总量直接比需要体重且需说明用哪种体重每平方米每天若干 mg体表面积同上体表面积还要由身高体重推算需要身高体重与推算公式每天若干 mg / 若干 g每日总量只差单位前缀可折算需要统一的单位前缀每次若干 mg每日若干次单次量 × 频次漏掉频次总量算不出来需要频次字段第四行最容易漏。原文写「每次若干 mg每日三次」模型常只抽到「若干 mg」把单次量当日总量。这类错不报错只安静地错。所以判据是一条带剂量的相互作用记录必须能回答「这个数是按什么基准给的」。答不出来就不许进规则库。4.3 把「能不能比」写成函数这件事不需要模型一个纯函数就够只做量纲检查不做剂量推荐。单位折算可比较性判定只判量纲不做剂量推荐importre UNIT_DIM{# 单位写法 - (质量单位, 给药基准)mg/kg·d:(mg,kg),mg/kg/d:(mg,kg),mg/m2·d:(mg,m2),mg/d:(mg,None),g/d:(g,None),}PREFIX{mg:1.0,g:1000.0}BASE_CN{kg:体重,m2:体表面积,None:每日总量}NUMr[\d-][\d-\s,]*\.?[\d-]*DOSE_REre.compile(r^\s*(NUMr)\s*(mg/kg·d|mg/kg/d|mg/m2·d|mg/d|g/d)\s*$)defto_half(s):return.join(chr(ord(c)-0xFEE0)ifcelsecforcins)defparse(text):mDOSE_RE.match(to_half(text).replace(,,).replace(,))ifnotm:returnNonereturnfloat(re.sub(r\s,,m.group(1))),m.group(2)defcan_compare(a,b):pa,pbparse(a),parse(b)ifpaisNoneorpbisNone:sideaifpaisNoneelsebreturnFalse,f「{side}」数字或单位写法无法解析人工确认(va,ua),(vb,ub)pa,pb base_a,base_bUNIT_DIM[ua][1],UNIT_DIM[ub][1]ifbase_a!base_b:returnFalse,f给药基准不同{BASE_CN[base_a]}vs{BASE_CN[base_b]}缺字段不可直接比较ifPREFIX[UNIT_DIM[ua][0]]!PREFIX[UNIT_DIM[ub][0]]:mg_ava*PREFIX[UNIT_DIM[ua][0]]mg_bvb*PREFIX[UNIT_DIM[ub][0]]returnTrue,f同基准不同前缀折算到 mg 为{mg_a:g}与{mg_b:g}ifua!ub:returnTrue,f同基准同前缀写法不一致{ua}vs{ub}归一后再比returnTrue,同基准同单位可直接比较实跑四组每千克每天 100 与每天 2000 比不可比体重 vs 每日总量每千克每天 100 与 150 比可比每天 2000 mg 与每天 1 g 比可比折算后是 2000 与 1000每平方米每天 80 与每千克每天 100 比不可比体表面积 vs 体重。跑完才补的一个用例「2000 mg/d」若写成「2 000 mg/d」或全角形式第一版直接判「无法解析」。这不是模型的问题是原文数字写法比你想的乱。修法是解析前先归一全角转半角、去千分位、去数字中间空白。教训单位折算失败多数不在折算逻辑而在折算前的清洗没做全。第 5 章 同一段原文三种抽取各丢什么5.1 对照怎么设处理方式保留了什么丢掉了什么在规则库里能不能用整段摘要大意、语气、可读性方向、剂量基准、证据强度、原文句子不能。反查不到原文哪一句只按方向标签抽一个四选一的标签剂量与折算依据、证据强度、原文句子半能用。方向对依据不可回溯方向 单位 证据强度抽四项判据齐备基本不丢代价是字段多、抽不全能用。缺项降级进人工队列5.2 信息损失点在哪一行摘要是压缩成一句人话这句话里的方向词写摘要的人会挑最顺口那个。「避免合用」和「慎用」语感相近被替换的概率很高。第二样是边界。「需减少剂量」很可能变成「需要调整用药」而「调整」向上能和「避免」混向下能和「监测」混。只按方向标签抽丢的是依据。药师拿到一条「避免」规则第一个问题一定是「哪句原文说的」——答不出来就进不了审核。第三样是证据强度。原文常有「基于动物实验」「有个案报道」「尚无人体研究」这类限定语摘要里几乎必然被抹掉因为它们让句子变啰嗦。可它们恰恰决定可信程度。5.3 为什么整段摘要在规则库里最危险危险不在于它错在于它看起来对。一条摘要通顺、专业、像人写的评审很容易放过。但它没有可回查的锚点说它错得先找原文逐句对说它对也没依据。规则库最怕这种条目——占着位置出问题时无法定位。相比之下字段残缺的结果反而安全因为它一眼能看出「不全」会老实进人工队列。医院药学岗整理结构化字段时常用的对照清单本文第 5 章那张三种处理方式的对照表我按同样口径扩成了可打印的一页版含字段名与缺项判定口径。放在资料包里扫码即可获取第 6 章 四项判据与入库闸门6.1 一条结果必须带齐四样东西前面几章的问题收敛成一条可执行的验收标准。判据具体要求缺了会怎样处置原文句子逐字回带不改写、不省略无法回溯评审难判对错人工复核方向标签四个枚举值之一下游不知道执行什么动作人工复核单位与折算依据给药基准 折算说明数字无法比较汇总必错人工复核证据强度说明书原文 / 仅动物实验 / 仅个案报道无法判断可信程度人工复核四项缺一只能进人工复核队列不得进规则库。这句要写进流程文件——模型每条输出看起来都很完整只有闸门会告诉你缺了什么。两个细节先定死。第一「不适用」必须显式写。没有剂量表述的条目这一栏填「不适用原文无剂量表述」不能留空留空进复核写了不适用可直接过这逼模型做判断而不是躲。第二证据强度必须来自原文。原文没写来源就填「原文未注明」不要替它猜「大概是临床研究」。猜出来的证据强度和编造的条文号是一个性质。6.2 缺项是分流不是打分很多团队把四项做成加权评分凑够分就放行。这在别的场景没问题在这里不行。四项不可替代原文缺了方向再准也没法回溯方向缺了原文再全也不知道执行什么。加权会把「三项满分、一项零分」算成高分而那一项恰好致命。所以闸门只输出两个状态可入库、进人工中间不设档位。⚠️代码待验证{source_sentence:与某类抗凝药合用可增加出血风险避免合用。,direction:避免,dose_basis:不适用原文无剂量表述,evidence_level:说明书原文,evidence_quote:避免合用,page_anchor:【药物相互作用】第 3 段,conflict:[],gate:rule_library_ready}source_sentence是逐字回带的原文evidence_quote是支撑方向判断的最短片段page_anchor是段落锚点。三者加起来「这条规则从哪来」才变成一个可以点开看的问题。REQUIRED[source_sentence,direction,dose_basis,evidence_level]ENUM{避免,慎用,调整剂量,无需调整}defgate(rec):missing[kforkinREQUIREDifnotstr(rec.get(k,)).strip()]ifmissing:return{status:manual_review,missing:missing}ifrec[direction]notinENUM:return{status:manual_review,missing:[],reason:方向标签不在枚举内}return{status:rule_library_ready,missing:[]}跑四条记录被拦下的方式很不一样方向填「可合用」的字段全齐但枚举里没这个值拦下证据强度空着的拦下剂量依据空着的拦下它本该填「不适用」四项齐全的放行。中间两条是同一个道理空字符串不是「没有」是「没判断」。闸门拦的从来不是数据缺失是判断缺失。6.3 顺序不能反四项有天然顺序回带原文 → 定方向 → 核单位 → 标证据强度。反了会怎样先输出方向模型就顺着方向找「支持这个方向的句子」回带的原文很可能只是片段。「先有结论后找证据」是抽取里最难查的错因为输出看起来完全自洽。第 7 章 人机分工与落地顺序7.1 模型做三件事第一候选定位。从整节文本里找出描述相互作用的段落切到句子级。行文变体多这一步模型比正则稳。第二原文回带。逐字带回出现同义替换、语序调整、省略号就整条作废。检验很土但有效拿回带的句子去原文做子串匹配匹配不上作废。第三缺项追问。抽完自查四项缺哪项带着上下文再找找不到就标「未找到」不许补全。第三件事最容易被省也最不该省。补全能力在这里是负资产它把「原文没写」补成「原文大概这个意思」一补回溯链就断。7.2 药师做两件事第一标签裁定。人工队列里的每一条药师只做一个动作从四个枚举里选一个或判「无法归类」并退回。不做摘要不做改写。第二入库确认。确认方向、剂量基准、证据强度与原文一致以及这条规则该不该进当前规则集。一条几十秒。必须由药师做不是因为模型不够聪明而是标签的边界是药学判断不是语言判断。3.3 那个例子里字面双方向命中、语义只有一个方向这种判断写不成规则表只能由人定再把结论回写成新规则。这套流程真正的产出不是标签是一份持续生长的裁定记录。7.3 落地顺序与两个坑三步不要跳。第一步只做「候选定位 原文回带」输出不带标签人工先看回带准不准。验收标准随机抽二十条回带句能逐字匹配上原文。第二步加方向标签只作为「建议」显示不参与下游逻辑用来积累裁定记录。第三步加单位与证据强度同时上闸门。到这一步才开始有规则库。两个坑提前说。坑一别把说明书当纯净文本。PDF 里横排表格、脚注、页眉页脚会和正文混在一起切句容易把单元格切成半句。回带校验能拦住大部分但切分阶段就该单独处理表格区域。坑二别用一份说明书的规则套另一份。不同企业、不同年代同一含义的措辞差别很大。按措辞写规则注定要一直补按「方向 依据」写才稳。最后回到开头。临床药师转大模型优势不是「懂药」这个标签是你知道一句话里哪几个字不能动。模型能把整段压成摘要但它不知道哪一句被压掉之后这条记录就不能用了。这个判断现在还得人来做。本文用到的四字段抽取契约与闸门脚本第 6 章那两份代码JSON 契约 闸门函数我放在资料包里了字段名和注释都保留着改成你手上的说明书格式就能跑。放在资料包里扫码即可获取附表 A本文引用事实与出处对照表事实出处文档名 发布方 链接本文位置《药品说明书和标签管理规定》以局令第 24 号公布2006-03-15 发布、2006-06-01 施行第三十一条规定施行同时废止 2000-10-15 的暂行规定《药品说明书和标签管理规定局令第24号》国家药品监督管理局官网https://www.nmpa.gov.cn/yaopin/ypfgwj/ypfgbmgzh/20060315010101975.html 核验日期 2026-10-262.1第九条说明书应包含药品安全性、有效性的重要科学数据、结论和信息用以指导安全、合理使用药品具体格式、内容和书写要求由国家局制定并发布同上2.1第十条说明书表述应采用国家统一颁布或规范的专用词汇度量衡单位应当符合国家标准的规定同上2.1、4.121 CFR 201.57©(8)「7 Drug interactions」要求描述临床显著的相互作用已观察到或预测的并给出预防或处理的具体可操作指示机制若已知须简述已在禁忌或警告项下描述的须在本节展开21 CFR 201.57eCFR 现行版https://www.ecfr.gov/current/title-21/chapter-I/subchapter-C/part-201/subpart-B/section-201.57 核验日期 2026-10-262.2完整处方信息章节顺序中 Drug Interactions 编为第 7 节不良反应之后、特殊人群用药之前同上各节标题自带编号2.22002 年版 21 CFR 201.57 含「仅由动物或体外实验支持的相互作用通常不予纳入」现行版该节无此句体外数据相关要求见第 12 章位置旧版美国政府出版局存档 CFR-2002 title 21 part 201 PDFhttps://www.gpo.gov/fdsys/pkg/CFR-2002-title21-vol4/pdf/CFR-2002-title21-vol4-part201.pdf 现行版同上一条。仅说明版本差异不得作为现行规则引用2.3中国说明书【药物相互作用】项下「列出与该药物产生相互作用的药物或药物类别并说明相互作用的结果及合并用药的注意事项」的写法未取得一手原文仅见行业网站转载的说明书细则讨论帖非官方发布。本文只作结构化方法说明不据此下结论2.1待验证方向标签归一、单位折算可比较性、入库闸门三段代码及其输出本机实测脚本work/2026-10-26-02_判据代码验证.pyv1 与 v2 两版结果均已记录并复跑3.3、4.3、6.2附表 B术语速查表术语一句话解释在本文哪里用到方向标签把四种处置收敛成的枚举值每个对应一种动作第 3 章、6.1压平把方向、强度不同的措辞归并成同一类信号1.2、3.2给药基准剂量是「按体重」「按体表面积」「每日总量」还是「单次量 × 频次」4.1、4.2证据强度原文标注的来源层级说明书原文 / 仅动物实验 / 仅个案报道 / 未注明5.2、6.1原文回带把候选句逐字带回、不做改写是回溯链的锚点5.3、7.1规则库供处方审核流程调用的结构化条目每条都必须能回到原文第 5、6 章人工复核队列四项判据缺项或方向冲突时交由药师裁定的待处理列表3.3、6.2写在最后这篇用到的资料写这篇文章时把相关的官方文档和源码又翻了一遍顺手也整理了几份配套的东西大模型学习路线图从零基础到能自己动手做 Agent按阶段说明每一步该学什么、哪些可以先跳过《LangChain LangGraph MCP 智能体开发实战》视频课7 个模块从私有化部署、EmbeddingRAG 到 MCPAgent 全流程AI 大模型知识库在线可查Agent Skills 从入门到落地、Claude Skills 完全指南等专题按目录浏览即可640 套 AI 大模型行业报告 经典 PDF 书籍看行业落地案例和别人怎么做的时候用得上大模型零基础到精通教学视频跟着敲一遍比只读文档快得多资料是我自己整理的放在下面这个码上扫码即可获取添加时备注「AI」优先通过。资料按「先路线、再动手、最后查漏」的顺序整理好了建议先看学习路线那一份照着它挑一条适合自己当前基础的路径再往下看。