02|把一句话整理成三个明确的字段
用户说“查一下 B1001 发货没有”,人能找到订单号,接口节点却需要一个明确的 order id 。这一节让模型提取意图、订单号和摘要,返回固定结构的对象。
展开当前模块目录
如果想获取全套课程资料,请关注微信公众号 「AI面包君」,回复 「课程资料」 即可领取。
用户说“查一下 B1001 发货没有”,人能找到订单号,接口节点却需要一个明确的 order_id。这一节让模型提取意图、订单号和摘要,返回固定结构的对象。
你会配置 JSON Schema,绑定 structured_output,再用有订单号和无订单号的输入做对照。结构稳定以后,后续节点才知道到哪里取值。
先分清文字、记录和列表
变量可以理解为带标签的数据格子。名字告诉你格子里装什么,类型告诉后面的节点应该怎样使用它。同样看见“订单信息”,里面可能是一段文字,也可能是一条能逐字段读取的记录。
| 类型 | 一个实际值 | 后面可以怎样用 |
|---|---|---|
| String | "订单 B1001" | 当作一句话展示,或继续提取字段 |
| Object | {"order_id":"B1001","status":"shipped"} | 分别读取订单号与状态 |
| Array | ["什么时候发货?","怎么开发票?"] | 用迭代节点逐条处理 |
对象像一张表格中的一行,数组像一叠同类卡片。"[{\"id\":1}]" 虽然看起来像列表,外层引号仍说明它是一段字符串;需要解析后才能按数组操作。这一节要让模型直接按约定输出字段,减少下游“看起来能读,实际取不到”的问题。
另一个常见混淆是变量名与变量路径。代码节点里你可以把输入命名为 result,但它的值仍需从上游节点的某个输出绑定过来。写好名字只是在贴标签,选择来源才是把数据装进去。
1. 建立字段提取流程
复制自己的模型应用,命名 Bread-02-字段提取。保留必填输入 query,把 LLM 改名为“提取字段”,选择支持当前结构化输出方式的模型。
System 改成:
识别用户主要意图、订单号和一句话摘要。
intent 只能是 policy(规则咨询)、order(订单查询)、ticket(人工工单)、other(其他)。
order_id 只提取用户明确给出的订单号;没有时返回空字符串,不猜测。
summary 保留用户原意,不补充用户没说的事实。
User 继续通过选择器绑定 输入 → query。先别运行,还需要定义返回结构。
结构化输出就像把留言抄进固定表格
收到“帮我查 B1001,想知道发货没有”,人工客服会把主要意图记成订单查询,把订单号写进订单号栏,再留一句摘要。程序做结构化提取,也是把自由表达放进约定的格子。
如果模型每次自由回复,一次说“订单为 B1001”,一次说“您提供的单号是 B1001”,后面的代码就要处理许多不同句式。字段稳定以后,后续只读取 order_id,不需要反复猜整句话。
但表格填得整齐,不意味着填的内容一定正确。把 B1001 抄成 B1007,同样可以是合法字符串。结构化输出解决的是接口形状,内容正确性还要通过样例、规则与业务数据检查。
试读到这里 · 后续内容已封存
关注公众号,继续把这章学完
在「AI面包君」发送关键词「学习AI」拿到口令。验证一次,这个浏览器就能继续阅读全部课程。
