PlanningBench:让大模型"真会规划"有了一把可验证的尺子

2026-06-05 24 预计阅读时间:1 分钟
来源:oschina.net AI 摘要 原文链接

免责声明:本文为 AI 摘要整理,建议结合原文阅读。摘要可能省略上下文、版本差异或边界条件,不作为官方说明。

预计阅读时间:10 分钟

大语言模型写诗、写代码、写摘要的能力已经被各类基准反复检验,但"规划"这项更接近真实决策的核心能力,一直缺乏系统化、可扩展的评测手段。腾讯混元团队联合中国人民大学高瓴人工智能学院等机构开源的 PlanningBench,正是要补上这块短板——它从真实规划场景出发,抽象任务结构与约束,构建覆盖 30+ 任务类型的数据生成与验证体系,让"模型到底能不能规划"这个问题有了可量化、可复现的答案。

规划能力评测为什么难

规划不同于单步推理或文本生成。一个完整的规划任务通常包含:

  • 多步依赖:后续步骤依赖前序步骤的结果,一步错则全盘错。
  • 约束满足:资源上限、时间窗口、互斥条件等硬约束必须同时满足。
  • 动态调整:执行过程中环境变化,需要重新规划。

传统评测要么用几道手工设计的谜题(如 Block World),要么拿现成数据集做端到端准确率统计,问题很明显——题量少、覆盖窄、答案不可自动验证。模型答对了可能是蒙的,答错了也不知道是哪一步出了问题。

PlanningBench 的思路是:把规划任务本身做成一个可程序化生成、可自动验证的对象,而不是靠人工一道一道写题。

30+ 任务类型与可扩展生成框架

PlanningBench 将真实规划场景抽象为若干任务族,每个族内通过参数化生成大量实例:

任务族示例 核心约束 难度调节维度
旅行路线规划 时间窗口、预算上限 目的地数量、交通方式组合
资源分配调度 容量上限、互斥占用 资源种类数、冲突密度
项目任务编排 前后依赖、截止日期 依赖链深度、并行分支数
仓储物流调度 库存容量、补货周期 SKU 数量、需求波动幅度

框架的关键设计在于难度因素的系统化注入——不是简单增加输入长度,而是在约束数量、依赖深度、解空间大小等维度上逐步加压,使得同一任务族可以生成从入门到极端的连续难度梯度。

验证体系同样重要。每个生成的任务实例都附带一个形式化规约(可类比为 PDDL 或约束编程的描述),使得任何候选方案都能被程序化地判定"是否满足全部约束",而非依赖人工标注或 LLM 自评。

用 PlanningBench 做一次规划能力评测

以下示例展示如何基于 PlanningBench 框架生成任务、调用模型、并自动验证结果。当前框架以开源仓库形式发布,具体 API 可能随版本迭代调整,使用前请查阅仓库最新文档与示例。

假设说明:下方代码基于 PlanningBench 公开仓库的典型使用模式编写,部分接口名称为合理推断,请以仓库实际 API 为准。

# 安装(请以仓库 README 中的最新指令为准)
# pip install planningbench  或从源码安装

from planningbench import TaskGenerator, Verifier, PlannerEvaluator

# 1. 生成旅行规划任务实例
generator = TaskGenerator(task_type="travel_planning", seed=42)
task = generator.generate(
    num_destinations=5,        # 目的地数量
    budget_limit=3000,         # 预算上限(元)
    time_window_days=7,        # 时间窗口
    difficulty="medium"        # 难度级别:easy / medium / hard
)

print("任务描述:", task.description)
print("约束列表:", task.constraints)
# 输出类似:
# 任务描述:请在7天内规划一条覆盖5个城市的旅行路线...
# 约束列表:[总预算≤3000元, 每城停留≥1天, 相邻城市间有直达交通...]

# 2. 调用待评测模型生成规划方案
from openai import OpenAI

client = OpenAI(
    base_url="https://api.hunyuan.tencent.com/v1",  # 或其他兼容端点
    api_key="YOUR_API_KEY"
)

