首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >从 Schema 到 Evidence,让 Agent 的输出经得起较真

从 Schema 到 Evidence,让 Agent 的输出经得起较真

原创
作者头像
dsy
发布2026-08-12 14:18:03
发布2026-08-12 14:18:03
990
举报

上篇我们把简历 Agent 推进到了"结构化输出 + 字段校验 + 可调 Tool"。但真实简历一扔进去,还是露了三处破绽:字段不够细、模型会编、给的建议是一句空话。

今天这篇顺着这三处破绽,把数据结构从"能跑"推进到"能较真":Schema 做业务建模、missing_fields 暴露缺失、Evidence 绑定原文,最后给出可落地的结构化建议。

一、Schema 不是字段堆砌,是业务建模

入门时用一个扁平结构:

代码语言:python
复制
class ResumeSummary(BaseModel):
    name: str
    summary: str
    skills: list[str]

真实简历不是三段话,它有层级。于是拆成多个模块:

代码语言:python
复制
class ResumeProfile(BaseModel):
    basic_info: BasicInfo
    education: list[Education]
    work_experiences: list[WorkExperience]
    projects: list[Project]
    skills: SkillSet
    summary: str
    missing_fields: list[str]

这一步的关键认知:

Schema 是把真实业务对象拆成清晰、可校验、可追踪的数据结构。

简历不再是一段文本,而是一个有层级的对象。下层每一个 BasicInfoEducation 都是独立的 Pydantic 模型,各自带自己的字段约束。模型越贴近真实业务,输出越不容易"串味"。

二、missing_fields:让 Agent 承认"我不知道"

跑起来后,Agent 返回了这样的缺失清单:

代码语言:json
复制
"missing_fields": [
  "basic_info.phone",
  "education.major",
  "work_experiences.title",
  "work_experiences.start_date",
  "work_experiences.end_date"
]

注意它没有硬猜手机号和专业,而是把判断不了的信息用点号路径标出来。

这很重要。很多 AI 应用的问题不是"答不出",而是"不知道还硬答"。missing_fields 的作用是:让 Agent 把无法判断的信息显式暴露出来

暴露之后,下游就能:

  • 提醒用户补充
  • 走人工审核
  • 降低整体置信度
  • 避免拿不完整的结果去入库

三、Evidence:每个字段都能回到原文

之前的写法,字段只有值:

代码语言:python
复制
school: str
degree: str | None

今天升级成"值 + 出处":

代码语言:python
复制
class EvidenceText(BaseModel):
    value: str
    evidence: str

输出长这样:

代码语言:json
复制
"school": {
  "value": "北京工业大学",
  "evidence": "北京工业大学,工学硕士,2009.09-2012.06。"
}

解决的问题是:这个字段到底是不是原文里真的有?

没有 evidence,模型可能吐一个看似合理但查无此处的结论。加了 evidence,每个关键字段都能拉回原文核对。

今天立的三条铁律:

  1. 没有 evidence 的关键结论,不进入最终结构。
  2. evidence 必须是原文片段,不是模型的解释。
  3. 找不到 evidence,就返回 null / unknown / []

四、结构化建议:不是散文,是四条

普通 AI 容易输出这种话:

你的简历整体不错,但建议突出项目成果,强化技术亮点,增加量化指标。

有道理,但不可执行。

今天把建议压成固定结构:

代码语言:python
复制
class SuggestionItem(BaseModel):
    issue: str
    reason: str
    evidence: str
    rewrite: str

每条建议必须回答四件事:什么问题、为什么是问题、原文依据、怎么改

代码语言:json
复制
{
  "issue": "项目描述缺少具体技术动作和成果",
  "reason": "原文只写了负责数据中台建设,无法体现具体贡献和结果",
  "evidence": "负责数据中台建设。",
  "rewrite": "负责数据中台建设,结合 Python、Spark、Flink 等技术支撑数据处理与实时计算场景。"
}

价值很清楚:建议不再是泛泛而谈,而是可展示、可追踪、可人工审核、可继续改写

五、完整链路

今天的简历 Agent 已经跑通这条链:

代码语言:shell
复制
原始简历文本
  ↓  Schema 结构化
  ↓  missing_fields 标记缺失
  ↓  evidence 绑定原文
  ↓  structured advice 输出建议

它不再是 输入文本 → 大模型回答,而是:

代码语言:shell
复制
输入文本 → 结构化对象 → 证据校验 → 缺失识别 → 可落地建议

这就是 PydanticAI 的工程化价值:把"会聊天"变成"能交付"。

六、总结

好的 AI 应用,不只是能回答,而是能按结构回答、带证据回答,并给出可追踪的建议。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、Schema 不是字段堆砌,是业务建模
  • 二、missing_fields:让 Agent 承认"我不知道"
  • 三、Evidence:每个字段都能回到原文
  • 四、结构化建议:不是散文,是四条
  • 五、完整链路
  • 六、总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档