1、区别的理解
例子:预订一次从北京到上海的商务旅行,包括机票、酒店、租车
它们之间存在依赖:
航班到达机场 ↓ 影响酒店位置 ↓ 影响是否需要租车 ↓ 影响取车地点和时间还要同时考虑:
出发和返程时间;
会议时间;
总预算;
酒店与会议地点距离;
机场和酒店交通;
租车营业时间;
航班延误风险;
退改政策。
如果纯粹使用 ReAct,智能体可能一开始就找到一个航班并预订,然后才发现:
到达机场离会议地点很远;
到达时间太晚;
附近酒店价格很高;
租车门店已经关门。
这属于局部决策正确,但全局组合不好。
这个时候应该使用 Plan and Solve
理解:
ReAct 有点类似深度优先遍历类型,优先先把一系的事做到底,不考虑与其他事情之间的联系;
而 Plan and Solve 类似宽度优先遍历,横向对比。
真实预订环境会不断变化:
航班价格实时变化;
座位突然售罄;
酒店房型不可用;
租车车型变化;
支付失败;
预订接口返回新限制。
这部分更适合 ReAct:
查询航班 → 观察实时结果 → 调整筛选条件 → 选择候选航班 → 查询酒店 → 观察房态 → 修改方案整个系统最好采用:
Plan-and-Solve 负责全局编排,ReAct 负责每个步骤的动态执行。
Plan-and-Solve 生成完整旅行规划 ↓ ReAct 执行航班查询 ↓ ReAct 执行酒店查询 ↓ ReAct 执行租车查询 ↓ 全局检查 ↓ 必要时重新规划