让 AI 画一只骑自行车的鹈鹕
AI 圈里有一道很有名的“考题”:让 AI 用 SVG 代码画一只骑自行车的鹈鹕。开发者 Simon Willison 每次遇到新模型,几乎都会拿这道题测一测,看它画得怎么样。
题目听起来像在开玩笑,但它其实很能看出 AI 的水平。下面有两个 AI 做的版本,可以对比着看。
为什么这道题难
- 没有现成的图可以参考。现实里几乎没有鹈鹕骑车的照片,AI 没法“照着画”,只能自己想清楚:鹈鹕长什么样,自行车由哪些部分组成,鹈鹕坐上去以后脚该放在哪里。
- SVG 是代码,不是画笔。每个圆、每条线都要写成坐标和数字,AI 在写的时候通常看不到画出来的样子,全靠“脑补”。
- 自行车本身就难画。就算是人,凭记忆画自行车也经常把车架连错。
常见的翻车画面有:鹈鹕飘在车子上方、脚够不着踏板、车架少了一根管子、标志性的大嘴巴被画成一根细棍。
Claude 版:会动的鹈鹕
第一个是我和 Claude 一起做的版本,还让它动了起来:车轮在转,脚踩着踏板,头会跟着节奏轻轻点,云和路面往后退。
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 画出来的差别很大,有的很可爱,有的会让你笑出声。