返回文章列表

让 AI 画一只骑自行车的鹈鹕

AI 圈里有一道很有名的“考题”:让 AI 用 SVG 代码画一只骑自行车的鹈鹕。开发者 Simon Willison 每次遇到新模型,几乎都会拿这道题测一测,看它画得怎么样。

题目听起来像在开玩笑,但它其实很能看出 AI 的水平。下面有两个 AI 做的版本,可以对比着看。

为什么这道题难

  • 没有现成的图可以参考。现实里几乎没有鹈鹕骑车的照片,AI 没法“照着画”,只能自己想清楚:鹈鹕长什么样,自行车由哪些部分组成,鹈鹕坐上去以后脚该放在哪里。
  • SVG 是代码,不是画笔。每个圆、每条线都要写成坐标和数字,AI 在写的时候通常看不到画出来的样子,全靠“脑补”。
  • 自行车本身就难画。就算是人,凭记忆画自行车也经常把车架连错。

常见的翻车画面有:鹈鹕飘在车子上方、脚够不着踏板、车架少了一根管子、标志性的大嘴巴被画成一根细棍。

Claude 版:会动的鹈鹕

第一个是我和 Claude 一起做的版本,还让它动了起来:车轮在转,脚踩着踏板,头会跟着节奏轻轻点,云和路面往后退。

一只白色鹈鹕骑着红色自行车,车轮和腿在动
Claude 版:骑自行车的鹈鹕(SVG 动画)

GPT-6 Astra 版:海边兜风的鹈鹕

第二个是 GPT-6 Astra 做的。这只鹈鹕系着橙色围巾,沿着海边骑一辆蓝绿色的自行车,会眨眼,围巾会随风摆动。下面的按钮可以暂停或继续。

骑自行车的鹈鹕 一只长着大嘴巴、系着橙色围巾的鹈鹕,骑着蓝绿色自行车沿海边前进。双脚交替踩踏,车轮转动,围巾随风摆动。下方按钮可以暂停或继续所有动作。
兜风中
GPT-6 Astra 版:骑自行车的鹈鹕(点按钮可以暂停)

动画是怎么做出来的

两个版本的做法不太一样。Claude 版整个动画就是一个 pelican.svg 文件,没有用视频,也没有用 JavaScript。SVG 自带一种动画写法,比如让车轮的辐条绕着车轴一直转:

<g>
  <!-- 绕着点 (190, 300) 转一圈,0.6 秒,一直重复 -->
  <animateTransform attributeName="transform" type="rotate"
    from="0 190 300" to="360 190 300"
    dur="0.6s" repeatCount="indefinite"/>
  ……这里是辐条……
</g>

最麻烦的是腿:踏板转一圈的时候,膝盖的位置一直在变。所以先用一小段程序算出 24 个时刻的腿部位置,再把它们一帧帧写进动画里。路面上的白线和天上的云往左移,看起来就像鹈鹕在往前骑。

GPT-6 Astra 版用的是 JavaScript:每一帧都重新计算车轮角度、腿的位置和眨眼的时机,再更新画面。这样写更灵活,所以它能加上暂停按钮;缺点是不能像 Claude 版那样,当成一张普通图片直接放进网页。

你也可以试试

把下面这句话发给你常用的 AI:

用 SVG 画一只骑自行车的鹈鹕。

把它给出的代码存成一个 .svg 文件,用浏览器打开就能看到。不同 AI 画出来的差别很大,有的很可爱,有的会让你笑出声。