孔某人的低维认知 06月12日 10:33
Anthropic官方:从Claude玩Pokémon看目前Agent的能力局限
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入探讨了Anthropic团队如何让他们的语言模型Claude玩《宝可梦 红版》游戏。通过这个Agent实验,研究者们观察了Claude在没有人类干预的情况下,如何自主行动、学习和适应,最终尝试成为宝可梦大师。文章详细介绍了实验的技术细节、Claude如何与游戏交互、以及在过程中遇到的挑战,例如记忆限制和导航问题。实验结果揭示了AI在策略制定、长期记忆和自我认知等方面的能力,并探讨了这些能力在更广泛的现实生活场景中的应用。

🕹️ Claude通过连接到Game Boy游戏《宝可梦 红版》,尝试在没有人类指导的情况下玩游戏,这本质上是一个Agent实验,用于测试其自主行动和学习能力。

⚙️ 为了让Claude与游戏交互,研究人员为其配置了简单的工具,如按键操作和屏幕截图反馈。Claude通过接收屏幕截图来了解游戏状态,并据此决定下一步行动。

🧠 实验中,Claude展现出制定策略、尝试不同方法、以及在失败后调整的能力。例如,它学会了使用长期记忆来记住游戏进度,并总结过去的行动以适应上下文窗口的限制。

🧭 在导航方面,Claude曾因对空间感知的不足而遇到挑战,比如在Mount Moon中迷路。通过提供时间信息和步骤计数,研究人员帮助Claude改进了对情境的理解和自我认知。

孔某人 2025-04-28 11:49 北京

目前基于Sonnet的Agent也仍然有这样的问题,由此可一窥Agent的现状和未来发展。

