输入结构化是什么
输入结构化是把要交给模型的输入包成 JSON、YAML 或固定字段清单,用字段名承载语义。它解决的是自然语言描述的歧义:一段话里「上周三报的故障」到底是发生时间还是上报时间,只有字段名能说清。结构化输入还有两个工程好处:程序生成不容易拼错,缺字段时肉眼可见,不用通读整段文字找漏项。
要点
| 收益 | 字段即语义;缺字段一眼可见;程序生成不易出错 |
|---|---|
| 配对输出 | 输入怎么结构化,就要求输出按同构字段返回,便于对比校验 |
| 注意 | JSON 本身占 token,超长正文仍建议用分隔标签承载 |
| 命名 | 字段名用英文小写下划线,值保留原文语言 |
| 缺失表示 | 约定缺失字段是 null 还是省略,出脚本前先定好 |
典型使用场景
- 工单处理:设备、现象、发生时间、上报时间分字段传入
- 数据核对:两侧数据都以结构化形式传入,要求逐字段比对
- 多来源汇总:不同来源映射到统一字段表后再交给模型
- 批量生成:模板固定,字段值由程序填充,避免手写提示出错
- 接口化调用:把模型调用包装成函数,入参即字段表
结构化输入示例
结构化输入示例
{
"task": "extract",
"lang": "zh", # 输入语言,便于约定输出语言
"fields": ["设备名", "故障现象", "发生时间"],
"source": "……原始工单文本……"
}
# 字段名承载语义;输出按同构字段返回,便于逐字段比对校验两种承载方式对比
| 方式 | 适合 | 代价 |
|---|---|---|
| JSON 字段 | 字段少、需要程序拼装与校验的输入 | 嵌套层级易读性差,占 token |
| 标签包裹的正文 | 超长文本、日志、代码块 | 语义靠标签名,缺少类型约束 |
| 键值清单 | 人工调试与临时排查 | 程序生成与解析都要额外处理 |
| 混合方式 | 元数据用字段、正文用标签 | 需要约定哪些内容放哪一层 |
输入结构与输出结构保持一致是最省事的设计:字段一一对应,程序拿到输出可直接做差异比对,无需再写映射表。