FDE W4D6 学习手册 · 作品二核心版打磨
W4 Day6 · A 级(必须掌握,面试核心)· 5h · 把"特药理赔 Agent"从能跑变成"可验收、可讲清、可演示"的面试作品
本日定位:作品二是你面试的"硬通货"。今天不写新功能,而是把它打磨成可量化、可复现、可演示的成品:流程图 + 状态归属图 + 30 个测试 Cases + 6 类评测指标 + README + 3 分钟演示。
学完能回答:① 作品二(特药理赔 Agent)的评测指标怎么设计;② 一个 Agent 失败 / 错误恢复的测试例子怎么写。
使用方法:通读 → 重点背「面试话术」「易错点」→ 做自测清单 → 配合《FDE-W4D6-评测题.md》。选中不熟的词可标注(左下★重要 / 右下📌待查)。
候选人视角:36 岁,Java + 大数据 + 医疗保险。作品二要体现你"工程落地 + 数据化思维 + 业务理解"的复合优势,而不是炫技。
一、作品二定位与验收标准
作品二的主题是「特药理赔 Agent」:用户提交特药(抗癌药等)理赔申请,Agent 完成材料抽取、用药合规校验、赔付规则计算,并在高风险节点交人工审批,最终放款并生成通知书。
1.1 为什么它是好作品
- 有真实业务深度:医疗理赔涉及合规、金额、风险,天然需要 HITL、Trace、评测。
- 覆盖 FDE 全栈考点:RAG(知识库)、Agent(编排)、HITL(审批)、Trace(可观测)、评测(指标)。
- 体现你的背景优势:Java 工程能力 + 大数据(Trace 聚合)+ 医疗保险 domain。
1.2 验收清单(面试前必须齐)
| 交付物 | 要求 |
| Agent 流程图 | 端到端、标注每个节点的输入/输出/风险 |
| 状态归属图 | 哪些状态在模型、哪些在 Checkpointer、哪些在外部系统 |
| 30 个测试 Cases | 覆盖正常/边界/应拒答/高风险/失败恢复 |
| 6 类评测指标 | 工具成功率/完成率/审批准确率/漏判/成本/恢复 |
| README | 能让人 10 分钟跑起来 |
| 3 分钟演示 | 可现场讲清价值与指标 |
作品二的目标不是"功能最多",而是"最能体现你工程素养的那一个"。验收标准要可量化:不要说"效果好",要说"任务完成率 92%、高风险漏判率 < 1%、单任务成本 ¥0.3"。量化是区分"做过"和"做透"的关键。
作品二=特药理赔 Agent,覆盖 RAG+Agent+HITL+Trace+评测全栈,正好发挥我 Java+大数据+医疗的背景。验收要可量化:不说"效果好",说"完成率 92%、漏判率<1%、单任务 0.3 元"。
① 别把作品做成"功能堆砌",面试官看的是取舍与量化,不是功能数量。② README 没写=作品不完整,很多人栽在"代码能跑但别人跑不起来"。③ 30 个 Case 不是凑数,要覆盖失败恢复这类"难而显功力"的场景。
二、Agent 流程图(端到端)
流程图要让人一眼看懂"数据怎么流、人在哪介入、失败去哪"。
用户提交申请
│
▼
[材料抽取 LLM] ──► 结构化字段(保单/药品/金额)
│
▼
[RAG 合规校验] ──► 用药是否在医保目录/特药清单 (knowledge_version)
│
▼
[规则引擎] ──► 金额计算 + 黑名单/超额判断
│
├── 低风险 + 高置信 ──► 自动通过
│
└── 高风险 ──► [human.approval 中断] ──► 人通过/驳回/改额
│
▼
[执行放款(幂等键)]
│
▼
[生成通知书 + 答复]
│
▼ (任何一步失败)
[错误恢复 / 降级 / 转人工坐席]
画图要点:① 每个节点标注"输入→输出";② 明确标出 human.approval 中断点;③ 画出失败/降级分支;④ 标注用到的版本与工具名(呼应 Trace 字段)。建议用 draw.io / Mermaid 画,导出 PNG 放进 README。
流程图的价值是"沟通"——让非技术面试官也能看懂你的系统边界。工程上它还是故障排查的地图:出问题照着图逐节点看 Trace,效率远高于盲查。
流程图要标清每节点输入输出、human.approval 中断点、失败降级分支、版本与工具名。它既是给面试官看的"地图",也是自己排错的参照。用 Mermaid/draw.io 画,PNG 进 README。
① 图里别漏"失败分支",只画 happy path 显得考虑不周。② human.approval 的位置画错(画在放款之后)是严重逻辑错误。③ 节点命名要和代码/评测一致,否则图与实现两张皮。
三、状态归属图:谁拥有什么状态
状态归属图说明每个状态存在哪、由谁修改、丢失了怎么办,是可靠性设计的"说明书"。
| 状态 | 归属 | 丢失后果 | 恢复手段 |
| 对话/任务状态 | LangGraph Checkpointer (PostgreSQL) | 可从中断恢复 | thread_id 读快照 |
| 模型生成的中间结论 | 内存/Checkpoint | 重算 | 重跑节点 |
| 外部系统结果(医保/放款) | 外部服务/DB | 需对账 | 查询 + 幂等重放 |
| 人工审批结果 | 审批系统 + Checkpoint | 需人重审 | 审批记录回写 |
| 评测/Trace 数据 | Langfuse / 数仓 | 仅观测丢失 | 不影响主流程 |
状态归属 = 易失(内存) + 持久(Checkpointer/DB) + 外部(第三方) ;关键原则:副作用状态必须持久且幂等
状态归属图体现代码素养:能分清"哪些丢了能重算、哪些丢了要出事"。它直接回答面试官"你的系统挂了会怎样"——挂了但 Checkpointer 在,就能从中断恢复;挂了且外部已放款但状态没记,才是真事故(靠幂等+对账兜底)。
状态归属图讲清"每个状态存哪、谁改、丢了咋办"。对话状态在 Checkpointer(可恢复),外部结果在第三方(需对账+幂等),审批结果在审批系统。它回答"系统挂了会怎样"——Checkpointer 在就能恢复。
① 把"外部系统结果"当成"自己内存里的状态"是常见 bug,会导致重复调用第三方。② 状态归属不清时,恢复逻辑最容易写出竞态。③ 评测/Trace 数据丢失不影响主流程,但不要因此不备份——它是你复盘的唯一证据。
四、30 个 Agent 测试 Cases 设计
测试集要结构化、分类覆盖、带标签,才能既当评测集又当回归集。
| 类别 | 数量 | 示例 | 关注指标 |
| 正常通过 | 8 | 材料齐全、用药合规、金额合规 | 完成率、工具成功率 |
| 应拒答/拒赔 | 5 | 药品不在目录、材料缺失无法判断 | 拒答准确率 |
| 高风险审批 | 5 | 超大额、用药冲突 | 审批触发准确率 |
| 边界值 | 4 | 金额=阈值、知识库临界匹配 | 完成率 |
| 工具/检索失败 | 4 | 医保接口超时、检索 0 命中 | 错误恢复 |
| 失败恢复 | 4 | 中断恢复、幂等防二次放款 | 恢复测试 |
Case 结构建议:{id, 输入, 期望输出/动作, 标签, 难度, 参考Trace}。标签让指标可下钻(如只统计"高风险"类的审批准确率)。难度分 P0/P1/P2,P0 必须 100% 过。
30 个 Case 的设计哲学是"覆盖失败比覆盖成功更重要"。面试官见过太多"只测 happy path"的玩具。你特意列出"工具失败/失败恢复"类,恰恰证明你有生产系统思维——这是 Java/大数据背景的自然体现。
30 个 Case 分六类:正常8/拒答5/高风险审批5/边界4/工具失败4/失败恢复4。每个带 id、输入、期望、标签、难度。重点是"失败恢复"类——覆盖 happy path 谁都会,覆盖中断恢复和幂等才显功力。
① Case 不要全是高置信正常样本,那指标虚高没意义。② 期望输出要可判定(结构化字段比对),别写"模型答得合理"这种不可自动化评判的。③ 失败恢复类 Case 必须能真实触发中断+恢复,不能只 mock 成功。
五、评测指标体系(6 类)
工具调用成功率 · 任务完成率 · 人工审批触发准确率 · 高风险漏判率 · 单任务成本 · 错误恢复通过率
| 指标 | 定义 | 目标方向 |
| 工具调用成功率 | 工具被正确调用且返回可用 / 总调用 | 越高越好 |
| 任务完成率 | 端到端达成目标的 case / 总 case | 越高越好 |
| 人工审批触发准确率 | 该审的审了 / 该审的 | 越高越好(误触发也计错) |
| 高风险漏判率 | 高风险却未拦截 / 高风险总数 | 越低越好(安全红线) |
| 单任务成本 | 平均每次任务花费(模型+人工) | 越低越好(保质量下) |
| 错误恢复通过率 | 注入故障后能正确恢复 / 故障 case | 越高越好 |
指标设计要"成对":有"完成率"就要有"漏判率",有"成本"就要保"质量"。只看完成率会被"凡是拿不准就转人工"刷高——所以必须同时看审批触发准确率与漏判率,防止"宁可错杀"或"宁可漏放"。
六大指标:工具成功率、任务完成率、审批触发准确率、高风险漏判率、单任务成本、错误恢复通过率。关键是成对看——完成率高但漏判率也高就是"凡是拿不准就转人工"刷分,必须同看。
六、工具调用成功率
Agent 的"手"是工具。工具调用成功率衡量模型有没有选对工具、参数对不对、工具返回是否可用。
6.1 拆解
- 选择正确率:该调 A 没调 B。
- 参数正确率:入参类型/取值合法,能命中业务(如保单号格式对)。
- 执行成功率:工具本身返回非错误、结果可被下游使用。
工具调用成功率 = (选择对 ∩ 参数对 ∩ 返回可用) 的调用数 / 总工具调用数
工具成功率是 Agent 可用性的地基。它低通常是两个原因:① prompt/工具描述写不清导致模型选错;② 参数校验缺失导致调用失败。工程上要把"工具 schema 描述"当 API 文档写,并用低 T 保证参数稳定。
工具成功率=选对工具∩参数对∩返回可用。低通常是工具描述不清(模型选错)或参数校验缺失。要把工具 schema 当 API 文档写,低 T 保参数稳定。
① 只算"调用没报错"会虚高——返回 200 但结果是空/错的也算失败。② 参数合法性要在调用前校验,别等工具报 500。③ 不同工具难度不同,总体成功率要能按 tool_name 下钻。
七、任务完成率
任务完成率是最直观的"端到端有效性"指标:case 是否达成了用户目标(正确赔付/正确拒赔/正确转人工)。
| 结果 | 算完成吗 | 说明 |
| 正确自动通过 | 是 | 低风险且结论对 |
| 正确拒赔 | 是 | 应拒答且拒了(也是"完成") |
| 正确转人工 | 是 | 高风险且转了(交给人也是完成) |
| 错误赔付/错误放过 | 否 | 漏判,严重 |
| 卡死/超时 | 否 | 未达成 |
注意"正确转人工"也算完成——Agent 的职责是"把对的案子处理好、把不对的交给人",不是"什么都自己扛"。这正好呼应 HITL 设计哲学。完成率要和漏判率、成本一起看。
任务完成率看"是否达成目标":正确通过、正确拒赔、正确转人工都算完成。Agent 不必什么都自己扛,把不对的转人工也是完成。完成率要配合漏判率与成本一起看。
① 把"转人工"全当失败会低估系统,也会误导你去掉必要 HITL。② 完成率要可分难度/类别看,总体 90% 可能难 case 只有 50%。③ 避免用"模型自己说完成了"当判定,要客观比对期望结果。
八、人工审批触发准确率
衡量 HITL 闸门是否"该拦才拦":既不要漏拦高风险,也不要滥拦低风险。
审批触发准确率 = 触发审批且确实该审的 / 所有确实该审的(召回视角)
误触发率 = 触发审批但不该审的 / 所有触发审批的(精度视角)
- 漏拦(召回低):高风险没拦→直接放错→安全事故。
- 滥拦(精度低):低风险也拦→审批疲劳、成本高、体验差。
这是 HITL 的健康度指标。医疗场景里"漏拦的代价 >> 滥拦的代价",所以召回优先于精度,但也不能无限滥拦(成本和疲劳)。面试时要说清这个权衡,并显示你设了双指标而非单指标。
审批触发准确率看"该审的是否审了"(召回)和"拦的是否真该拦"(精度)。医疗里漏拦代价远大于滥拦,所以召回优先,但也不能无限滥拦(成本+疲劳)。要双指标一起看。
① 只报"准确率"不区分召回/精度,会掩盖"全转人工=100%召回但精度崩"的问题。② 漏拦是安全红线,要在报告中单列并设上限。③ 触发条件变更后要重新跑高风险类 Case 验证召回不降。
九、高风险漏判样本统计
高风险漏判 = 本应拦下/拒赔的高风险案,却被错误放行。这是安全红线指标,要专门统计与复盘。
9.1 统计方法
- 从测试集筛出"高风险"标签的 case(用药冲突、超额、黑名单)。
- 统计其中"被自动放行/错误赔付"的数量 = 漏判数。
- 漏判率 = 漏判数 / 高风险 case 总数,目标 < 1%(甚至 0)。
9.2 漏判样本复盘
| 漏判原因 | 改进 |
| RAG 未召回关键条款 | 补知识、调召回/重排 |
| 规则引擎漏判 | 补规则、加单测 |
| 模型置信度虚高 | 降阈值/加校验 |
| 审批触发条件过宽 | 收紧触发规则 |
漏判统计把"安全"变成可管理数字。它和审批触发准确率互补:准确率是"闸门整体健康",漏判率是"最坏情况发生频次"。面试时如果能展示"漏判率从 3% 降到 0.5% 的具体改法",非常有说服力。
高风险漏判=本该拦却放了,是安全红线。从测试集筛高风险 case 算漏判率(目标<1%),并对每个漏判样本复盘根因(RAG 漏召回/规则漏/置信度虚高/触发过宽)再改。能展示"漏判从3%降到0.5%"最加分。
① 漏判率不能只算总数,要分原因统计,否则改不动。② 漏判样本要进回归集,防止修复后复发。③ 别为降漏判无脑全转人工——那违反 HITL 初衷且成本爆炸。
十、单任务成本
单任务成本 = 平均每次用户任务的总花费,含模型 + 检索 + 工具 + 人工审批人力。
单任务成本 = (Σ token 成本 + 工具调用费 + human.approval 等待×人力单价) / 任务数
- 模型:按 Trace 的 token 聚合。
- 人工:审批触发率 × 平均等待 × 人力单价,常被忽略。
- 优化:降检索片段、换小模型、降审批触发率。
成本指标让作品"有商业感"。面试官(尤其 FDE 这种偏落地/咨询的角色)很看重你能把技术翻译成"老板算得清的账"。单任务成本要和完成率绑定看——降成本不能牺牲质量。
单任务成本=(模型token+工具+人工审批人力)/任务数。人工这块常被忽略:审批触发率×等待×人力单价。优化靠降检索片段、换小模型、降审批触发率。成本和完成率要绑定,不能牺牲质量换便宜。
① 不算人工审批成本会严重低估,尤其高触发率场景。② 成本要分位数(p50/p95),平均会掩盖少数超贵任务。③ 优化成本时务必同看质量指标,避免"省了钱、错了案"。
十一、错误恢复测试
错误恢复测试是主动注入故障,验证系统在中断、重试、幂等下仍正确。
| 故障注入 | 验证点 | 期望 |
| 审批中进程重启 | Checkpointer 恢复 | 从中断点续跑,不重跑已完成 |
| 恢复时网络重试 | 幂等键 | 只放款一次 |
| LLM 超时 | 退避重试 | ≤3 次后降级 |
| 工具调用失败 | 重试+降级 | 转人工/备用,不卡死 |
| 审批超时 | 最大执行时间 | 自动驳回/升级 |
一个失败恢复测试例子(面试必讲):Case R-03"中断后二次恢复导致二次放款"。注入:在 human.approval 通过后、放款前杀掉进程。期望:重启后用同 thread_id 恢复,执行节点校验幂等键 claim_id:approval_id 未消费→放款→标记消费;再次模拟网络重试恢复→键已消费→返回"已处理",绝不二次放款。该 Case 验证 Checkpointer+幂等键双保险。
错误恢复测试是作品"工程含金量"的分水岭。多数候选人只测功能正确,你测"故障下仍正确",直接对应 W4D4 的可靠性四件套。这把"我会用 LangGraph"升级成"我能交付生产级 Agent"。
错误恢复测试主动注入故障:进程重启看 Checkpointer 恢复、网络重试看幂等防二次放款、LLM 超时看退避、工具失败看降级、审批超时看升级。必讲 Case R-03:中断后二次恢复不能二次放款,验证 Checkpointer+幂等键双保险。
① 恢复测试不能只 mock 成功路径,要真杀进程/真重试。② 幂等键测试要验证"重复调用返回已处理"而非"重复执行"。③ 恢复后状态必须和"无故障"时一致,否则恢复也算失败。
十二、README 与 3 分钟演示
12.1 README 结构
# 特药理赔 Agent
## 1. 背景与价值(一段话)
## 2. 快速开始(环境/依赖/一条命令跑起来)
## 3. 架构图(流程图 + 状态归属图)
## 4. 评测指标与结果(六指标 + 表格)
## 5. 测试 Cases 说明(30 个,分类)
## 6. 错误恢复测试(含 R-03 例子)
## 7. 已知限制与后续
12.2 3 分钟演示脚本
- 0:00-0:30 背景:特药理赔的痛点(高风险、需合规、需人审)。
- 0:30-1:30 跑一个正常 case:材料→合规→规则→自动通过,展示 Trace。
- 1:30-2:15 跑一个高风险 case:触发 human.approval,人改额后通过。
- 2:15-2:45 展示评测面板:六指标数字 + 漏判率红线。
- 2:45-3:00 收尾:差异化优势=Java工程+大数据可观测+医疗domain。
README 和演示是"作品的可访问性"。再好的系统,别人跑不起来、你讲不清楚,面试价值减半。演示要"先讲价值、再秀能力、最后亮数字",让非技术面试官也能 get 到。
README 要让人 10 分钟跑起来,含背景/快速开始/架构图/六指标/Case 说明/恢复测试/限制。3 分钟演示:背景→正常case→高风险审批→评测数字→差异化优势。先价值、再能力、最后数字。
① README 缺"快速开始"=作品不完整,面试官可能直接弃看。② 演示别从头讲技术细节,先讲"解决什么问题、省了多少钱/降了多少风险"。③ 演示要能现场跑,别只放录屏——录屏像背稿,现场跑显真功。
十三、面试达标线①:作品二的评测指标设计
| 指标 | 定义 | 为何重要 |
| 工具调用成功率 | 选对∩参数对∩返回可用 / 总调用 | Agent 可用性地基 |
| 任务完成率 | 达成目标 case / 总 case(含正确转人工) | 端到端有效性 |
| 审批触发准确率 | 召回(该审审了)+精度(拦的对) | HITL 健康度 |
| 高风险漏判率 | 高风险却放行 / 高风险总数 | 安全红线 <1% |
| 单任务成本 | (模型+工具+人工)/任务数 | 商业可算账 |
| 错误恢复通过率 | 故障注入后正确恢复 / 故障 case | 生产级可靠性 |
指标设计六件套:工具成功率(地基)、完成率(端到端)、审批触发准确率(闸门健康,双指标)、高风险漏判率(安全红线)、单任务成本(商业感)、错误恢复通过率(生产级)。关键是成对看、分场景下钻、设红线。
十四、面试达标线②:一个 Agent 失败 / 错误恢复的测试例子
- 选例子:推荐讲 Case R-03"中断后二次恢复导致二次放款"(覆盖最全)。
- 注入故障:human.approval 通过后、放款前杀进程;随后因网络抖动触发重复恢复调用。
- 期望行为:同一 thread_id 恢复→Checkpointer 读快照从断点续跑→执行节点校验幂等键未消费→放款并标记消费;重复恢复→键已消费→返回"已处理",绝不二次放款。
- 验证点:① 状态不丢(Checkpointer);② 副作用只一次(幂等键);③ 恢复后终态与无故障一致。
- 可拓展:再加 LLM 超时退避、工具失败降级、审批超时升级,构成完整恢复测试矩阵。
必讲 Case R-03:审批通过后放款前杀进程+重复恢复。验证 Checkpointer 恢复状态 + 幂等键防二次放款。恢复后终态须与无故障一致。这把"会用 LangGraph"升级成"能交付生产级 Agent"。
十五、W4D6 自测清单
- 能一句话说清作品二(特药理赔 Agent)解决什么业务问题、覆盖哪些 FDE 考点。
- 能画出端到端流程图(含 human.approval 中断点与失败分支)。
- 能画出状态归属图,说清每类状态存哪、丢了怎么办。
- 能说明 30 个 Case 的六类分布及为何"失败恢复类"重要。
- 能定义 6 个评测指标及其目标方向。
- 能解释工具调用成功率的三层拆解(选择/参数/返回)。
- 能说清任务完成率里"正确转人工也算完成"的逻辑。
- 能区分审批触发准确率的召回与精度,并说清医疗场景召回优先。
- 能讲清高风险漏判率的统计方法与复盘改法。
- 能计算单任务成本并点出"人工审批也是成本"。
- 能讲清错误恢复测试的故障注入法与 Case R-03(中断+二次恢复不二次放款)。
- README 与 3 分钟演示脚本已就绪(达标线①②)。
十六、高频面试题速记卡
Q:作品二为什么选特药理赔 Agent?
它天然需要 RAG+Agent+HITL+Trace+评测,覆盖 FDE 全栈,且能发挥我 Java+大数据+医疗的复合背景。
Q:评测指标为什么要"成对"看?
只看完成率会被"拿不准就转人工"刷高;必须同看漏判率、审批准确率、成本,防止单指标作弊。
Q:任务完成率里转人工算完成吗?
算。Agent 职责是"对的办好、不对的交人",正确转人工也是完成,不算失败。
Q:审批触发准确率怎么算?
双指标:召回=该审的审了;精度=拦的真该拦。医疗里漏拦代价远大于滥拦,召回优先。
Q:高风险漏判率目标多少?
安全红线,目标<1%(尽量 0)。要分原因统计并让漏判样本进回归集。
Q:单任务成本为啥要算人工?
审批触发率×等待×人力单价常被忽略;成本和完成率要绑定看。
Q:错误恢复测试怎么测?
主动注入故障(重启/重试/超时/工具失败),验证 Checkpointer 恢复+幂等+降级。
Q:必讲的恢复 Case 是哪个?
R-03:审批后放款前杀进程+重复恢复,验证幂等键防二次放款,恢复终态须一致。
Q:README 最不能缺什么?
"快速开始"——让人 10 分钟跑起来,否则作品不可访问、面试价值减半。
Q:3 分钟演示结构?
背景价值→正常case→高风险审批→评测数字→差异化优势。先价值、再能力、最后数字。
FDE W4D6 学习手册 · 作品二核心版打磨(面试级)· 配合《FDE-W4D6-评测题.md》自测
延伸学习资源(中文 / 非 OpenAI):
① RAGAS(Agent / LLM 评测):docs.ragas.io——提供 answer_correctness、faithfulness、context_precision 等自动化评测指标,可接入你的 30 个 Case 做批量打分。
② Langfuse(Trace 可视化与评测):langfuse.com——把六类评测指标做成在线看板,错误恢复测试的 Trace 也能直接回放复盘。
📌 待查★ 重要