OpenAI的劲敌 Anthropic 再放大招,突然发布Claude 3.5 Sonnet。

经过「四木相对论」手搓测试,只能说这次Claude真的,又炸裂了。

先做个科普,Claude3家族有三个参数量级的模型,分别是:Claude 3 Opus(大杯)、Claude 3 Sonnet(中杯) 和 Claude 3 Haiku(小杯)。

这一次更新的Claude 3.5 Sonnet,是中杯的升级版,目前免费账号能直接使用,付费账号将获得更快速率和更多使用次数。

这次Claude 3.5 Sonnet在多模态、推理、代码能力等方面都有不错的表现。

更为惊艳的是,Claude 3.5 Sonnet 还推出了一个叫Artifacts 的功能。

这个功能真的绝绝子!它允许用户在完成输入后,直观看到Claude执行推理的结果,并直接展示生成的图片、代码等信息。

也就是说, Claude 在模型中植入了一个功能,让用户一眼就能栩栩如生地看到自己使用Claude的结果。

「四木相对论」在第一时间,使用Claude 3.5 Sonnet,纯纯用自然语言(无任何代码)创作了一款「卡通小人接金币」小游戏。

效果真的称得上......炸裂!

一个美好又简洁的开始

一个美好又简洁的开始

当进入新版Claude、或点击右上角用户头像-Feature Preview后,就能打开这个神奇的Artifacts功能。

这一次,「四木相对论」选择让Claude制作一个类似“接金币”的游戏

我们首次输入的Prompt,是对游戏的基本元素、规则的简单描述。

能看到,"工具人"Claude被要求用代码生成一个卡通人物,并按规则移动人物去接金币。

我们在Prompt中给Claude挖的“坑”也不少。

比如,允许用户通过键盘上的方向键交互;对元素的尺寸描述使用了相对大小,而不是绝对大小;并且对动画的运动规则和时长也进行了约束。

指令发出后,Claude反应迅速,在页面左侧展示出当前进行的拆解任务,右侧的Artifacts区域会实时展示生成的代码。

仅用了大约十几秒(好快),Claude就完成了接金币1.0版本的代码,并直接运行在了Artifacts区域。

能看到,这个第一版的接金币小游戏的基本功能已经具备。

「四木相对论」实际测试,卡通形象能够根据键盘的左右方向键实现移动,也能接到金币并实现加分。

(太了!!)

但是这个1.0版本也有着显而易见的问题。

首先是游戏画面较宽。

受限于Artifacts较窄的区域,我们无法看到超过宽度部分的画面,并且当人物向右移动到需要滑动页面才能展示出的区域时,左上角的得分也会滑出画面。

此外,虽然从左上角的分数变化可以知道人物成功接到了金币,但金币并没有消失,而是会穿过人物继续运动。

最后,分数也不是每次加1,而是有+12、+14两种随机变化。

追(事)求(儿)卓(很)越(多)的「四木相对论」怎么可能就此停止!

于是,我们继续尝试对上述的问题优化,对Claude提出了整整六个优化点。

其中比较难的是,Claude需要通过对相对位置的描述,增加金币被接到后消失的逻辑。

这里,我们的Prompt只写了“当金币模型的下边缘接触到人物的上边缘时,金币消失,分数增加”。

这意味Claude不仅得准确找到两个元素,还得分别计算上下两个边缘的位置。

(是不是很像接到老板需求的牛马)

另外,1.0版本中人物的移动不够平滑,我们也要求Claude尝试通过“需要使得运动更为平滑”的指令来在2.0版本中修复。

指令发出,开始生成代码。

聪慧的Claude,这次还体现出细心的特质——在Artifacts中,它除了显示优化后的代码,还贴心地在注释部分标注出此处分别是在响应哪一个命令。

(Claude给出注释)

仍然是大约十几秒的时间,我们成功获得了接金币游戏的2.0版本。

(优化过的2.0版本)

输入的6条优化指令,全部都被准确的执行了。

当然,请忽略Claude认为这个诡异的、有着奇怪刘海儿和微笑的粉红色圆脸,是更“可爱”的形象。

能看到,这一版本Claude几乎进行了所有我们提出的优化:

  • 画面缩小到了Artifacts能显示完全的区域,并增加了边界线;
  • 人物的移动非常平滑;
  • 金币的掉落速度更快了;
  • 成功实现金币被接到后消失的逻辑,消失的时机完全符合描述。

只有“分数的递增”遇到一个可能是偶发的bug(后续这个问题自动被Claude修复了),也就是当分数递增到14后,下一个分数直接变成了489。

2.0版本已经是一个比较完整的小游戏了。

一个0代码基础的小白,能依靠Claude光速做出这种效果已经非常超出预期。

但或许正因一切实现得太过简单,我们决定继续进行更为复杂的优化。

希望能难倒Claude。

开始“封神”

开始“封神”

3.0版本,我们进行了更为复杂的优化逻辑描述。

我们要求Claude对画面背景进行优化:

  • 分别生成天空和土地来填充游戏画面;
  • 还对金币的样式进行了约束,不再希望使用一个黄色的纯色圆形;
  • 增加了一种掉落物体,除了金币,现在还可能会掉下来炸弹,被接到后会进行扣分;
  • 增加了分数变化时的动画,不再是仅仅变更数字。

也就是说,这次Claude接到的任务不仅包括视觉迭代,还要实现更复杂的游戏逻辑。

这一次,在生成的代码中,Claude自己给炸弹出现的概率增加了定义。

