Pre-Act
2026-01-25
DL论文
00

目录

场景:银行客户服务
传统 ReAct 方式(逐步思考)
Pre-Act 方式(先规划再执行)
Pre-Act 的核心优势

https://arxiv.org/html/2505.09970v2

让我用一个具体的对话客服场景来演示 Pre-Act 和 ReAct 的区别

场景:银行客户服务

用户查询:我想查询我的储蓄账户(尾号1234)余额,然后把5000元从储蓄账户转到我的信用卡(尾号5678)还款,最后告诉我转账后的储蓄账户余额。

可用的工具:

  1. check_balance(account_number) - 查询账户余额
  2. transfer_funds(from_account, to_account, amount) - 转账
  3. check_credit_card_balance(card_number) - 查询信用卡欠款

传统 ReAct 方式(逐步思考)

展开代码
用户:我想查询储蓄账户余额,转账5000元到信用卡,然后告诉我新余额。 AI思考: 1. 用户要先查询储蓄账户余额。我需要账户号,用户提到了尾号1234。 行动:check_balance("1234") 系统返回:储蓄账户余额为15,000元。 AI思考: 2. 用户要转账5000元到信用卡。需要源账户、目标账户和金额。源账户是1234,目标账户是信用卡5678,金额是5000。 行动:transfer_funds("1234", "5678", 5000) 系统返回:转账成功。手续费10元。 AI思考: 3. 用户想知道转账后的新余额。需要再次查询。 行动:check_balance("1234") 系统返回:储蓄账户余额为9,990元。 AI思考: 4. 现在可以给出最终答案。 最终回答:已为您完成操作。转账前余额15,000元,成功转账5000元到信用卡5678(手续费10元),当前储蓄账户余额为9,990元。

问题:ReAct 是走一步看一步,没有提前规划。如果转账时发现余额不足,或者信用卡账户不存在,它只能在出错后才重新思考。


Pre-Act 方式(先规划再执行)

展开代码
用户:我想查询储蓄账户余额,转账5000元到信用卡,然后告诉我新余额。 AI 先生成完整计划: 【多步规划与推理】 计划步骤: 1. 步骤1(验证与查询): - 目标:确认账户有效性并获取当前余额 - 思考:需要先确认储蓄账户1234存在且有足够余额。调用余额查询。 - 行动:check_balance("1234") 2. 步骤2(执行转账): - 目标:执行转账操作 - 思考:在确认余额足够后,从1234向信用卡5678转账5000元。需要验证信用卡账户有效性。 - 行动:transfer_funds("1234", "5678", 5000) 3. 步骤3(确认结果): - 目标:验证转账结果 - 思考:转账成功后,重新查询储蓄账户余额,计算是否准确扣除。 - 行动:check_balance("1234") 4. 步骤4(最终回答): - 目标:汇总信息给用户 - 思考:整合所有步骤结果,提供清晰总结。 - 行动:生成最终答案 【开始执行】

执行过程

展开代码
执行步骤1: 行动:check_balance("1234") 结果:余额为2,000元(注意:这里余额不足!) AI重新规划: 【计划调整】检测到余额不足,原计划步骤2不可行。 更新计划: 1. 步骤1(已完成):余额2,000元 2. 步骤2(新):通知用户余额不足 - 思考:余额仅2,000元,不足5,000元转账。需要建议用户修改金额或存款。 - 行动:告知用户“您的储蓄账户余额仅2,000元,无法转账5,000元。您希望:a) 修改转账金额 b) 先存款再转账 c) 取消操作?” 执行步骤2(新): 用户响应:那转账2,000元吧。 AI重新规划: 【计划调整】用户修改金额为2,000元,继续执行。 更新计划: 3. 步骤3:执行调整后的转账 4. 步骤4:查询新余额 5. 步骤5:最终回答 ...继续执行

Pre-Act 的核心优势

场景ReAct 的反应Pre-Act 的反应
余额不足执行转账时才会失败,然后重新思考在规划阶段就考虑到余额验证,或在执行第一步后就发现问题,立即调整计划
账户不存在调用工具失败后重新规划可以在规划中加入“验证账户存在性”的预备步骤
复杂依赖可能遗漏步骤间的依赖关系提前规划能看到完整流程,识别依赖(如:必须先登录才能查询)
异常处理被动反应异常主动规划中可包含异常处理分支
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!