← 返回目录
ap3.5实操⏱ 约 10 分钟

字段级评测:整条 100 分,照样有问题

实测——整条准确率 15/15,一致性检查揪出 2 条

🔎 最后验证 2026-08📚 来源:本节字段级评测为 ECS 实测(2026-08,deepseek-chat,15 条标注样本含 5 条难样本,脚本与原始输出见本节代码)🧰 DeepSeek API、Python
为什么学这个

你的提取管线跑出了漂亮数字:整条准确率 15/15,100%。可以上线了吗?

这一节的实测说:等等。同一批结果,换个看法——检查"总额是否等于明细加总"——15 条里有 2 条对不上

它们的每个字段都"对",但组合起来自相矛盾。这类错误,整条准确率永远看不见,校验器也抓不到(格式完全合法)。

💡 打个比方

体检报告每一项都在正常范围,医生却皱眉:"你的体重和身高对不上,量错了吧?"

单项合格 ≠ 整体自洽。字段级评测 + 一致性检查,就是那个会交叉比对的医生。

实测:两种看法,两个结论

15 条标注样本(含 5 条难样本:口语化渠道"小程序"、"半打"、"一打鸡蛋"、含优惠券、昵称当客户名):

【整条准确率】15/15 (100%)  ← 大多数教程只报这一个数

【字段级准确率】
  客户名                    15/15 (100%) ████████████████████
  渠道(枚举)                15/15 (100%) ████████████████████
  总额                     15/15 (100%) ████████████████████
  数量合计                  15/15 (100%) ████████████████████
  总额==明细加总(一致性)      13/15 ( 87%) █████████████████

【错例明细】
  金额一致性:
    「孙姐从咱们小程序上买的,两提抽纸 39.9…」 计算不符
    「王工 App 下单,买了一打鸡蛋 26 元和…」   计算不符

两条错例都很有代表性:

  • 第一条含优惠券(39.9×2=79.8,实付 69.8,差的 10 元是券)——模型提取都对,但明细加总天然≠实付;
  • 第二条是单位换算("一打鸡蛋"= 12 个,单价是整打的 26 元)——qty 和 price 的口径不一致。

这两条不是模型的错,是你的 schema 没设计好:没有"优惠金额"字段、没规定 qty/price 的口径。而你只有做了一致性检查才会发现这件事。

三层评测,层层往下挖

看什么抓什么问题
1. 整条准确率所有字段全对的比例粗略健康度(但不指向靶子)
2. 字段级准确率每个字段各自的准确率该优化谁(哪个字段最差)
3. 一致性检查字段之间的关系(加总、区间、逻辑)格式合法但内容矛盾的错误

优化顺序:先看第 3 层(矛盾说明设计有问题)→ 再修第 2 层最低的字段 → 第 1 层自然会涨。

一致性检查怎么设计

针对你的业务写"字段之间应该满足什么关系":

# 金额自洽
calc = sum(i["qty"] * i["price"] for i in data["items"])
assert abs(calc - data["total"]) < 0.01, "明细加总 != 总额"

# 区间合理
assert 0 < data["total"] < 100000, "总额超出合理范围"

# 逻辑一致
if data["status"] == "已退款":
    assert data["refund_time"] is not None, "已退款但无退款时间"

# 枚举与业务规则
if data["channel"] == "phone":
    assert data["operator"] is not None, "电话订单必须有接线员"

这些规则的价值远超"多抓几个错":它们是你的业务知识被写成代码——新人看这段就懂你们的业务规则,而且每次评测都在验证它。

字段级评测的两个副产品

  1. 知道该给哪个字段加少样本(ap2.3):渠道识别差 → 给渠道加几个口语化例子,而不是整体重写提示词;
  2. 知道哪些字段该做人工复核(ap3.4):准确率最低的字段 = 最该标记 needs_human 的字段。

🔧 动手做:给你的提取建三层评测(15 分钟)

  1. 跑本节代码 field_eval.py,看三层结果。
  2. 换成你的字段:改 GOLD(至少 15 条,含 5 条难样本)和检查逻辑。
  3. 重点设计一致性检查:写下你业务里至少 3 条"字段之间必须满足的关系",写成代码。
  4. 跑一遍,看哪个字段最低——那就是你下一步优化的靶子
  5. 针对最低的字段做一次改进(补规则或补少样本),重跑,用 ap2.5 的噪声地板判断是不是真提升

做到这里你应该有:三层评测脚本、你的字段准确率排行、至少 3 条一致性规则、一次针对性优化的前后对比。

为什么:这是 AP3 的收口,也是 AP5 评测体系的预演。"整条准确率"是给老板看的,"字段级 + 一致性"是给自己用的——前者告诉你有没有问题,后者告诉你去哪修。没有第二、三层,你的优化只能靠猜。

❓ 测验
实测中整条准确率 15/15 满分,但一致性检查(总额 vs 明细加总)只有 13/15。这两条错例说明什么?
⚠️ 避坑别在标注集上「反复优化到满分」——那是过拟合

字段级评测会让你很想把每个字段都刷到 100%。危险在于:你可能只是把这 15 条的特例写进了规则(ap2.4 讲过的过拟合)。三条防御:① 留保留集(从不用来调优,只在上线前跑);② 优先修有共性的错(比如"所有口语化渠道都错"),而不是单条特例;③ 从线上真实失败样本补充评测集(AP5 的回流)——真实世界的分布,永远比你手造的样本更诚实。

🤖 让 AI 帮你设计一致性检查
我的提取 schema 是:【粘贴】。业务背景:【一句话】。请帮我列出 5-8 条「字段之间必须满足的关系」,写成可执行的断言代码(比如金额自洽、区间合理、逻辑依赖、枚举与其他字段的关联),并说明每条能抓住什么样的现实错误。
✅ 小结

🎉 AP3 完结!ap0.2 的第一座山(不可靠)被系统性地翻过去了:写死 schema(0/30→30/30)→ 校验+修复兜底 → 拒答分流 → 三层评测量化

你的结构化输出现在是"要么对、要么明确知道它不对"的状态——这才是能进数据库的东西。

下一章翻第二座山(幻觉):当用户问的是你的业务数据(模型压根没见过),它编造的概率会高得多。RAG + 引用溯源 + 幻觉率测量,下一章见。

下一节 → 工具调用:让模型不只是说,还能做
🔎 来源与核验· 2 条,点开核对
本节每个关键论断都对应一个可追溯的来源 —— 这是本课程"靠谱、不过时"的底线。
「15 条标注样本(含 5 条难样本)实测:整条准确率 15/15;字段级准确率客户名/渠道/总额/数量合计均 15/15;一致性检查(总额==明细加总)13/15」
📚 ECS 实测 field_eval.py(2026-08,deepseek-chat,temperature=0)✓ 已核验 2026-08
「两条一致性错例分别源于优惠券场景(明细加总≠实付)与单位换算歧义(「一打」的 qty/price 口径),属 schema 设计覆盖不足而非模型提取错误」
📚 同上实测错例分析✓ 已核验 2026-08
智图软件的赞赏码
都看到这了,打个赏呗!
接下来 · ap3.6
工具调用:让模型不只是说,还能做
继续读下一节 →