(Claude自己进行概率注释)

这又一次震惊了我们。

我们给定的Prompt其实疏忽了这一点,没有对炸弹和金币分别出现的概率进行说明。

而Claude的代码中自动增加了70%出现金币,30%的概率出现炸弹的、一个非常合理的比例。

按照常理推测,如果用户并未定义概率,增加一种掉落物体后两种物体的掉落数量应该是1:1的。

但似乎Claude“知道”这个游戏应该怎么玩,金币的数量应该高于炸弹的数量,所以它自己设定了一个合理值。

(也就是说,在游戏逻辑上,这次我被Claude打败了......)

再来看Artifacts给出的展示,3.0版本看上去非常完整:

卡通形象不再“奇怪”;金币和炸弹会同时掉落;有加分也有减分;分数能够准确计算;分数的变化也会有相应的动画。

(3.0版本的游戏)

再仔细看这个动画Demo,我们又有了惊人的发现!!

这次,Claude不仅“智慧”地自己增加了炸弹概率,还“自作主张”对分数加减,给出了两种不同的颜色。

而我们在Prompt中并未说明,接到金币加分和接到炸弹减分,并使用不同颜色动画展示的需求。

可是,Claude给到我们的效果,加分使用了绿色的“+1”,减分使用了红色的“-10”。

(它不仅是真的会玩,还真的会教别人玩......)

再难一点,让我们增加“道具”这个概念。

4.0版本的优化Prompt中,我们增加了“护盾”这个道具,尝试难倒Claude。

(增加护盾要求)

这里,我们要求除了掉落金币和炸弹外,还可能掉落护盾,让Claude生成一个盾牌样式的图片,并规定了护盾物体的尺寸、运动速度。

我们还向它描述了,当玩家接到护盾后,人物需要展示的动画,以及未来10秒即使接到炸弹也不会扣分的“特效”。

除了护盾的改动外,还额外增加了一次加10分的“大金币”、缩小了地面贴图的尺寸、增加了装饰天空的白云。

这一次,Claude直接“封神”。

白云、大金币、护盾这些元素,都成功出现在了画面中。

并且,它设计的人物在接到护盾后,周边显示出一圈蓝色的边。护盾让人物在抵挡炸弹的同时,也能够正常接到金币加分。

(4.0版本的游戏)

10秒之后,代表护盾的蓝色边框会自动消失,接到炸弹会正常扣分。

这逻辑,真的是太完整了。

终于还是遇到了“bug”

终于还是遇到了“bug”

体验过让人惊艳的4.0版本后,我们还是不满足。

于是在5.0版本中,Claude被要求增加更为复杂的“技能”概念、给游戏增加一个结束状态,以及在每一次运行时保存并计算历史最高分。

但是没想到这次输入后,Claude在生成代码到一半时,就报错了。

从给到的提示来看,这次Claude生成的代码太多,已经超过了单次回复允许的最大长度,所以代码还没有完全生成完,就中断了任务。

当然,大家也可以氪金来解锁......

我们决定继续斗智斗勇,尝试将完整版4.0的代码进行下载,Claude创建并保存了一个.tsx的文件。

接下来,开启新对话,上传代码,删除可能占用代码字数较多的“人物技能”部分的prompt,继续尝试进行5.0的优化。

果然,在清空了上下文、缩短了可能的生成代码长度之后,Claude这次完整生成了所有代码。

有意思的是,尽管删除了“技能”的设定,5.0版本的代码长度也依然很长,导致Claude还没说完解释的话,就中断了任务。

不过呢,代码部分已经完成生成了,所以并没有太大影响。

5.0版本的优化第一次出现了比较大的偏差。

(5.0版本的的游戏)

除了白云成功增加了动画、地面增加了小草(非常小,仔细看能看到地上有3个小凸起)之外,最主要的游戏结束逻辑并没能正确生成。

按照预期,当分数降至-30或以下时,游戏应该暂停,画面上显示出Game Over字样,并同时显示历史最高分。

但在这次实际生成的demo中,Claude并没有实现这一功能,而是清空屏幕、重置分数,直接重新开始了游戏。

我们尝试通过描述来解决bug,也就是直接告诉Claude,“当前版本的代码中,不会暂停游戏,而是将分数清零后,直接重新开始游戏”,同时一并修复那肉眼基本不可见的小草。

Claude先是立刻表示了歉意,承认“我说的对”,然后又迅速改了一版代码。

结果,只有小草变大了(虽然也不怎么像草),游戏结束的bug并没有修好,没有暂停画面,没有Game Over,也没有“重新开始”的按钮。

(它终于出Bug了)

让用户看得见效果

让用户看得见效果

这次综合体验下来,虽然Claude最后并没有帮助我们实现全部的想法,但整体的体验还是让人不由得赞叹,技术小白终于能够基本丝滑“零门槛”地制作游戏了

之前,其他大语言模型也可以根据描述生成代码,但对没有任何研发经验的用户来说,很多时候仍不知道拿到这些代码后应该怎么“玩”这个游戏。

并且,用户不能看到运行效果,也就不知道这些代码到底有没有问题,是不是符合预期。

然而,这次使用了更强模型的Claude,通过神奇的Artifacts功能,丝滑解决了这个问题。

尽管单次输入输出的token数、单轮对话上下文的token数等还存在限制,但就和Suno一样,现在的Claude能让用户立刻看到自己的产物,立刻优化打磨,真正“玩”起来。

不论是模型能力还是用户体验,这一次,Claude 3.5 Sonnet赢了。