摘要

一句话总结 本文介绍了一项旨在评估大语言模型(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”在处理其中几个模型时遇到了一些问题。

关联主题