AI领域的agent是什么意思?

AI领域的agent是什么意思?

今年四月份读了斯坦福Generative Agent的论文,觉得特别好玩,花几天时间实现了这个demo。后来拿着这个demo去参加hackathon,竟然拿了二等奖还帮我赢了1300多刀。

最近提到这个demo,同事表示很有兴趣,于是仔细整理了一下,分享给大家。

代码留在文章最后。


游戏界有一种说法:过去20年的游戏在核心玩法上的创新是缓慢的,绝大多数的创新发生在技术上。

开发者在游戏内提供更大的地图,更精致的画面,庞大的细节。其中的主要目的之一是为玩家提供「沉浸感」。当玩家在游戏世界里得到自己所期望的反馈时,会获得庞大的满足感。

然而,由于技术的限制,过去的创新并没有涉足游戏的一个核心方面:世界与NPC的运行逻辑。

当玩家与世界和NPC的互动超出了规则设定的范畴时,玩家将无法获得反馈,从而产生巨大的落差。游戏界成这种体验为Breaking Immersion。

过去的开发者使出了千方百计来避免玩家产生违和感。

以荒野大镖客2为例,由于R星将immersive作为其开发的首要原则,导致其花费了8年时间,为游戏世界添加了无数的逻辑与细节,整个开发花费近5.4亿刀,可见其难度与成本。

大模型的普及可能改变这一现状

大模型可以为游戏世界的运行与NPC的行为提供逻辑,帮助游戏理解玩家的行为,让游戏世界在可信的状态下稳定运行。由此从根本上提升玩家的沉浸感。

我们把LLM在游戏中的应用分为两部分:

  • World:与游戏环境的交互
  • Agent:与NPC的交互

具体来说:

World中包含:

  • 游戏的世界观
  • 地图上具体的地点

Agent则包括:

  • Persona:人物性格
  • Memory:NPC记忆
  • Planning:决定NPC将要采取哪些动作(Action)

为了让ChatGPT理解我们游戏的世界观,我们引入一段Prompt:

为了让NPC和玩家得以与地图上的地点/物品互动,我们需要提供所有物品与地点的描述:

上述Prompts为地图的每个块都提供了文字描述,从而得以让ChatGPT理解地图上的每个地点:


AI领域的agent是什么意思?
完整地图

具体的实现里,我们实际上需要为所有的游戏贴图都提供一段文字描述!

首先,我们要让LLM知道他现在正在扮演一个NPC:

接下来,我们设计一系列NPC:

每个NPC的核心在于:

  1. 其独特的人格 – 我们引入了一系列属性来定制其人格:description,personal history,personal knowledge,年龄,星座等等。
  2. 一系列可以与玩家交互的属性/道具:钱,道具(items)。
  3. 记忆:我们在这就用每个NPC的对话记录作为其所有的记忆。当然还可以把NPC之前的所有action也加入记忆。

AI领域的agent是什么意思?
人格驱使角色提供定制的对话

Agent 智能体


AI领域的agent是什么意思?
有时候的对话甚至会自带旁白

为了让ChatGPT给出定制的对话,我们需要提供的包括:

也就是:general – 世界观,personal – NPC的人格和记忆,current – 当前的游戏进度。

  1. generalContent:

告知ChatGPT本次调用的任务,世界观背景等。

2. personalContent

提供了NPC的个人信息和人格(例如年龄,历史,知识),与NPC的记忆(storySoFar)

3. currentState

当前的游戏时间,角色所在的位置等。

我们为NPC提供一系列可选择的工作,ChatGPT将决定NPC的下一步行动。这里的prompt同样包含了位置,时间,对话历史等信息,但为了简洁暂略去。


AI领域的agent是什么意思?
这里ChatGPT让牛魔王带领孙悟空前往下一地点

  1. 每次NPC与玩家对话后,ChatGPT将生成本次对话的重点(也就是摘要):

2. 把本次对话重点加入历史对话:


AI领域的agent是什么意思?
在之前发生剧情之后,牛魔王根据记忆选择用「真经」来发起对话


AI领域的agent是什么意思?
问八戒要点饼子吃

这里我们让ChatGPT来判断玩家/NPC的回复是否特别离谱,如果特别离谱则应拒绝正经回答!


AI领域的agent是什么意思?
想打听私人信息,门都没有!

其他还有很多细节,很难在这里展示所有的feature,欢迎查看代码。

以上。本人对LLM在游戏中的使用十分乐观,这么简单的demo我乐此不疲的玩了很久。

从技术上来说,这个demo整体的框架还算比较完整,很适合在此基础上删删改改,实验各种agent的方法和prompt等。

此外由于demo是用react实现,这里推荐大家观看2小时的react入门视频,从而无缝上手。

完整的代码参见:

补充:生成式Agent在实用中有个问题,其每次调用都需要提供大量的prompt,从而带来很高的token开销。这里其实需要应用一种prompt的压缩办法来减少开销。如果有条件微调模型,微调后的压缩效率将会更高。
Prompt压缩:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/277397.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月14日 上午8:23
下一篇 2026年3月14日 上午8:24


相关推荐

关注全栈程序员社区公众号