Files

4.3 KiB

“AI 鹈鹕测试”(Pelican Test / Pelican Benchmark)是在AI社区中流行的一种非正式基准测试,用于快速、直观地检验大语言模型(LLM)的空间推理、代码生成和概念组合能力。它由一个看似简单、甚至有些荒诞的提示词驱动。

🏁 起源:Simon Willison的“闭卷考试”

这个测试由开发者、AI研究者 Simon Willison 在 2024年10月 提出。他选择“鹈鹕骑自行车”的核心原因有两个:

  1. 个人偏好:他本人很喜欢鹈鹕。
  2. 避免“记忆”:当时互联网上几乎不存在“鹈鹕骑自行车”的现成图像,这迫使模型必须真正理解并从零构建,而不是从训练数据中简单复现。

📝 核心提示词:原始版本与常见变体

鹈鹕测试的精髓在于,提示词极简,但任务本身极具挑战。

最原始的“经典”提示词(英文)是:

“Generate an SVG of a pelican riding a bicycle.”

中文通常表述为:

“生成一张‘鹈鹕骑自行车’的 SVG 图。”

随着测试演变,社区衍生出了几种常见的变体,各有侧重:

  • 强制纯代码版:为了排除模型调用图像生成工具的可能,更纯粹地测试其SVG编码能力。提示词会强调:“请用 SVG 绘制一只骑自行车的鹈鹕。只输出完整、可独立渲染的 SVG 代码,不要解释,不要调用图像生成工具。”
  • 动态动画版(“鹈鹕杯”Classic赛道采用):增加了对时序和运动关系的考察。

    “创建一个 HTML,内容是 SVG 绘制一个鹈鹕骑自行车的 2D 动画。”

  • “终极加码”版:当基础版区分度下降后,社区出现了叠加了更多元素和逻辑的“地狱级”提示词,用于测试更复杂的关系保持能力。例如:

    “做一张精细的SVG图片,内容是鹈鹕骑着自行车在孙悟空开的大型飞机机翼上骑行,鹈鹕展开翅膀,上面托着秦始皇的北极熊,秦始皇骑在熊上打螺丝……”

🧠 为什么“骑自行车”这么难?

这个测试的巧妙之处在于,它将多个高难度挑战压缩进了一个简单的指令中:

  1. SVG = 用代码“画画”:文本模型并非直接输出像素图像,它必须生成XML格式的代码,再由浏览器渲染成图。这要求模型将抽象概念转化为精确的坐标、路径和图层关系。
  2. 复杂的空间与结构关系:模型必须正确理解并编码多个物体的结构(鹈鹕的长喙、喉囊;自行车的双轮、车架、踏板)以及它们之间符合物理常识的互动关系(鹈鹕坐在车座上、翅膀朝向车把、脚接近踏板)。最常见的失败模式就是“鹈鹕悬浮在自行车上方”或“腿和踏板连接错位”。
  3. 概念组合与“闭卷”属性:如前所述,“鹈鹕骑自行车”这一非常规组合在训练数据中极少见,更能反映模型泛化与组合的能力,而非检索能力。

💡 如何亲手进行鹈鹕测试?

你可以随时用主流模型(如GPT、Claude、Gemini等)进行测试,步骤如下:

  1. 新建对话:为避免上下文干扰,务必开启一个新的、干净的对话。
  2. 复制提示词:将上文的核心提示词(如英文原版或中文版)发送给模型。
  3. 保存并查看:将模型返回的SVG代码完整保存为 pelican.svg 文件(注意移除Markdown代码块标记),然后用浏览器打开该文件,观察渲染结果。
  4. 重点观察“关系”:不要只评判“画得好不好看”,而要检查:
    • 鹈鹕是否坐在车座上,而不是飘在空中?
    • 它的翅膀是否伸向车把?
    • 它的脚是否接近或踩在踏板上?
    • 车轮、车架、链条的相对位置是否符合基本常识?

鹈鹕测试是一个精巧的“压力测试”,用极低的成本暴露模型在逻辑、空间和代码生成交界处的短板。不过,随着模型能力整体提升,这个单一测试的区分度已不如早期,Simon Willison本人也指出,它现在更适合用于同一模型家族内部不同版本或推理档位的横向对比。尽管如此,它依然是快速感知模型“状态”的一个有趣窗口。