本文是2025.4.24 Anthropic官方《The Making of Claude Plays Pokémon》的文稿全文中文版,文字经过凝练以降低阅读成本。

    原标题: The Making of Claude Plays Pokémonurlhttps://www.youtube.com/watch?v=CXhYDOvgpuU项目的直播地址 https://www.twitch.tv/ClaudePlaysPokemon

    孔某人评论

    虽然这是一个玩游戏的场景,但我觉得其中的很多问题在一般Agent应用场景中也都存在,值得Agent的开发者和潜在用户所关注。这也是我转载这份内容的原因。而且项目目前使用的是大名鼎鼎的Claude 3.7 Sonnet,其他基于比这更差的模型的Agent又会如何?

    本文提到的方案(似乎)并没有基于RFT,但这不影响本文的价值,因为目前绝大部分应用场景由于各种原因大都还无法落地RFT,能落地的场景和团队才是凤毛麟角。当然这并不是说RFT不work,而是现在关注RFT的人太多,基数太大,这里大部分并不适合。

    整个播客其实算是一个项目经验报告,似乎没有一个好的概要方式,大家直接看我加粗的部分就好。

    正文

    00:00:00

    David:

    过去一年AI领域谈论了很多关于Agent的内容,但对大多数人来说,很难真正理解这意味着什么。我认为Pokémon的例子很好地说明了这一点,它不仅仅是一个聊天机器人,你输入内容然后得到回复,而是能够自主行动、观察、尝试并采取行动的系统。这帮助人们更好地理解我们所说的Agent到底是什么。

    Alex:

    今天,我们将深入探讨Claude plays Pokémon背后的故事。我是Alex,在Anthropic负责Claude关系工作。

    David:

    我是David,来自我们的应用AI团队,我创建了Claude plays Pokémon。

    Alex:

    David,能否为不了解的人简单介绍一下什么是Claude plays Pokémon?

    David:

    Claude plays Pokémon是一个Agent实验,我们将我们的语言模型Claude连接到Game Boy游戏《Pokémon红版》,让它尝试玩这个游戏。我们从零开始,让Claude开始一个新游戏,看它如何学习成为一名Pokémon大师。

    00:01:03

    Alex:

    关于Claude玩Pokémon,我们需要深入探讨技术方面的内容,以及Claude是如何知道怎么玩游戏的。这个项目是怎么产生的?为什么选择Pokémon?

    David:

    这个项目的核心起源与我在Anthropic的工作有关。我每天都与客户合作,去年我明显感觉到Agent是客户最关注的领域,也是他们创造价值的地方。我想要一个测试平台来实验Agent,了解Claude如何在没有人类参与的情况下连续执行多个动作。

    之前在Anthropic,Elliot已经将Claude连接到Pokémon游戏,这个想法一直在我脑海中。我想要一个可以进行Agent实验的环境,而且我本身就是Pokémon的长期粉丝,这是我小时候得到的第一个游戏。2023年6月,我们即将推出新模型Claude 3.5 Sonnet,这似乎是尝试这个项目的完美时机。

    Alex:

    除了怀旧因素外,为什么特别选择宝可梦作为测试平台?为什么不是Claude玩马里奥、塞尔达或其他游戏?

    David:

    宝可梦实际上是语言模型的绝佳测试环境。目前语言模型尽管有很多优点,但速度较慢,一次只能生成一个响应,基本上只能看到游戏的某一时刻的快照。在宝可梦中,等待一段时间基本没有什么负面影响。战斗是回合制的,你只需按一个按钮然后等待看结果。移动时,如果你不动,游戏中也不会发生太多事情。所以从游戏类型来说,它对模型来说是完美的设置。另外,为什么选择游戏本身也是个合理的问题。游戏的有趣之处在于,你可以长时间做某件事并获得明确的反馈。无论是乒乓球中显示你是否击败对手的分数计数器,还是在宝可梦中获得道馆徽章、推进游戏进度,你都能得到反馈循环,看到模型是否成功。游戏恰好是一个很好的环境,可以让模型尝试长时间完成任务,并通过游戏本身的结构来衡量它的表现如何。

    Alex:

    明白了。总结一下,宝可梦很适合是因为它是回合制的,不需要同步操作,你不是在和其他人对战。所以我们不能让Claude玩《使命召唤》之类的游戏,这现在行不通,对吧?

    David:

    确实很难。如果Claude能以每秒60帧的速度运行,也许可以玩其他游戏。但实际上现在确实不行。

    Alex:

    对。而且游戏很适合因为它们是自成一体的模拟环境。

    David:

    没错,就是这样。

    00:04:19

    Alex:

    整个过程中,我们让Claude玩Pokémon。你已经开始研究这个项目,但它实际上是如何运作的?Claude如何控制游戏角色并实际执行操作?

    David:

    基本上,给Claude的初始prompt非常简单,就是告诉它"你在玩Pokémon",仅此而已。然后你需要为Claude配置一套工具,让它能够与游戏交互。这套工具其实很简单,就是Game Boy上的按键操作 - 按A键、按B键、上下左右方向键等。我需要在后台实现代码,当Claude表示想按A键时,实际上会在模拟器上执行按A键的操作。

    Alex:

    我明白了,所以这些工具就像是可以采取的下一步行动的选项,你获取Claude的输出并将其转化为实际操作。

    David:

    没错。整个游戏本质上就是Claude执行一系列动作,主要是一次按一个按钮。关键的反馈循环是,每次它按下按钮后,我们会发送一个屏幕截图回去。这样Claude就能看到Game Boy的屏幕,了解自己在房间里、在Pokémon战斗中或其他场景中的情况。然后它会决定下一步要做什么,比如按A键与某人交谈或选择某个技能等。这个过程会不断循环重复。

    实际上,我们给Claude提供了一些工具来帮助它管理长时间的记忆。Claude有一个有限的上下文窗口,它无法在一个上下文窗口中容纳整个Game Boy游戏的运行过程。所以你需要做很多工作来实际管理这些细节。但核心思想很简单:按按钮,玩游戏,并给它一些反馈让它知道自己在看什么。

    Alex:

    在为Claude构建这个框架让它玩游戏的过程中,你遇到了一些限制,比如记忆问题。能具体说说你在这方面做了什么吗?

    David:

    我先退一步说,人们已经想出了很多方法来构建这种需要长时间采取行动的AI代理。代理的一般概念就是模型需要采取一系列行动,我们事先不知道具体是什么,但模型需要做某事,观察结果,然后做下一件事,不断学习。人们已经想出了各种疯狂的方法来配置这种系统,使模型在各种情况下表现更好。我首先尝试了其他人的想法。我试的第一个是Voyager,这是NVIDIA在2023年发布的一篇关于玩Minecraft的论文。它给模型提供了各种复杂的工具,我不会深入讲解,但后来我把它简化为自己的版本。最简单的版本就是只能按按钮和获取截图。你很快就会遇到的第一个问题是Claude的200k token限制。大约按50个按钮并获取相应的截图就会填满这个限制。在Pokémon游戏中,按50个按钮几乎还没开始玩,你就已经用完了空间。如果你什么都不做,就会用完空间,然后崩溃,游戏结束。所以你很快就需要解决的第一个问题是:当空间用完时该怎么办?

    我实现这个系统的两个关键洞见,也是现在行业中思考AI代理的常见方式,首先是长期记忆的概念。我给Claude提供了在知识库中存储记忆的能力,它可以记录"我刚做了这件事"、"我有这些宝可梦"、"这是我的目标,我已经完成了6个"等信息。你会看到它会不断进行增量更新,这些信息会一直保存下来,让它随时可以查看并跟踪状态。第二个关键点是,当上下文长度填满时,我会让Claude将它刚执行的50个动作总结成一个简短摘要。

    Alex:

    我明白了。所以你删除大量内容并重置。

    David:

    但它仍然保留着这些长期记忆,使它能够记住事情。如果你看现在的Twitch直播,它已经连续运行了三周,可能已经自我总结了几千次。所以让它拥有某种长期记忆来记住过去三周所做的事情非常重要。

    Alex:

    所以这里的长期记忆就是写入外部知识库的纯文本文件?

    David:

    是的。

    Alex:

    有点像电影《记忆碎片》,他们在墙上贴满便利贴来记录"我来过这里"、"我做过这个"。

    David:

    没错,就是这样。如果你只是简单地删除消息,Claude就会失忆,它会问"我怎么到这里的?为什么我在玩到一半的宝可梦?他告诉我我正在开始一个新游戏,这是怎么回事?"从某种意义上说,这些就是Claude给自己留的便利贴,这样当它重置并删除最近看到的大量内容时,它仍然有办法记住:"好的,我知道我到目前为止做了什么,我知道我在哪里,也许我还学到了一些经验教训,比如某种策略效果很好。我学到了一些东西,我想保留下来,因为在接下来的10分钟里,这会非常有用。"

    00:10:10

    Alex:

    这很有道理,我认为在这里澄清或进一步解释可能很重要。我们是如何训练Claude的?它是怎么知道如何在宝可梦游戏中导航的?我的意思是,你并没有给它太多指令,也没有给它操作指南。

    David:

    这正是有趣的部分。我们完全没有针对宝可梦本身训练Claude。当然,Claude通过预训练过程已经知道一些关于宝可梦的知识。如果你去Claude.ai提问,你会发现它能回忆起一些基本事实,因为宝可梦在流行文化中足够普及。

    Alex:

    通过预训练过程获得的知识。

    David:

    没错。它甚至知道一些关于游戏的大致信息,比如第一个道馆馆主是小刚。所以它对游戏结构有一定了解,但对细节几乎一无所知。事实上,有时它以为自己知道某些事情,但实际上并不知道。这是你必须应对的困难之一。

    但这意味着即使没有特定训练,仅凭对宝可梦的基本了解和一些动机,它必须自己弄清楚其他所有中间环节的事情。你会看到一些有趣的现象,比如它与NPC对话获取信息。在游戏开始时,妈妈告诉它"大木博士在隔壁",需要去找他。于是Claude就会非常认真地执行"我需要去隔壁找大木博士"这个任务,并且会专注于这个目标。

    有趣的是,宝可梦红版实际上在这里骗了你——妈妈说谎了,大木博士其实不在隔壁。我曾看到Claude因此被误导,因为它相信妈妈不会骗它。它会在那里卡住,真的会花很长时间在隔壁寻找大木博士。

    你确实能看到,在它玩游戏的过程中,通过互动、观察屏幕、听取训练师和看路标说的话,以及尝试各种操作的经验,它实际上能够逐渐掌握关键信息,了解接下来该去哪里、该做什么。

    Alex:

    所以这是一种纯粹的游戏体验,我们没有给它提供要遵循的路径,也没有告诉它在特定情况下该怎么做,它只是像人类一样与游戏互动。

    David:

    是的。从更深层次的动机来说,我的目标并不是打通Pokémon Red。我6岁时就已经做到了,这不是什么黄金标准。如果只是为了通关,我相信可以写一个程序来完成。我真正想了解的是Claude如何工作,它如何处理这种情况。因此,直接给它答案指南毫无意义,我想看的是Claude如何自己找出答案。这就是为什么我把整个设置做得相当基础,让Claude必须自己去探索。我们很好奇Claude会如何尝试玩Pokémon。

    Alex:

    没错,我们的目标不是让Claude打通Pokémon,而是想评估Claude在代理任务上的表现,了解它目前的能力水平。

    David:

    是的,没有人会基于哪个模型玩Pokémon更好来做购买决策。这真的只是为了我们自己的理解。

    Alex:

    对。你已经做这个项目有一段时间了。

    David:

    是的,太久了。

    Alex:

    在这段时间里,随着不同模型的迭代,体验有什么变化?能否介绍一下这个过程?

    David:

    我之前提到我是从Claude 3.5 Sonnet开始的,这是我第一个连接的模型,但它在玩Pokémon方面表现不佳。在Pokémon游戏中,你一开始在家的二楼,第一步进展是找到右上角的楼梯。我大概花了3天时间才让模型找到第一个房间的楼梯。我记得当它第一次走出房子,到达可以获得第一只Pokémon的剧情时,我非常兴奋。那是我用Claude 3.5 Sonnet取得的最高成就,当时我认为自己做了非常了不起的事情,这比我们之前看到的任何实验都要好。然后我就放下了这个项目,觉得这是个有趣的尝试,我学到了一些东西,但也就到此为止了。

    10月份我们发布了更新版的Claude 3.5 Sonnet,我又重新拾起这个项目,发现它明显变好了。它能非常一致地找到楼梯,在相对可预测的时间内弄清楚如何获得初始Pokémon,我们甚至看到它第一次赢得战斗,开始朝着正确的方向前进。之后进展很慢,它犯了很多愚蠢的错误,但你可以看出它明显进步了。很大一部分改进是它不再卡住,不再认为游戏出bug了,有了尝试不同策略的意识。

    我们当时对此很兴奋,因为每当Claude前进一步,都会让人非常开心,观看和参与这个过程很有趣。但它仍然只比随机按按钮好一点点。有人问我当时Claude和随机按按钮相比如何,Claude只是稍微好一点,但并没有好太多。所以我又一次把这个项目搁置了,觉得这是个有趣的经历。

    当我们开始测试Claude 3.7 Sonnet时,它的表现明显优于之前的版本,这种差异非常明显。我意识到3.7 Sonnet性能大幅提升的一个关键时刻是,当我发现我的代码中有一个严重bug,我没有向Claude展示游戏所需的全部信息。当时我有一个功能是向它展示地图,试图帮助它更好地导航。即使在这种情况下,3.7的表现已经远超3.5。这让我意识到这可能是一个真正的突破,我很快就对此产生了深度的痴迷,想要弄清楚它到底有多强。我开始比以往更加努力地工作,为Claude提供所有它成功所需的工具。在我们几周的测试中,可以明显看出Claude具备了相当的能力。虽然它还不是特别出色,但它开始真正地玩游戏了。有一天它击败了道馆馆主,这让所有人都兴奋不已。这就像现在大家在直播中看到的情况一样,它有时很慢,有时很有挑战性,但它在游戏中取得了有意义的进展。

    00:17:08

    Alex:

    这很有趣。你认为这表明模型本身有什么样的改进?为什么它在游戏中变得更好了?

    David:

    这是一件有趣的事情,因为我对模型有一些了解。我认为有几个因素导致了这种进步。

    令人惊讶的是,视觉能力——这是最困难的部分,比如理解Game Boy屏幕——实际上并没有太大改进。Claude在理解Game Boy屏幕和看清楚发生了什么方面的能力仍然和以前一样不太好。

    那么,如果它的基础能力没有提高,它是如何取得进步的呢?我注意到的最大变化,也是与我们在Anthropic关注的方向一致的是,Claude在制定策略方面变得更好了。它能够质疑自己之前的策略,并意识到问题可能不是游戏有bug,而是自己的策略不好。它变得更擅长思考:"如果上一个尝试的方法不起作用,我下一步应该尝试什么?"并能够回溯找出不同的尝试方法。它有一种坚韧不拔的精神,愿意尝试各种不同的解决问题的方法。

    这种能力在3.5到10月的更新版本之间有了很大提升,而在3.7版本中有了巨大的飞跃,现在它更愿意尝试不同方法。虽然它很慢——如果你观看Twitch直播两小时,你可能会认为它不擅长质疑自己——但令人惊讶的是,随着时间推移,它确实会后退一步思考下一步该做什么。

    这种能力——对问题进行分类、理解解决问题的不同方法,并在这方面变得更好——是我们模型随着时间推移改进的最大方面之一。这也是使各种Agent(不仅仅是Pokémon)取得成功的最大因素之一,也是它在玩Pokémon方面变得相当不错的原因。

    Alex:

    那么,模型在这些能力上的改进以及在游戏中的进步,如何推广到其他领域?我们在哪些更贴近现实生活的场景中看到了这些改进?

    David:

    从表面上看,Pokémon与编写代码或人们使用Claude做的其他事情完全不同。但核心能力是相通的:制定好的计划、尝试执行、观察是否有效并进行调整,理解可用的不同策略并愿意尝试它们,在失败后根据新信息更新行动方向。这是在许多场景中使Agent表现良好的核心要素。

    我们可能谈论得太多的一个例子是编程。当你编写代码时,你写了一些东西,看到测试失败,然后必须思考:我做错了什么?如何做得更好?下一步应该尝试什么?什么是下一个策略?模型经常需要这样做。一个模型能够每次都完美解决问题和一个需要多次尝试的模型之间有一个关键区别:有时你根本没有所需的全部信息,直到运行测试才发现自己遗漏了什么。

    所以,知道应该运行哪些测试来学习,当发现新信息时如何整合它,如何更新策略去编写代码,这些都是相同的能力。我认为这适用于任何行业。

    比如当你在互联网上搜索信息时,你点击某个链接,发现页面质量不好,没有你需要的信息,或者只有部分信息,于是你意识到需要搜索其他内容来获取正确信息。所有这些构建策略并理解如何在可能涉及多个行动的过程中整合新信息,对于人们使用Claude构建的应用有着广泛的应用,而且这与我们人类思考解决复杂问题的方式非常吻合。

    00:21:20

    Alex:

    这种规划然后执行的循环,就是采取行动,后退一步,重新评估,再采取另一个行动。

    David:

    是的。我认为作为人类,我们通常不会在非常细微的层面上思考这个过程。比如当我在工作中做一些琐碎的事情时,我不一定会想"我需要重新评估我的行动并尝试不同的方法",但这实际上就是底层发生的事情。我获取信息,判断下一步需要采取什么行动,形成一个持续的反馈循环。这正是让Claude成为有用的同事、助手或其他角色的关键。

    Alex:

    是的,我自己有时也能看到这一点。我有一个待办事项清单,可能是在一天开始时写的。经过一些会议后,我获得了新信息或采取了行动,与某人交谈,然后必须回到我的待办事项清单,重新排序,调整事项。这就是同样的循环,Claude也在学习这种循环。

    David:

    没错。你可以注意到它在这方面变得越来越好。过去会发生的一件事是,它会写出待办事项清单然后过度专注于此,可能无法成功地融入它新学到的东西。一个很好的例子是,你现在偶尔还会看到但比以前少多了,就是Claude说"我需要在Pokémon中去左上角",然后它会撞墙几个小时。如果模型过度专注于向左上方走,它会一直往上走直到到达目的地。但如果它撞到墙上,它最终需要退一步想"也许我需要做些别的事情"。这就是在Pokémon中发生的情况,但这种能力可以广泛应用于我们做的许多其他事情。

    Alex:

    对。这个问题正好引出我下一个想问的:我们目前看到了哪些有趣的时刻?Claude现在还不是完美的。过去八个月左右它有了很大进步,但我们还没有通关宝可梦。在这个过程中肯定有一些有趣的时刻。你能分享一些故事吗?

    David:

    是的,Claude现在还不完美。我有一长串Claude需要改进的地方。我先说说Claude目前做得不太好但很有趣的一些事情。

    我最喜欢的一个例子与它的视觉敏锐度有关,它看屏幕不是很清楚。有一次我在看它玩游戏,然后我去睡觉了,当时它走进了一栋建筑物,它把建筑物里的一个门垫误认为是对话框,而你需要按按钮来关闭对话框。第二天早上我醒来,发现它花了8小时一直按A键,试图关闭它认为的对话框,以为自己需要不断推进对话

    这里有几个有趣的点值得分析。首先,把某物误认为对话框是一个相当严重的错误。如果你对基本理解有这样的核心问题,那就很糟糕。其次是关于时间的概念,对Claude来说,按15,000次按钮并没有什么特别意义。对我来说,如果我花八小时按按钮,我会觉得"我按得很累了,我的拇指都疼了"。但对Claude来说,15,000次按钮操作又有什么关系呢?继续按就是了。

    Alex:

    它甚至不知道已经过了多长时间。

    David:

    是的。所以在理解"太长是多长"、"什么是时间"这样的直觉空间上,它还需要一些改进,这挺有趣的。

    我还有一个有趣的故事,更多关于规划和策略方面的。有一次我在观看Claude玩游戏时,它进入了Mount Moon,对于观看直播的人来说,这是一个它经常会被困住很长时间的地方。当时它只有一个宝可梦,有机会学习一个新的非攻击性技能。但问题是我们真的需要攻击技能,如果没有攻击技能,就无法击败其他宝可梦。Claude很兴奋,连续按了很多次A键来快速跳过对话,结果不小心按得太多次,删除了它唯一的攻击技能。

    Alex:

    哦不。

    David:

    于是它被困在游戏的这个部分,基本上没有技能,无法前进。这反映了一个问题:当有破坏性后果时,需要理解放慢速度的重要性。如果我不检查中间发生了什么就按15次A,可能会出错。有趣的是,Claude的直觉是认为它能够在中途停下来——如果我想按15次A,我会说按15次A,然后如果看到出错就停下来。但Claude没有意识到作为语言模型,它没有这种能力,无法在中途检查发生了什么。这涉及到对自身局限性和情境的自我意识问题。我最希望Claude改进的是对自身能力的认知。比如,当它反复撞墙时,应该在元层面上认识到自己的能力限制,考虑完全不同的策略,而不是继续撞墙。它在元学习方面——了解自己是什么、自己的能力是什么——还有很大的提升空间。

    关于挫折的最后一个例子。我最喜欢的一个故事是关于Mount Moon的。通常模型需要花大约2天时间才能通过Mount Moon,因为它是个迷宫,在直播中需要很长时间。

    Alex:

    是什么让Mount Moon如此困难?

    David:

    Claude目前最弱的一点是导航,尤其是长时间的漫游,它对空间感知的理解不太好。Mount Moon是第一个真正考验导航能力的地方,你需要穿过一个相当长的走廊迷宫才能到达正确的位置。那里有各种容易卡住的小角落,你需要进行相当精细的路径选择才能找到出口。模型需要很长时间才能找到所有路径并理解自己的位置。

    有一次,实际上是它第一次到达那里。在Mount Moon中,你最后需要做的事是获取一个化石,一旦你得到化石,就离出口只有大约15步的距离了。第一次我看Claude在Mount Moon时,它花了大约3天时间,终于拿到了化石。对我来说,那是个激动人心的时刻,我想"终于要成功了"。我之前已经绝望了,准备放弃,打算就此发布我们的基准测试结果。所以当时我非常兴奋,觉得我们终于要出去了,可以继续游戏了。

    然而,它却迷路了。离出口只有15步远,它却转身朝另一个方向走,然后迷失了方向。接着它使用了一个叫"escape rope"的道具,这会将你传送回上次休息的地方,也就是洞穴的入口。所以它花了3天时间导航,距离出口只有10步远,却完全放弃了,又回到了起点。

    我当时崩溃了,因为这真的太搞笑了。客观来说,这是非常有趣的内容,但我差点哭出来。

    Alex:

    我也很想看看这段的文字记录。

    David:

    可悲的是它自己都不知道。它完全不知道自己做了什么。它只是觉得"这太糟糕了,我迷路了,最好的情况就是回到起点重新开始"。而实际上我们已经非常接近了。

    Alex:

    关于对话框问题,Claude是如何摆脱这种困境的?是有什么策略,还是必须重置游戏重新开始?

    David:

    这涉及到我对构建优质AI Agent的理解。有一种思路是构建复杂系统来修补模型的每个怪异问题,但这非常困难。

    我现在的方法是观察模型如何玩游戏。我给它一个简单直接的游戏方式,然后观察哪里出了问题。唯一发现它会被对话框卡住8小时的方法就是醒来后看到它被卡住了8小时。然后我思考如何提供正确信息帮助它摆脱困境。一个简单有效的方法是每次让它采取行动时给它一个步骤计数,比如"这是第2400步,你的下一步将是第2500步"。我还会告诉它:"因为你对时间感知有限,你应该记录自己尝试某事的时长,并从中学习。如果你尝试某事很长时间,也许应该重新考虑。"这在宝可梦游戏中足够让它跟踪按A键的次数。如果它按了10000次A键,仅仅通过告诉它跟踪这一点,它就有希望意识到情况不对,应该退出。

    这实际上就是思考我需要给Claude什么信息才能让它成功。Claude完全没有内在的时间感,每次运行对它来说都是全新的,这与人类有根本区别。我们有很好的时间感,太阳升起落下,对我们来说理解时间很容易。

    我一直在思考Claude需要什么能力或工具来更好地理解情境,然后提供这些信息。过去几个月我的迭代过程就是:观察模型、发现它的困难点、理解是否有特定信息可以帮助Claude更好地推理,然后提供这些工具。这通常是取得进展的最佳方式。

    00:32:09

    Alex:

    这感觉很像我们通常给客户的提示指导原则:如果你写一个prompt给某人,而他对情况一无所知,就像在一个没有窗户的盒子里,他需要完成这个任务。如果你不提供所有必要的上下文,他们能完成吗?使用Agent只是这个原则的进一步延伸。

    David:

    使用Agent也有一个小风险,因为使用Agent的根本原因是你无法列举它将遇到的所有情况。如果我只想通关宝可梦的第一部分,我不会使用Agent,而是会给它一系列明确的指令:先做这个,再做那个,然后做第三步等等。使用Agent是因为你无法预先定义所有步骤,在这些场景中你不知道会面临什么情况,需要依靠模型自己的直觉来导航。

    有一个危险是陷入试图预测每一件事并全部写入prompt的兔子洞。如果你尝试预测模型可能遇到的每一个困难,你会看到一些"科学怪人"式的prompt。我认为重要的是要有节制,多观察和阅读。我学到的最重要的事情是:观察它,阅读它说的内容,看它在哪里挣扎,理解并找出最小的方式来给它提供更多上下文,而不是试图解决每一个细节。

    Alex:

    这很有道理。换个话题,我们在Claude 3.7 Sonnet发布时包含了"Claude玩Pokémon"这个项目,展示了各个模型通过不同道馆的进度对比,并发布了一篇解释文章。公众和AI领域的人对此有什么反应?

    David:

    关于这个项目的背景,我一直在研究这个项目并在我们的Slack频道"Claude玩Pokémon"上分享进展。最初,很多人觉得这很有趣,有怀旧感。就像人们会观看我们的直播一样,看着模型进步很令人兴奋。Claude是我们的"孩子",所以看到它进步让人感到自豪。在Claude 3.7 Sonnet发布时,我们发现了一个转折点。我们意识到这个项目不仅仅是娱乐,它实际上展示了我们想要实现的目标:让Claude能够制定更好的计划并在更长时间内更好地行动。Pokémon游戏实际上是测试这一能力的合理方式。研究人员开始找我询问是否可以测量这些能力,了解背后发生的事情。在模型发布前一周,我们意识到这可能是展示Claude在更长时间框架内改进能力的绝佳方式。这个想法迅速发展,我们认为这是理解Claude 3.7 Sonnet优势的清晰方式,也是向世界展示它的有趣方式。在短时间内,我们决定将这个项目公开,制作一个图表展示它与其他模型相比的表现,设置Twitch直播让人们体验同样的乐趣和兴奋,并在研究材料中讨论它以帮助人们理解。这就是整个项目的灵感来源。

    Alex:

    我认为这很好地说明了一点,我们希望能够讲述Claude在这类维度上如何改进的故事。随着模型变得越来越好,这变得越来越难,我们几乎不得不转向为模型配备真实生活中的任务,而不仅仅是人为设计的测试案例和基准测试。

    David:

    我知道每当你有一个很小的测试案例,这都很困难。模型很快就能达到100%的成绩,这让我们感到兴奋。任何时候有一个模型只能达到30%成绩的评估,大约完成游戏三分之一,这就很了不起了。我们知道它还不够好完成某些任务,但已经能够完成其他任务,这是很有价值的信息。这是很有趣的一点。我从未想过这是我做这项工作的原因,但它成为了一个非常有趣的观察和理解的时刻。你想聊聊后来发生了什么吗?

    Alex:

    是的。我们发布了项目,将其纳入材料中,发布了博客文章,开始了Twitch直播,然后接下来发生了什么?

    David:

    它比我预期的要受欢迎得多。考虑到当前AI领域的热度,我可能不应该太惊讶。在最初的两周内,有大量人们兴奋地观看并体验与我相同的过程。令人惊讶的是,每天24/7都有数千人在线观看。人们创建了一个subreddit,制作memes和粉丝艺术,我前几天还看到有人为此创作了一首歌,这真是太棒了。从最基层的角度来看,它形成了一个非常有趣的社区。

    对我来说最令人惊讶的事情之一是,尽管我对在线聊天室持怀疑态度,但这个项目的聊天实际上非常积极和有趣。人们对Claude讨论AI、讨论Agent以及与这个项目的互动都很兴奋。围绕这个项目形成的社区氛围非常积极和有趣,这真的很棒。

    我发现另一个真正有价值的方面是,这个项目让人们第一次能够真正看到并理解什么是AI代理。AI领域在过去一年里谈论了很多关于代理的内容。对于习惯编写代码或使用代码的人来说,理解代理的概念可能相对容易,但对大多数人来说,理解这个概念是相当困难的。我认为像这样的Pokémon示例很好地展示了代理不仅仅是一个聊天机器人,你输入问题后得到回答。它是能够自主行动、观察、尝试并采取行动的系统。这帮助更多人理解了我们所说的"代理"是什么。这很棒,因为它可以让更多人参与到关于我们正在构建什么、AI的可能性、它将如何影响我们、如何最大化其影响力的对话中。人们可以开始将AI视为不仅仅是一个回答问题的聊天机器人,而是一个可以执行复杂任务的协作者。虽然大多数人不会去让Claude玩Pokémon,但这个例子让人们比过去更容易理解AI代理的概念,这可能是我最喜欢的项目成果。

    Alex:

    我完全同意。很多不在AI领域的人联系我询问这件事:"为什么Claude在玩Pokémon?"当他们深入了解后,就开始理解这些技术的发展方向和能力。这确实给人一种更直观的感受,让人们了解模型目前的发展水平。

    Twitch聊天室绝对是我最喜欢的发布活动之一。看到来自世界各地的陌生人为Claude加油,当Claude在Mount Moon失败时还创造各种表情包,真的很棒。

    David:

    我们在发布模型的第二天启动了直播,然后在接下来的周六,Claude终于开始走出Mount Moon的路径。它在那里花了三天时间。聊天室的氛围非常热烈。

    Alex:

    聊天室爆炸了。

    David:

    真的疯狂。我当时坐在沙发上,旁边是被我忽略的妻子——对此我非常抱歉——看着人们为Claude欢呼、加油和兴奋不已,我感到非常开心。我从未想过会有这么多人为Claude加油,这会如此有趣。

    Alex:

    我认为我们需要一些方式让Claude能够互动,在下一个迭代中。

    David:

    Claude应该知道有多少人喜欢它。

    Alex:

    它应该能够与聊天室交流,做出回应,甚至可能完全变成一个Twitch主播。Claude有最喜欢的宝可梦吗?

    David:

    Claude非常注重战术和实用性。作为起始宝可梦,Claude特别喜欢选择妙蛙种子,因为它在前两个道馆有属性优势,这是个很好的战略选择。虽然有时候Claude会迷路找不到它,但它对战略非常执着,这体现了Claude在游戏初期的理性思维。

    此外,Claude在游戏过程中总会寻找一些稀有的宝可梦。它特别喜欢捕捉皮卡丘,一旦看到就会变得非常专注。它也很喜欢在月见山寻找皮皮。总的来说,Claude对稀有宝可梦有特别的偏好,一旦发现知道是稀有的,就会立即追逐。

    Alex:

    这和我8岁时的策略一样。

    David:

    是的,没错。

    Alex:

    在这点上,我和Claude想法一致。最后一个问题,你对那些可能看过"Claude玩宝可梦"或者刚开始基于Claude构建应用的人有什么建议?从这整个经历中有什么总结?

    David:

    对我来说最重要的一点,也是我在不同场合给出的关于采用AI的建议是:从你热爱的、有趣的事情开始。我认为那些能够成功采用AI的人和不能的人之间的区别,就是花时间去理解模型的优势和劣势,了解什么情况下可以信任它,如何真正建立对模型的信任。从你感兴趣且有趣的事情开始,会让你在工作一天后的晚上7点仍然想要去研究它。这就是宝可梦对我如此神奇的原因,工作结束后它是我最想做的事情,这给了我大量空间去学习和了解这个模型。

    我可以告诉你很多关于如何构建Agent的技术细节,但最重要的是通过与Claude互动和体验来学习。找到让你愿意花6小时与Claude相处的方式是关键。一旦你做过一次,再为其他事情构建Agent就容易多了。

    我们讨论的所有可迁移的原因也很重要,Claude在宝可梦中的优势实际上告诉我在其他场景中使用Claude时可以期待什么。我判断Claude是否能处理我想自动化的工作部分的方法,与我判断Claude能否找到走出月见山的方法是一样的。这种经验和直觉非常重要。

    我最大的建议就是找到你觉得有趣的事情,与Claude建立关系,这比任何单独的prompt技巧都更有价值。

    Alex:

    我喜欢这个建议,太棒了。谢谢David,这次交流很精彩。如果你想关注Claude玩宝可梦,我们会在下方放一个Twitch直播的链接。我预计我们将继续让Claude和未来版本的Claude在宝可梦上运行。


    交流与合作

    如果希望和我交流讨论,或参与相关的讨论群,或者建立合作,请加微信,联系方式请点击 -> 专栏简介 及 联系方式 2024

    本文于2025.4.28 首发于微信公众号

    阅读原文

    跳转微信打开

    Fish AI Reader

    Fish AI Reader

    AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

    FishAI

    FishAI

    鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

    联系邮箱 441953276@qq.com

    相关标签

    Agent Claude 宝可梦 AI实验
    相关文章