先定 Schema 再写抽取提示
抽取类提示的正确顺序是先定 Schema、再写话术。Schema 里把字段名、类型、必填与否、枚举取值定下来,提示只负责说明「从文本里按这份 Schema 取值」。反过来先写话术再补字段,很容易在抽取过程中发现字段漏项,改字段就要连带改提示、改下游表结构、改历史数据,成本成倍上升。
Schema 设计检查项
| 检查项 | 建议 | 原因 |
|---|---|---|
| 字段命名 | 英文小写下划线 | 跨语言环境解析稳定 |
| 类型收敛 | 数字不带千分位与单位 | 便于程序计算 |
| 枚举封闭 | 取值列全并给缺省 | 减少同义变体 |
| 数组与空值 | 空数组与 null 分开约定 | 区分「无此项」与「没抽到」 |
| 嵌套层级 | 尽量不超过两层 | 层级越深越容易填错 |
典型使用场景
- 票据信息抽取:金额、日期、抬头等字段直接入库
- 工单字段抽取:设备、现象、影响范围按固定 Schema 输出
- 简历解析:字段与枚举先定好,再批量处理存量数据
- 多源数据合并:各来源映射到统一 Schema 后才可比较
- 接口化抽取服务:Schema 即契约,前端与下游都按它对接
Schema 先行写法
Schema 先行写法
抽取目标 Schema(字段名/类型/必填/枚举):
- invoice_date: string(YYYY-MM-DD), 必填
- amount_total: number, 单位元, 必填 # 数字不带单位与千分位
- currency: string, 枚举 [CNY, USD, EUR], 缺省 CNY
- items: array<{name: string, qty: number}>, 可为空数组
按上面 Schema 从文本抽取值;类型不符时修正为合法值再输出。字段类型选择
| 字段类型 | 适合承载 | 常见错误 |
|---|---|---|
| string | 名称、编号、日期(按固定格式) | 把日期当自由文本,格式五花八门 |
| number | 金额、数量、比率 | 带单位或千分位,无法参与计算 |
| boolean | 是否类判断 | 用是/否、Y/N 混写,下游判断分支出错 |
| array | 多值字段(标签、明细) | 单值也包成数组,或空值写成 null |
Schema 一旦对外使用就要版本化:字段含义变更时新增字段而不是改旧字段,避免历史数据被误读。