prompt = f"""你是一位旅行规划师。请根据以下任务和约束,输出一个完整的日程安排表。

任务:{task.description}
约束:{task.constraints}

请按如下格式输出:
日期 | 城市 | 活动 | 预估花费 | 交通方式
"""

response = client.chat.completions.create(
    model="hunyuan-lite",  # 替换为你要评测的模型
    messages=[{"role": "user", "content": prompt}],
    temperature=0.3
)

plan_text = response.choices[0].message.content
print("模型输出:\n", plan_text)

# 3. 自动验证方案是否满足全部约束
verifier = Verifier(task_type="travel_planning")
result = verifier.verify(task=task, plan_text=plan_text)

print("验证结果:", result.summary)
print("约束满足详情:")
for c in result.constraint_details:
    print(f"  {c.name}: {'✅ 满足' if c.satisfied else '❌ 违反'}{c.reason}")

运行上述脚本后,你会得到一份结构化的验证报告:每条约束是否满足、违反原因、以及整体通过率。这使得评测不再停留在"看起来合理"的主观判断,而是有硬性判定标准。

批量评测与难度梯度分析

单条任务只能看个例,真正有价值的是跨难度梯度的批量评测:

from planningbench import BenchmarkRunner

runner = BenchmarkRunner(
    task_types=["travel_planning", "resource_allocation", "project_scheduling"],
    difficulties=["easy", "medium", "hard", "extreme"],
    samples_per_config=50  # 每种配置生成50个实例
)

# 对多个模型运行评测
results = runner.run(
    models=["hunyuan-lite", "gpt-4o-mini", "deepseek-chat"],
    api_configs={
        "hunyuan-lite": {"base_url": "https://api.hunyuan.tencent.com/v1", "api_key": "KEY_A"},
        "gpt-4o-mini": {"base_url": "https://api.openai.com/v1", "api_key": "KEY_B"},
        "deepseek-chat": {"base_url": "https://api.deepseek.com/v1", "api_key": "KEY_C"},
    },
    temperature=0.3,
    max_tokens=2048
)

# 查看各模型在不同难度下的通过率
results.plot_pass_rate_by_difficulty()
results.export_csv("planning_eval_results.csv")

批量跑完后,你可以直观看到:哪个模型在 easy 级别轻松过关,却在 hard 级别骤降;哪个模型在资源分配类任务上表现稳定,却在项目编排上频繁违反依赖约束。这些细粒度信号远比一个笼统的"准确率"更有工程指导意义。

采纳建议与注意事项

谁应该关注 PlanningBench:

  • 正在评估大模型能否承担调度、排期、路线优化等真实决策任务的团队——用它做准入测试,比看通用基准分数靠谱得多。
  • 训练规划增强模型的研究者——框架的数据生成能力可以直接产出训练语料,验证能力则提供可靠的 reward signal。
  • 需要向业务方解释"模型规划能力边界"的工程师——难度梯度报告比一句"模型还不够好"更有说服力。

使用时的几个现实考量:

  1. 验证器与领域对齐:框架内置的验证逻辑覆盖了通用约束类型,但特定业务场景可能有独特约束(如合规红线、行业惯例),需要自行扩展验证器。
  2. 生成多样性 vs 可控性:参数化生成保证了可控的难度梯度,但实例之间的语义多样性可能不如真实业务日志。建议将生成数据与真实案例混合使用。
  3. 模型输出格式稳定性:验证的前提是模型输出能被结构化解析。实际运行中,模型格式漂移(多加一句解释、少写一列)是常见问题,需要在 prompt 设计和后处理上预留容错空间。
  4. 成本控制:批量评测 30+ 任务类型 × 4 难度 × 50 样本,调用量不小。建议先用小规模跑通流程,再逐步扩展。

PlanningBench 的核心贡献不是又一个排行榜,而是给"规划能力"这个模糊概念装上了刻度尺和检验台。对于任何想把 LLM 从聊天伙伴升级为决策助手的团队来说,这把尺子值得先刻好再用。


相关推荐