摘要
一句话总结 本文介绍了一项旨在评估大语言模型(LLM)在特定约束下生成《帝国时代2》建造顺序DSL(领域特定语言)文件能力的基准测试。
关键要点
- 测试目标:比较不同“LLM+测试框架”组合生成具有竞争力的《帝国时代2》建造顺序DSL代码的能力。
- 测试性质:本质上是一个代码优化问题,用于模拟智能体程序员(agentic coders)的工作,且由于采用了原创的严格DSL语法,属于“分布外”测试。
- 评估维度:涵盖指令遵循、大海捞针(从1000行JSON文件中提取关键元素)、上下文衰减、分布外编码、战略思维(同时实现4个目标)以及世界知识。
- 测试输入:为模型提供简单的提示词、游戏数据JSON文件、语法帮助以及一个几乎空白的建造顺序模板。
- 整体表现:总体结果低于预期,但所有受测模型均成功编写出了DSL脚本。
- Opus模型表现:展现出明显的《帝国时代2》世界知识,初稿在概念上非常出色。
- Codex 5.3模型表现:在默认提示词下存在严重的“偷懒”现象(过早停止生成),但能较好地保留剩余上下文以便后续引导优化。
- 开源与复现:项目受 minebench.ai 启发,采用GPL3协议开源,所有基准测试资产均已公开。
风险与不足
- 样本量与方差风险:出于成本考虑,基准测试未进行多次重复运行,结果可能存在一定的方差。
- 上下文衰减:部分模型在迭代过程中会耗尽完整的上下文,这进一步加剧了长文本信息提取(大海捞针)的难度。
- 接口与工具限制:LLM所使用的交互接口在测试中略显劣势;此外,“pi”在处理其中几个模型时遇到了问题。
正文
大语言模型(LLM)在制定《帝国时代2》(AoE 2)建造顺序(Build Orders)方面表现如何?本文将介绍一项相关的基准测试。
测试目的
该基准测试旨在比较在相似的约束条件下,不同的“LLM+测试框架(harness)”组合在生成具有竞争力的《帝国时代2》建造顺序DSL(领域特定语言)文件方面的表现。
测试内容与维度
这项测试本质上是一个代码优化问题,它能够很好地代表我们希望智能体程序员(agentic coders)去完成的工作。不过,这是一个有些奇特的测试,其独特性足以让它成为一种“分布外(out-of-distribution)”的测试。
具体的测试维度包括:
- 指令遵循: 严格遵守基准测试的提示词和所需的计分规则。
- 大海捞针: 提供的JSON文件长达1000行,其中包含一些关键元素,模型需要准确提取。
- 上下文衰减(Context rot): 几个模型在迭代过程中耗尽了完整的上下文,这进一步加剧了上述的大海捞针问题。
- 分布外编码: 测试所用的DSL语法非常严格且是原创的。
- 战略思维: 要同时实现4个目标并获得一个优秀的建造顺序,并非易事。
- 世界知识: 部分模型明显展现出了对《帝国时代2》典型建造顺序的既有知识。
测试设置与免责声明
在测试设置中,我会提供给模型一个简单的提示词、描述游戏数据的JSON文件、语法帮助,以及一个几乎空白的建造顺序模板。
需要说明的是,出于成本考虑,我并没有对这些基准测试进行太多次的重复运行。老实说,我认为结果的方差不会那么大,但这一点仍值得注意。
测试结果
总体而言,结果并不令人惊艳。不过,所有我能够运行的模型都成功编写出了DSL脚本。公平地说,LLM所使用的交互接口略显劣势,但我原本对它们的期望会更高。
有趣的是,尽管这些模型都“擅长写代码”,但它们在测试中展现出了非常明显的技能分化:
- Opus: 展现出了明显的世界知识。它的初稿在概念上非常出色,好到不可能是随机生成的。
- Codex 5.3: 在默认提示词下表现出严重的“偷懒”现象,总是很早就停止生成,导致结果方差很大。但另一方面,由于它保留了剩余的上下文,后续我可以很容易地引导它得出更好的结果。
(注:本测试部分受到了出色的 minebench.ai 的启发。)
复现说明
整个网站采用GPL3开源协议,基准测试的相关资产均已公开。我在相同的约束和访问权限下运行了模型,不过“pi”在处理其中几个模型时遇到了一些问题。