如何设计 Agent 规划能力的评估实验
1️⃣ 考察意图
面试官想考察你是否能系统性地拆解 Agent 规划能力的评估,而非只背 benchmark 名字。这是典型的“系统设计 + 工程取舍”题,刁钻点在于:规划能力是隐式的,不能只看最终成功率,还要区分“运气好”和“真会规划”。答好了能展示你对评估方法论(任务设计、指标选择、消融实验)的深度理解,以及从论文到落地的实战经验。
2️⃣ 标准答
评估 Agent 规划能力,核心是回答三个问题:测什么、怎么测、如何归因。下面分四步展开。
第一步:明确规划能力的维度规划不是单一技能,至少包含四个子能力:
- 任务分解:将复杂目标拆成有序子任务(如“订机票”拆成“查航班→比价格→下单”)。
- 子目标排序:处理依赖关系(如必须先“登录”才能“下单”)。
- 资源约束:在有限步骤、内存或工具调用次数内完成(如 LLM 的上下文窗口限制)。
- 回溯修正:遇到失败时能回退并重规划(如 API 返回错误后换策略)。
第二步:设计基准任务集任务要覆盖不同复杂度,推荐三个开源基准:
- Blocksworld:经典规划问题,有明确最优解,适合测“规划最优性”。坑:LLM 容易在 5 块以上任务中产生幻觉(如同时移动两个块),需用 PDDL 格式约束动作空间。
- ALFWorld:具身任务(如“把苹果放到冰箱”),测“任务分解 + 回溯”。实际落地坑:环境反馈延迟高(模拟器 1 步 = 500ms),评估时需设置超时阈值(如 50 步)。
- WebShop:电商购物任务,测“子目标排序 + 资源约束”。注意:商品描述噪声大(如“红色衬衫”可能匹配到“红色裤子”),需引入模糊匹配容忍度。
第三步:定义评估指标指标要分层,避免单一指标误导:
- 成功率:最基础,但容易过拟合(如 ReAct 在简单任务上 100% 成功,复杂任务骤降)。建议按任务难度分层报告(如 3 块 vs 7 块 Blocksworld)。
- 步骤效率:平均步数 / 最优步数比。例如,Plan-and-Solve 在 WebShop 上平均 8 步,最优解 5 步,效率比 1.6。工程取舍:步数少不一定好,可能跳过了必要验证(如未确认订单就提交)。
- 规划最优性:与最优解的差距(如 Blocksworld 中,最优解 5 步,Agent 用了 10 步,差距 5)。注意:最优解需预计算(用 A* 或 BFS),对复杂任务成本高。
- 鲁棒性:在噪声干扰下的表现。例如,在 ALFWorld 中随机插入 20% 的无关观察(如“你看到一只猫”),看成功率下降幅度。实际坑:噪声类型需与任务相关(如电商任务加无关商品描述),否则评估无效。
第四步:构建对比基线与消融实验基线必须包含主流方法:
- ReAct:推理 + 行动循环,适合测“回溯修正”。缺点:在长链任务中容易遗忘早期信息。
- Plan-and-Solve:先规划再执行,适合测“任务分解”。缺点:规划固定,无法应对动态环境。
- Tree-of-Thoughts:多路径搜索,适合测“资源约束”。缺点:计算开销大(每个节点需多次 LLM 调用)。
消融实验要量化各组件贡献:
- 移除记忆模块:对比有/无记忆的步骤效率。例如,ReAct 在 ALFWorld 中移除记忆后,平均步数从 12 升到 18,证明记忆对回溯修正关键。
- 移除反馈模块:对比有/无环境反馈的成功率。例如,Plan-and-Solve 在 WebShop 中移除反馈后,成功率从 70% 降到 40%,说明动态调整的必要性。
实际落地的坑 + 解法:
- 坑:评估结果方差大(同一任务不同 seed 成功率差 30%)。解法:每个任务跑 5 次,报告均值和标准差;使用固定 seed 控制 LLM 采样随机性。
- 坑:任务集太小(如只测 5 个任务),结论泛化性差。解法:至少 20 个任务,覆盖简单/中等/复杂三级,并公开任务生成代码(如用 GPT-4 自动生成 Blocksworld 变体)。
3️⃣ 答题模板(30 秒电梯版)
“这个问题我从三个层面回答:第一,明确规划能力的四个维度——任务分解、子目标排序、资源约束和回溯修正;第二,设计基准任务集,比如 Blocksworld 测最优性、ALFWorld 测回溯、WebShop 测排序;第三,定义分层指标,包括成功率、步骤效率、规划最优性和鲁棒性,并做消融实验量化各组件贡献。总结一句:评估规划能力的关键是区分‘运气好’和‘真会规划’,必须用多维度指标和消融实验来归因。”
4️⃣ 高频追问 & 应对
追问 1:你提到的 Blocksworld 最优解怎么算?如果任务空间太大怎么办?
最优解用 A* 或 BFS 预计算,但只适用于状态空间小的任务(如 5 块以内)。对于大空间(如 10 块),用近似最优解:比如用贪心算法生成一个下界,或者用 LLM 自身生成多个规划路径取最短。实际中,我倾向于用“相对最优性”——对比所有基线方法中的最佳结果,而不是绝对最优。这样虽然不完美,但能避免计算爆炸。
追问 2:你的评估指标里,步骤效率和成功率冲突怎么办?比如一个 Agent 步骤少但成功率低。
这是典型 trade-off。我的解法是用帕累托前沿:在成功率 > 80% 的任务上,再比较步骤效率。如果 Agent A 成功率 85% 但步骤多,Agent B 成功率 90% 但步骤少,我会选 B。如果两者成功率接近,则用“效率比”加权(如成功率 × 1/步骤数)。另外,可以引入“成本指标”——每步调用 LLM 的 token 消耗,避免 Agent 用大量 token 换步骤少。
追问 3:你如何保证评估实验的可复现性?特别是 LLM 输出随机性大。
三个关键点:第一,固定 seed 和 temperature(如 seed=42, temp=0),但注意不同 LLM 版本 seed 行为不同,需在论文中注明。第二,记录每次 LLM 调用的完整 prompt 和 response,用于事后分析。第三,使用确定性解码(如 greedy decoding)作为主实验,随机采样作为鲁棒性测试。实际落地中,我还会用 Docker 容器化整个评估环境,确保环境反馈一致。
5️⃣ 避坑 · 常见错误答法
- ❌ 只提成功率,说“成功率越高规划能力越强” → ✅ 必须分层报告,并说明成功率可能被简单任务拉高,复杂任务才是关键。
- ❌ 用单一 benchmark(如只测 ALFWorld),结论说“Agent 规划能力强” → ✅ 至少用 3 个不同领域 benchmark,并分析任务特性对结果的影响。
- ❌ 消融实验只做“有/无规划模块”,不控制其他变量 → ✅ 必须控制 LLM 版本、prompt 模板等不变,否则无法归因。
6️⃣ 简历呼应
- 如果你有 RAG 项目:从“检索增强规划”角度切入,说你在 RAG 中评估过 Agent 的规划能力(如多跳检索的步骤效率),并对比了 ReAct 和 Plan-and-Solve 的差异。
- 如果你只做过传统 NLP:用“文本生成评估”类比,说评估规划类似评估长文本生成(如故事规划),都需要多维度指标和消融实验,并强调你熟悉 BLEU/ROUGE 的局限性。
- 如果你是校招无项目:聚焦论文复现,说你复现过 ReAct 在 ALFWorld 上的实验,并发现了步骤效率指标的方差问题,提出用固定 seed 解决。
- “ReAct: Synergizing Reasoning and Acting in Language Models” (Yao et al., 2023)
- “Plan-and-Solve Prompting: Improving Zero-Shot Chain-of-Thought Reasoning by Large Language Models” (Wang et al., 2023)
- “Tree of Thoughts: Deliberate Problem Solving with Large Language Models” (Yao et al., 2023)
- “ALFWorld: Aligning Text and Embodied Environments for Interactive Learning” (Shridhar et al., 2021)
- “MiniWoB++: A Benchmark for Evaluating Reinforcement Learning Agents on Web Tasks” (Liu et al., 2018)