03接入真实业务数据 · 第 9 章
总进度 9 / 13

08|一行一个问题,让迭代逐条处理

有人会一次粘贴几条问题。把整段直接交给一个节点,后续很难按问题保存结果。这一节先把多行文字拆成数组,再让迭代节点逐项处理,最后返回同样有顺序的一组结果。

2026-09-28约 6 分钟13 行代码难度 ★★

如果想获取全套课程资料,请关注微信公众号 「AI面包君」,回复 「课程资料」 即可领取。

有人会一次粘贴几条问题。把整段直接交给一个节点,后续很难按问题保存结果。这一节先把多行文字拆成数组,再让迭代节点逐项处理,最后返回同样有顺序的一组结果。

我们先用模板代替模型,只验证循环范围、每项变量和输出收集。跑通后,你再考虑将迭代体替换为检索与回答。

1. 让输入支持多行

新建 Bread-08-批量问题,输入变量 query 的类型选“段落/Paragraph”,设为必填。短文本框不适合这次一行一条的输入方式。

在后面添加 Python 节点“按行拆分”,输入 query 绑定 输入 → query,输出 items 选择 Array[String],填入:

def main(query: str) -> dict:
    items=[x.strip() for x in query.splitlines() if x.strip()]
    if len(items)>10: raise ValueError("一次最多 10 条问题")
    return {"items":items}

splitlines() 按换行拆分;每项 strip() 去掉前后空白;最后的 if x.strip() 跳过空行。超过十项时主动报错,是为了控制这次批量实验的工作量。

先单独测试代码,输入两条问题,中间留一个空行。items 应只有两项,而不是包含空字符串的三项。

一段文字和一个问题列表,形状不同

“发货时间是什么?换货条件是什么?”可以是一整段字符串;['发货时间是什么?', '换货条件是什么?'] 才是有两项的列表。看起来都包含两个问题,程序使用方法却不同。

迭代节点需要能逐项取出的数组。如果你只在一段字符串里放了几个逗号,它不会因此自动知道每项业务问题的边界。本节规定“一行一条”,就是先用一个明确的拆分约定减少歧义。

把拆分代码分成三次观察

第一次 splitlines() 得到各行;第二次对每行 strip,去掉前后空白;第三次过滤空行,留下真正有内容的项目。原代码用一条列表推导式完成这些动作,初学时可以先在纸上分开看。

原始行strip 后是否保留
两个空格+多久发货多久发货保留
只有空格空字符串不保留
怎么开票+尾部空格怎么开票保留

试读到这里 · 后续内容已封存

关注公众号,继续把这章学完

在「AI面包君」发送关键词「学习AI」拿到口令。验证一次,这个浏览器就能继续阅读全部课程。