智能体调用工具不再靠试错:工具目录编译成规划模型,四个基准上最多高出28.9分
核心概要
大语言模型智能体调用工具时通常逐个试错,无法保证计划可执行。CGAP把工具目录确定性地编译成只记录字段是否可用的抽象PDDL模型,由经典规划器排序调用,再由大语言模型补出具体实体的调用并逐条校验参数来源与结果。在ToolSandbox、ComplexFuncBench、BFCL多轮和τ-bench零售四个基准上,三种模型下它均优于标准工具调用智能体,最多高出28.9分。
深度剖析
智能体处理一个请求时,调用顺序改由经典规划器决定,而不是让大语言模型边试边选。 此前的ReAct式智能体和先规划后执行的系统都把请求理解与规划交给同一个大语言模型,因此没有任何机制保证某次调用的输入在运行时已经可用。 在ToolSandbox、ComplexFuncBench、BFCL多轮和τ-bench零售四个基准、三种模型共15组模型与指标对比中,CGAP全部优于标准工具调用智能体,配对区间均不含零;ToolSandbox上提升13.9至28.9分。
规划模型只记录某个字段是否已有来源,不记录它的具体取值,因此工具返回未知时也能先排出调用顺序。 工具目录按参数名确定性地编译成PDDL动作,必填输入成为前置条件、候选输出成为效果;请求由大语言模型解析成每个所需结果一个目标,再由广度优先搜索求最短抽象计划。 天气例子中,三个城市天气预报、两次日期解析和两次城市查询共需七次调用,抽象计划只给出五次动作,因为一次城市查询即可为所有预报提供坐标字段。
执行阶段由大语言模型补出抽象计划省略的实体级调用,运行时在调用前检查前置条件、参数模式和来源,调用后再由验证器判定结果是否满足请求。 每个参数值必须引用对话片段或此前成功响应的字段,由固定解码器或应用提供的确定性变换取得,大语言模型不能自行写入参数值。 运行时规则保证每次被接受的执行都对应一个有效的抽象计划;搜索返回NoPlan时,对该编译模型而言不存在能通过检查的调用序列。
启示与展望
演示范围是四个交互式工具使用基准上的分层子集与τ-bench零售全部114个任务,使用三种大语言模型,并按三次运行多数投票聚合;状态相关规划只在ToolSandbox上借助手写设备依赖标注实现。
保证只对编译出的模型和运行时规则成立,NoPlan 仅对该编译目录证明不可行;请求解析可能误读操作,引用来源可能错误或指向错误实体,验证器可能接受错误结果且无法撤销已发生的副作用;以NoPlan而非Limit结束的比例尚未测量。
