ReAct 循环:一次退换货咨询的完整链路
前两节学了“四大能力”和“工具调用”,这一节看它们怎么串成一条会自我纠错的完整工作流——这套打法叫 ReAct。
ReAct 是 Reason(思考)+ Act(行动)的缩写,循环只有三步:Thought(想一下)→ Action(做一步)→ Observation(看结果),然后带着结果进入下一轮“想一下”,直到任务完成。
为什么不一上来就规划好全部步骤?因为现实不配合剧本——查库存可能缺货,查物流可能延迟,每一步的结果都可能改变后面的走法。老司机处理售后也是这个节奏:先查订单,看到结果再决定下一步,边走边看,随时修正。
Thought 1
客人要办两件事:换小码 + 问时效。先查他的订单,确认买了什么。
Action 1
调用 query_order(客人手机号后四位 已提供)
Observation 1
订单 #88231:法式碎花连衣裙,L 码,已签收 3 天,在退换期内。
Thought 2
L 换 S,先查 S 码有没有货,再决定方案。
Action 2
调用 check_inventory(连衣裙, S码)
Observation 2
⚠️ S 码缺货,预计 8 月 12 日补货;M 码现货 37 件。
Thought 3
S 没货,改方案:推荐换 M 码(现货,明天可到),或等 12 号 S 补货。给客人选择,不替他决定。
Final
收口回复:“亲,L 换 S 的话 S 码暂时缺货(12 号到货);M 码有现货,今天发明天能到。您看换 M 码,还是等 S 补货?我这边先把换货单给您备好~”
▶ 播放完整链路 ↺ 重置
Thought → Action → Observation ↻ 循环往复,直到给出最终答复
- 第 2 步的自我纠错:查库存发现 S 码缺货,Agent 没有死磕原方案,而是在下一轮 Thought 里改走“推荐 M 码 + 提供替代方案”。纠错不靠写死的 if-else,靠每一轮都带着新信息重新想。
- 行动之间是“接力”不是“齐发”:先查到订单才能查库存,先确认换货方案才能建单——有依赖关系的步骤必须串行,这也是成本(每轮都要烧一次 Token)。
- 最后一步“收口”:循环的终点是 Agent 判断“信息够了”,把散落的查询结果组织成一段人话。收口收不好,客人收到一堆零散信息,体验直接崩。
设计 Agent 流程时,别想着写“完美剧本”,要设计“思考习惯”:每一步做完都问一句“结果符合预期吗?不符合怎么调整?”——这跟你培训客服说的“查完库存再承诺,别先拍胸脯”是同一句话,只不过这次是说给 AI 听。
- ReAct 三步循环:Thought 想 → Action 做 → Observation 看,带着结果进下一轮。
- 不规划全程是有意的:现实不配合剧本,每步结果都可能改变后面的走法。
- 自我纠错是循环自带的:缺货改方案,不靠写死规则,靠每轮重新想。
- 串行有成本:每轮循环都烧 Token——轮数控制就是成本控制(2-10 有速算)。