FDE W4D3 学习手册 · 特药理赔 Agent 主流程
W4 Week1 Day3 · A 级(必须掌握,面试核心)· 5h · 学完能完整画出特药理赔 Agent 主流程图、讲清各节点职责,并说清"编排 vs 复用、为什么不要重写工具"
本日定位: Day1 讲了 Agent Loop 的本质,Day2 讲了 LangGraph 的图编排能力。Day3 是把两者落到真实业务 :用一张 LangGraph 图编排"特药理赔 Agent"的完整主流程(10 个节点)。重点是编排(orchestration) ——把 W2 的 OCR/DB/Rule 工具、W3 的保险知识库、W4D2 的 LangGraph 串起来,而不是重写它们。
学完能回答: ① 完整画出主流程图、说清每个节点职责;② 说清哪些是"编排"、哪些是"复用已有工具"、为什么不要重写;③ 结合 LangGraph 说明图如何落地这条主流程(含人工审批中断)。
使用方法: 通读流程 → 重点看 s9(编排 vs 复用)和「面试话术」「易错点」→ 对照 s10 的图代码 → 做自测清单 → 配合《FDE-W4D3-评测题.md》。选中不熟的词可标注(左下★重要 / 右下📌待查)。
一、业务背景与 Agent 定位
1.1 什么是特药理赔
"特药"指治疗恶性肿瘤等高费用疾病、需特殊审批的药品(如奥希替尼、CAR-T)。特药理赔是患者/代理人提交材料(诊断证明、处方、发票、保单)后,保险公司审核是否赔付、赔付多少的过程。金额大、规则严、合规要求高。
1.2 为什么用 Agent 而不是纯规则系统
材料格式不固定(图片/PDF/拍照),需要 OCR + 语义抽取,规则系统难覆盖。
判断是否赔付要结合"保单条款 + 药品目录 + 临床指南",需要检索与推理。
高风险案件要人工介入,需要可中断、可恢复的流程。
但注意:Agent 不是替代你原有的 OCR 服务、理赔 DB、规则引擎——它是编排层 ,把这些已有能力当工具挂载,负责"按什么顺序调、什么时候等人、怎么汇总结论"。这正是企业落地的关键思维:复用 > 重写。
特药理赔=高费用药品赔付审核,材料杂、规则严、需人工。Agent 在这里是"编排层",把已有 OCR/DB/规则引擎/知识库当工具串起来,而非重写它们。
二、主流程全景(10 个节点)
①上传材料 → ②OCR → ③字段抽取 → ④材料完整性检查 → ⑤保单&知识库检索 → ⑥规则引擎校验 → ⑦风险等级判断 → ⑧人工审批(HITL) → ⑨结论生成 → ⑩结果回写
# 节点 职责 类型
① 上传材料 接收材料文件(图片/PDF),生成 file_id 入口/IO
② OCR 识别图片/PDF 为文本与字段 复用 W2 工具
③ 字段抽取 从 OCR 文本抽取结构化字段(患者/药品/金额) LLM + 复用
④ 材料完整性检查 核对必备材料是否齐全 逻辑节点
⑤ 保单&知识库检索 查保单、特药目录、临床指南(RAG) 复用 W3 知识库
⑥ 规则引擎校验 用规则判断是否符赔付条件 复用 W2 规则工具
⑦ 风险等级判断 综合得出 low/medium/high LLM 决策
⑧ 人工审批 高风险 interrupt 等人拍板 HITL(interrupt)
⑨ 结论生成 生成赔付结论与理由 LLM
⑩ 结果回写 写回理赔系统/通知用户 复用 DB 工具
主流程 10 节点:上传→OCR→抽取→完整性→检索→规则校验→风险判断→人工审批→结论→回写。其中②⑥⑩是复用 W2 工具,⑤是复用 W3 知识库,⑧是 W4D2 的 HITL。模型只在③⑦⑨做抽取/判断/生成。
三、节点①~④:材料接入与解析
3.1 上传(①)与 OCR(②)
①接收文件并返回 file_id(存对象存储)。②调用 W2 已实现的 ocr_scan 工具识别,得到原始文本/字段。这是复用,不是重写 ——你的 Java OCR 微服务直接包成 @tool。
3.2 字段抽取(③)
用 LLM + 结构化输出(Day2 学的 JSON Schema)从 OCR 结果抽取 patient / drug_name / amount / diagnosis 等。低 Temperature + Pydantic 校验。
3.3 材料完整性检查(④)
纯逻辑节点:核对必备材料(诊断证明、处方、发票、保单)是否齐全,输出 missing 列表与 need_human 标记。不齐则条件边路由回"请补传"或直接转人工。
def check_completeness(state):
required = ["diagnosis", "prescription", "invoice", "policy"]
missing = [f for f in required if not state.get(f)]
return {"missing": missing, "need_human": bool(missing)}
①②③④ 是"把非结构化材料变成结构化、可信的输入"。OCR 与抽取务必复用 W2 成果,别在 Agent 里另写一套识别逻辑——那样既重复劳动又口径不一致(两套 OCR 结果对不上会出合规问题)。
节点①~④负责"材料→结构化可信输入":上传拿 file_id,OCR 复用 W2 工具,抽取用 LLM+JSON,完整性检查是纯逻辑。OCR/抽取都复用已有能力。
四、节点⑤:保单与知识库检索(RAG)
4.1 检索什么
保单 :按 policy_no 查承保范围、免赔额、赔付比例(复用 W2 的 query_policy)。
特药目录 / 临床指南 :用 W3 学到的 RAG 检索知识库,确认该药是否在目录、是否满足用药指征。
4.2 为什么是"检索"而非"让模型硬答"
条款和目录会更新,且必须可引用、可追溯——模型凭记忆答会幻觉。检索把"真实依据"喂给后续规则引擎与风险判断,是降低幻觉、满足合规的关键。
节点⑤是"给后面提供事实依据"。它=W2 的 DB 查询工具 + W3 的 RAG 知识库,二者都是复用。检索结果要带上来源引用(chunk_id/条款号),下游规则引擎和结论生成都能溯源——这是医保合规审计的硬要求。
节点⑤检索保单(W2 DB 工具)和特药知识库(W3 RAG),给后面提供事实依据。必须带引用,可溯源、防幻觉、过合规。
① 检索结果不要原样全塞进 State(长文档占存储、烧 token),应存"摘要 + 引用 id",详情按需再查。② 检索可能"查不到"(断保/目录无该药),这要作为明确信号传给规则引擎,而不是让模型猜。③ RAG 和 DB 查询是两套不同工具,别混为一谈(一个查非结构化知识,一个查结构化业务数据)。
五、节点⑥:规则引擎校验
5.1 做什么
把"抽取字段 + 检索到的保单/目录"喂给 W2 已有的规则引擎 ,判断是否满足赔付条件:药品在目录内?用量符合指南?金额在额度内?免赔后比例正确?
5.2 为什么用规则引擎而非纯 LLM
赔付金额、比例这些必须精确、可解释、可复算 ,不能靠模型"感觉"。规则引擎是确定性计算,结果稳定、可审计。模型只负责"前面的抽取和后面的判断",中间的硬计算交给规则引擎。
节点⑥是"确定性计算核心",必须复用 W2 规则工具,绝不能让 LLM 算钱。工程上"能确定性算的绝不交给模型"——模型用于模糊的抽取/判断,规则引擎用于精确的金额/比例/条件判定。这样结论可复算、可申诉。
节点⑥用 W2 规则引擎做精确赔付判定(在目录?用量合规?金额比例对?)。算钱等硬计算绝不用 LLM,要复用规则引擎,保证可复算可审计。
① 别让 LLM 直接算赔付金额——它会"算错还自信",引发客诉与合规风险。② 规则引擎的输入要来自"抽取+检索"的结构化结果,若上游字段缺失要先在④拦截,别让规则引擎在脏数据上跑。③ 规则引擎输出要带"命中哪条规则/不命中原因",供结论生成引用。
六、节点⑦:风险等级判断
6.1 输入与输出
综合"抽取信息 + 检索依据 + 规则结果"由 LLM 给出 risk_level ∈ {low, medium, high}。这是模型发挥"综合判断"的地方(Agent 部分)。
6.2 判定维度(示例)
等级 典型情形 后续
low 材料齐、在目录、金额小、规则全过 自动过,直达结论
medium 小额疑点/需复核说明 自动过但标记,或轻量复核
high 大额/材料异常/规则边界/疑似欺诈 转人工审批(interrupt)
节点⑦是"模型决策点",对应 Day2 的 Conditional Edge 依据。低风险自动过(效率),高风险转人工(合规)。判级标准要可配置、可解释,审核员能看懂为什么判 high。
节点⑦由 LLM 综合给出风险等级 low/medium/high,是模型决策点。低风险自动过、高风险转人工审批,标准要可解释可配置。
七、节点⑧:人工审批(HITL)
7.1 实现
risk_level == high 时,条件边路由到 human_approve 节点,内部 interrupt() 暂停(W4D2 学的)。审核员在后台系统看到案件(含依据引用)后点"批准/驳回/补材料",前端用 Command(resume=决策) 同 thread_id 唤醒图继续。
7.2 要点
可审计 :Checkpointer 留痕谁、何时、批了什么。
超时升级 :长时间未批自动升级上级或转工单。
降级 :审核员不在线可挂起不丢状态,或转应急通道。
节点⑧是"人在回路"落点,也是特药理赔合规的核心——真金白银的赔付不能全让模型定。它把 W4D2 的 Interrupt/Checkpointer 用在了业务最该用的地方。注意:interrupt 暂停的是"整条案件流程",状态由 Checkpointer 保管,恢复后从断点继续,不重跑前面。
节点⑧用 W4D2 的 interrupt 实现人工审批:高风险案件暂停等人,审核员决策后 Command(resume) 同 thread_id 唤醒。全程可审计、可超时升级。
八、节点⑨~⑩:结论生成与结果回写
8.1 结论生成(⑨)
LLM 汇总"抽取字段 + 检索依据 + 规则结果 + 审批结论"生成最终赔付结论与理由(结构化 + 自然语言),必须带引用(哪条规则、哪条指南支撑)。
8.2 结果回写(⑩)
复用 W2 的 DB 写工具:把结论、金额、依据写回理赔系统,并触发通知(短信/App)。这是复用,不是新写 ——你的 Java 理赔落库服务包成 @tool。
节点⑨⑩是"收口"。结论必须可解释(带依据引用)以满足申诉与监管;回写必须复用已有落库服务,保证和老系统同一套数据口径、事务一致。Agent 在这里只是"调用方",不该自己造一套存储。
节点⑨生成带依据的结论,节点⑩复用 W2 DB 工具回写理赔系统并通知。回写复用老服务,保证数据口径一致、事务可靠。
① 回写工具必须幂等(Day1 考点):图可能重放,重复回写不能重复打款/重复通知。② 结论与回写要放在同一事务或至少有"已回写"状态标记,避免"结论生成了但回写失败"导致用户没收到。③ 通知(短信)放工具里也要幂等+去重。
九、编排 vs 复用:为什么不要重写工具
编排(Orchestration) :决定"调哪些工具、什么顺序、何时等人、怎么汇总"——这是 Agent / LangGraph 图的责任,是新写的薄编排层。
复用(Reuse) :OCR、DB 查询、规则引擎、知识库检索这些已经是你 W2/W3 调好的成熟能力 ,直接包成 @tool 挂进图,不重写。
为什么不要重写?
一致性 :两套 OCR/规则口径不一,结论是"两套系统对不上",合规灾难。
成本 :重写一套识别/规则要数月,且要重新测试、重新过审。
可靠性 :老服务已跑通、有监控熔断,新写一套 bug 多。
责任边界 :模型负责模糊的抽取/判断,确定性计算留给成熟工具,各司其职、易定位问题。
可演进 :工具升级(如 OCR 模型换了)不影响编排层,只需换工具实现。
编排=决定调什么工具/顺序/何时等人(Agent 新写的薄层);复用=把 W2/W3 已有的 OCR/DB/规则/知识库包成 @tool 挂进来。不重写因为:口径一致、省成本、更可靠、责任清晰、易演进。
① "复用"不是"完全不碰旧工具"——可能需要给旧服务加一个适配层(如把 Java 接口包成 @tool、补一个返回结构化 JSON 的网关),这是"适配"不是"重写"。② 别走向另一极端:把本该模型做的"综合判断"硬塞进规则引擎,失去 Agent 灵活性。编排的艺术是"确定性给工具、模糊性给模型"。③ 复用前先确认工具的幂等性与可观测性,不满足要先补(而非重写)。
十、实战:用 LangGraph 编排这条主流程
builder = StateGraph(ClaimState)
# 复用 W2 工具 / W3 知识库 包成的 @tool
builder.add_node("upload", upload_node)
builder.add_node("ocr", ToolNode([ocr_scan])) # 复用 W2
builder.add_node("extract", extract_node) # LLM 抽取
builder.add_node("completeness", check_completeness) # 纯逻辑
builder.add_node("retrieve", ToolNode([query_policy, rag_search])) # 复用 W2+W3
builder.add_node("rule_check", ToolNode([rule_engine]))# 复用 W2 规则
builder.add_node("risk_judge", risk_judge_node) # LLM 决策
builder.add_node("human_approve", human_approve) # W4D2 interrupt
builder.add_node("conclude", conclude_node) # LLM 结论
builder.add_node("writeback", ToolNode([save_claim])) # 复用 W2 DB
builder.add_edge(START, "upload")
builder.add_edge("upload", "ocr")
builder.add_edge("ocr", "extract")
builder.add_edge("extract", "completeness")
builder.add_conditional_edges("completeness",
lambda s: "retrieve" if not s["need_human"] else "human_approve",
{"retrieve":"retrieve", "human_approve":"human_approve"})
builder.add_edge("retrieve", "rule_check")
builder.add_edge("rule_check", "risk_judge")
builder.add_conditional_edges("risk_judge",
lambda s: "human_approve" if s["risk_level"]=="high" else "conclude",
{"human_approve":"human_approve", "conclude":"conclude"})
builder.add_edge("human_approve", "conclude")
builder.add_edge("conclude", "writeback")
builder.add_edge("writeback", END)
graph = builder.compile(checkpointer=PostgresSaver(...)) # 持久化+可中断
关键观察: 图中只有 extract / risk_judge / conclude 是 LLM 节点(模糊智能),其余要么是复用工具(ocr/retrieve/rule_check/writeback)、要么是纯逻辑/IO(upload/completeness/human_approve)。这就是"编排为主、智能点缀"的企业 Agent 形态。
十一、特药理赔主流程高频易错点
① 在 Agent 里重写 OCR/规则 :应复用 W2 工具,重写导致口径不一致。② 让 LLM 算赔付金额 :必须用规则引擎确定性计算。③ 检索结果全量塞 State :占存储烧 token,应存摘要+引用。④ 回写/通知不幂等 :图重放会重复打款/发短信。⑤ 漏 Checkpointer :人工审批无法断点恢复。⑥ 风险等级无标准/不可解释 :审核员看不懂为何 high,合规不通过。⑦ 结论无引用 :无法申诉、无法审计。⑧ 材料缺失未前置拦截 :脏数据流入规则引擎。⑨ 把人工审批当普通工具 :应用 interrupt 暂停而非同步等返回值。⑩ thread_id 用错/混用 :案件状态串号。
十二、学习资源(中文 / 非 OpenAI)
本日是把前两天能力"组装"成业务系统。视频看图的编排套路,官方教程查 Checkpointer/Interrupt 精确用法,GitHub examples 找"多节点+人工审批"的参考实现。
十三、面试达标线①:画出主流程图与各节点职责
上传 → OCR → 抽取 → 完整性 → 检索(保单+知识库) → 规则校验 → 风险判断 → 人工审批(HITL) → 结论 → 回写
节点 一句话职责 复用/新写
上传 收文件得 file_id IO
OCR 识别图片/PDF 复用 W2
抽取 抽结构化字段 LLM
完整性 核对必备材料 逻辑
检索 查保单+知识库(RAG) 复用 W2+W3
规则校验 判定赔付条件 复用 W2 规则
风险判断 给 low/medium/high LLM
人工审批 高风险等人拍板 interrupt(HITL)
结论 生成结论+理由(带引用) LLM
回写 落库+通知 复用 W2 DB
达标线①核心:能徒手画出这 10 节点流程图,并说清每节点"干什么、是复用还是新写(LLM/逻辑)"。重点强调 OCR/检索/规则/回写是复用,抽取/风险/结论是 LLM。
十四、面试达标线②:编排 vs 复用,为什么不要重写
编排(Agent 新写的薄层:顺序/分支/何时等人/汇总) + 复用(W2/W3 已有工具包成 @tool) = 企业 Agent,而非重写一切
问题 满分回答要点
哪些是编排? 图的节点顺序、条件边分支、interrupt 时机、结论汇总——Agent 新写的薄控制层。
哪些是复用? OCR、保单/DB 查询、规则引擎、知识库 RAG、结果回写——W2/W3 已有成熟能力,包成 @tool 直接挂。
为什么不要重写? 口径一致(避免两套对不上)、省成本、更可靠(老服务有监控熔断)、责任清晰(模糊给模型/确定给工具)、易演进(换工具实现不影响编排)。
一句话工程哲学:"能复用绝重写,编排薄如纸" 。Agent 的价值在于把成熟能力智能地串起来,而不是重新发明 OCR、重新写规则。重写既浪费又引入不一致与合规风险。
达标线②核心:能区分"编排"(新写的薄控制层:顺序/分支/等人/汇总)与"复用"(W2/W3 已有工具),并能讲清不重写的五大理由(一致/成本/可靠/责任清晰/易演进)。
十五、W4D3 自测清单
能说清特药理赔的业务特点(高金额、规则严、需人工、需合规)。
能徒手画出 10 节点主流程图(上传→OCR→抽取→完整性→检索→规则→风险→人工→结论→回写)。
能说清每个节点的职责与"复用/LLM/逻辑"属性。
能说明 OCR(②)、检索(⑤)、规则(⑥)、回写(⑩) 是复用 W2/W3 工具。
能说明抽取(③)、风险(⑦)、结论(⑨) 是 LLM 节点。
能讲清为什么用规则引擎而非 LLM 算赔付(精确/可复算/可审计)。
能讲清检索必须带引用(防幻觉、可溯源、合规)。
能讲清人工审批节点用 interrupt + Checkpointer 实现 HITL(W4D2 衔接)。
能说清"编排 vs 复用"的定义与不重写工具的五大理由。
能讲清回写/通知工具必须幂等(图重放不重复打款/发短信)。
能对照 s10 的图代码,指出哪些是复用节点、哪些是 LLM 节点、条件边依据是什么。
能列出本流程的高频易错点(重写 OCR、LLM 算钱、检索全量塞 State 等)。
十六、高频面试题速记卡
Q:特药理赔 Agent 主流程有哪些节点?
上传→OCR→抽取→完整性→检索(保单+知识库)→规则校验→风险判断→人工审批(HITL)→结论→回写,共10节点。
Q:哪些是复用、哪些是 LLM 节点?
复用:OCR/检索/规则/回写(W2/W3 工具);LLM:抽取/风险判断/结论;逻辑/IO:上传/完整性/人工审批。
Q:为什么赔付金额不用 LLM 算?
金额必须精确、可复算、可审计,LLM 会算错还自信。硬计算交给规则引擎,模型只做模糊抽取/判断。
Q:编排和复用有什么区别?
编排=Agent 新写的薄控制层(顺序/分支/何时等人/汇总);复用=把 W2/W3 已有 OCR/DB/规则/知识库包成 @tool 挂进图。
Q:为什么不要重写工具?
五点:口径一致、省成本、更可靠(老服务有监控熔断)、责任清晰、易演进。重写会引入不一致与合规风险。
Q:检索结果怎么处理才稳妥?
存"摘要+引用id"进 State,别全量塞(占存储烧 token);详情按需再查。必须带引用满足合规溯源。
Q:人工审批在图里怎么实现?
风险 high 时条件边路由到 human_approve 节点,interrupt() 暂停,审核员 Command(resume) 同 thread_id 唤醒(W4D2)。
Q:回写/通知为什么要幂等?
图可能重放节点,非幂等会重复打款/发短信。回写工具要幂等+去重,且结论与回写要保证最终一致。
Q:风险等级怎么定、有何用?
LLM 综合抽取+检索+规则结果给 low/medium/high;低风险自动过、高风险转人工,标准要可解释可配置。
Q:特药理赔 Agent 是纯 Agent 吗?
是 Agentic Workflow:确定性主流程(图骨架)+模型决策节点(抽取/风险/结论)与人工审批,兼顾可控与灵活、满足合规。
FDE W4D3 学习手册 · 特药理赔 Agent 主流程(面试级)· 配合《FDE-W4D3-评测题.md》自测
📌 待查 ★ 重要
★0
📌0