跳到主要内容

02-LLM与结构化输出评测

核对日期:2026-05-13。

不稳定项:模型结构化输出能力、JSON schema 支持、function calling、grader API 和评测工具持续变化;生产评测前必须核对目标模型与 SDK 当前能力。

1. 学习目标

本专题关注单个 LLM 调用和结构化输出任务如何评测。它是 RAG 和 Agent 评测的基础。

学完后你应该能做到:

  • 为分类、抽取、摘要、改写和结构化输出设计评测。
  • 使用规则评分、程序评分和人工评分组合验证 LLM 输出。
  • 评估 schema 通过率、字段完整率、事实性、拒答和安全。
  • 设计 LLM-as-judge 校准流程。
  • 识别格式正确但语义错误的问题。

2. LLM 输出评测维度

维度说明
格式是否符合 JSON/schema/markdown 要求
完整性必填字段是否齐全
正确性结论是否正确
指令遵循是否遵守约束和角色
事实性是否编造事实
拒答无法回答时是否拒答
安全是否泄漏、越权或执行危险指令
成本延迟token 和响应时间是否可接受

结构化输出不是只要 JSON 能 parse 就算成功。

3. 分类任务

分类适合规则和人工校准。

样例字段:

{
"id": "cls-001",
"input": "我想取消订单并退款",
"expected_label": "refund_request",
"allowed_labels": ["refund_request", "shipping_issue", "complaint"],
"risk_level": "medium"
}

指标:

  • accuracy。
  • precision/recall。
  • confusion matrix。
  • 高风险类别漏判率。

不要只看总体准确率。高风险类别漏判可能一票否决。

4. 抽取任务

抽取任务常见指标:

  • 字段完整率。
  • 字段准确率。
  • schema 通过率。
  • 多值字段 recall。
  • 无信息字段是否留空。

反模式:

  • 模型没找到字段时编造。
  • 空字段填“未知”但下游当作真实值。
  • 日期、金额、单位没有标准化。

5. 摘要和改写任务

摘要不能只看流畅度。

Rubric:

维度标准
覆盖是否覆盖关键点
忠实是否只基于原文
压缩是否去掉冗余
结构是否符合目标格式
安全是否泄漏不该输出的信息

摘要常见失败:

  • 删除关键限制条件。
  • 加入原文没有的信息。
  • 改写语气改变承诺边界。

6. 结构化输出评测

结构化输出至少分两层:

  1. 语法层:JSON 能 parse,schema 通过。
  2. 语义层:字段内容正确。

示例指标:

指标说明
parse rate能否解析
schema pass rate是否符合 schema
field completion必填字段是否完整
field correctness字段值是否正确
repair rate重试或修复比例

不要让 parser 静默修复严重语义错误。

7. LLM-as-judge

适合:

  • 开放问答初筛。
  • 摘要质量。
  • 语义相似。
  • 失败原因归类。

不适合单独用于:

  • 高风险安全。
  • 合规结论。
  • 事实必须精确的任务。
  • judge 无领域知识的任务。

校准流程:

人工标注小样本
-> judge 按 Rubric 评分
-> 比较一致率
-> 分析分歧
-> 修改 judge Prompt
-> 固定 judge 版本

8. 工程案例

8.1 客服意图分类

评测:

  • 退款、物流、投诉、账户、其他。
  • 高风险投诉不能漏判。
  • 模糊样例应输出 needs_clarification

8.2 工单字段抽取

字段:

  • 订单号。
  • 用户诉求。
  • 金额。
  • 时间。
  • 风险标签。

评测:

  • schema 通过率。
  • 金额和日期标准化。
  • 缺字段不编造。

9. 常见反模式

反模式表现后果修正
JSON 能 parse 就通过字段语义错下游误用语义评分
只看总体准确率高风险漏判事故分类别指标
judge 无校准分数好看不可信人工标注集
重试无限制格式失败一直修成本失控max repair
摘要只看流畅删除关键条件误导用户忠实度 Rubric

10. 练习

为“客服工单分类 + 字段抽取”设计评测:

  • 10 条分类样例。
  • 10 条抽取样例。
  • schema。
  • 指标。
  • 高风险一票否决条件。

11. 验收题

  1. 结构化输出为什么要分语法层和语义层评测?
  2. 分类任务为什么不能只看总体准确率?
  3. 摘要任务最常见的忠实性问题是什么?
  4. LLM-as-judge 如何校准?
  5. 哪些任务必须人工复核?
  6. repair retry 为什么需要上限?