我利用Coze的多Agent模式设计了一款由AI驱动的《谁是卧底》游戏(这应该是目前Coze平台上最复杂的一个Bot)

在制作 Dr. Know 的时候我就感受到了,Coze给Bot创作者提供了很强的灵活性和可定制性。于是便有了一个想法:我想试试Coze的上限在哪里,试一下用Coze究竟可以做出多复杂的Bot?

经过了一个多周的折腾,最后我利用Coze的Multiagent模式搓出了一个AI推理游戏,它的全名叫《谁是卧底~我绝不可能被AI骗到!》,下文简称《卧底》。这个游戏在玩法上与经典的《谁是卧底》无差异,但玩家不一样了,它不是一群人一起玩,而是一个人和一群AI Bots一起玩。

下面是我自己试玩的一个录屏,这个体验过程还是比较有意思的,你可以重点看看1号AI玩家和3号AI玩家的表现。看完视频你应该可以感受得到,AI玩家还是有两把刷子的~

你也可以亲自去体验一下,下面是体验地址(需要🪜):

www.coze.com/store/bot/7...

关于《卧底》这个游戏

《卧底》承载了多少复杂性?

这个游戏是在Multiagent模式下制作的,总共有7个Agent,它们各自分管不同的游戏环节。

Multiagent模式其实主要负责串起整个游戏的交互过程,游戏的核心业务逻辑在Workflow里,主要的Workflow有12 个。提示词有接近6000 字,代码有300多行,不过只有几十行逻辑代码,其余都是粘合剂代码。提示词和代码的配比差不多是一比一,这是一个很有意思的现象。

此外,整个游戏没有使用任何插件和知识库,只用到了LLM、CODE、Condition、Variable这些基础组块。

AI在《卧底》里都承担了哪些功能?

首先,游戏主持人这个角色是由AI担当的。它要负责介绍游戏规则,控制游戏流程,组织人类玩家和AI玩家进行发言和投票,汇报游戏结果等等。

游戏中使用的题目,也就是平民和卧底的词语对,是由AI生成的。如果你在体验游戏的时候,碰到一些奇怪的词对,可能是因为模型太发散了~

游戏最核心的部分,即AI玩家的发言和投票,是由AI完成的。我利用Workflow实现了一套发言策略和一套投票策略,策略不是很复杂,但效果不错。具体可见上面的体验视频,1号AI玩家在第一轮的发言是真的骗到我了。

从这里就可以看出来,《卧底》这个Bot跟那些套壳的AI应用的差异了,《卧底》更加AI-native一些,因为AI已经深入到它的核心业务逻辑里面了。

《卧底》的独特之处在哪里?

现在市面上已经有一些基于AI的文字冒险类游戏,Coze上就有不少这类Bot。《卧底》跟这类游戏相比的差异应该是它支持多个智能体(包括人类和AI智能体)作为玩家参与游戏。

此外,大家可能也听说过像"斯坦福Agent小镇"这样的多智能体实验。其实这个实验模拟出的多智能体的日常活动和日常交流并不需要多少智力,因为这些智能体并不是在解决什么问题。反而像《谁是卧底》这种游戏情境对智能体的智力要求更高,因为在游戏里AI玩家要进行相对复杂的推理,而且它们既要考虑自己的身份,考虑自己如何发言和投票,同时也要把其他玩家(包括人类玩家和AI玩家)的身份以及发言和投票情况纳入考虑。

我觉得类似于《谁是卧底》这样的多人参与的、语言类的推理游戏很适合作为多智能体研究的场景。理论上,你可以为每个AI玩家都赋予不同的名字和人设,甚至让他们采用完全不同的发言和投票策略,可玩性很高。

我制作《卧底》的经验、难点以及痛点

经验:如何理解Multiagent模式?

单个Agent能承载的复杂性很有限。大模型具备一定的工具调度能力,但是当单个Agent的提示词变得很长、使用的插件和Workflow变得很多的时候,就会出现各种不稳定的情况。Multiagent模式就是为了让你在设计复杂的Bot时,可以将不同功能拆分开,安排给不同的Agent来处理(www.coze.com/docs/zh_cn/... 用软件工程的术语说就是可以让你进行更好的模块化设计,更好的控制复杂度。

如果你在Coze的单Agent模式下搓过简单的Bot,那么Multiagent模式就很好理解了。所谓Multiagent模式就是通过一个Flow把多个Agent串了起来。Multiagent的Flow配置起来比Workflow要简单,因为目前你能配置的东西就只有那些跳转条件。当条件满足时,就会自动触发跳转,跳转到下一个Agent。这里面有坑,我后面再讲。

在Workflow里面你无法让程序停下来跟用户交互,但在Multiagent的Flow里可以,因为Flow里的每个Agent都具备跟用户进行对话的能力。所以Multiagent适合用来设计那种需要跟用户进行复杂互动的游戏或者应用。

《卧底》就是把Workflow、Agent、Multiagent Flow这三者结合起来的一种最佳实践,事实证明利用好这三者,就可以设计出具备相当复杂度的Bot。

难点:如何让Agent组织多名AI玩家进行发言和投票?

AI玩家发言和AI玩家投票这两个模块是整个游戏最难的部分,在这两个环节中Agent要负责组织多名AI玩家进行发言/投票,并且要能同时满足以下条件:

  1. 它必须要能按照正确的顺序调用Workflow,不能遗漏,不能乱序;
  2. 它需要在某个AI玩家发言/投票的时候,才去即时地调用对应的Workflow,而不是在一开始就把所有Workflow都调用一遍,因为这样用户需要等很长时间才能看到输出。
  3. 在后面的轮次中,它需要把已出局的玩家排除掉,因为已出局的玩家不能发言/投票。
  4. 它需要在一次回复中完成所有步骤,而不是汇报完一位AI玩家的发言内容/投票结果就停下来了,等用户交互。
  5. 它能正确地触发跳转条件,进入到下一个环节。

我来来回回调整了很多遍提示词,试了各种办法,目前这个版本大概率能满足上面的条件,但偶有会出现各种不稳定的情况。理想状态下,输出的过程和结果应该是下面视频中这样的效果:

痛点:跳转条件!

先叠个甲:Coze的Multiagent模式刚上线不久,还处于迭代过程中,所以目前的问题未来应该都会被修复。

我体验下来,Multiagent模式有两个让我感觉"不爽"的地方,都跟从一个Agent跳转到另一个Agent有关。第一个是,Agent跳转必须要用户输入东西后才能触发,而不能由Agent自己触发,或者当Agent完成任务后自动跳转到下一个Agent。如果可以直接跳转,就可以避免一些不必要的跟用户的交互。我觉得在Multiagent模式下,Bot设计者应该有自由度去控制Bot什么时候自动执行流程,什么时候停下来跟用户交互。不然交互很多、流程复杂的程序就很难设计。

还有第二点,在Multiagent模式,你可以使用自然语言来配置Agent的跳转条件。我不知道Coze的系统提示词是怎么写得,反正我体验下来,这个跳转的判断逻辑非常得不稳定。经常出现跳不出去的情况,即使我的跳转条件中很明确的写了如果用户输入了"继续"也不行,还有偶尔也会出现连续跳很多个Agent的情况。用自然语言描述跳转条件,再利用LLM判断下一步跳转到哪里,这个设计想法很好,但前提是它稳定可用。

《卧底》当前的版本依然可能出现跳转出错的情况,请多担待。如果出现这种情况,请输入"重新开始",重开一局吧。

附录:另一场有意思的人机Play

猜猜我(人类玩家)是什么身份~

相关推荐
galileo201616 分钟前
LLM与金融
人工智能
DREAM依旧32 分钟前
隐马尔科夫模型|前向算法|Viterbi 算法
人工智能
GocNeverGiveUp1 小时前
机器学习2-NumPy
人工智能·机器学习·numpy
B站计算机毕业设计超人2 小时前
计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习
大数据·人工智能·爬虫·python·机器学习·课程设计·数据可视化
学术头条2 小时前
清华、智谱团队:探索 RLHF 的 scaling laws
人工智能·深度学习·算法·机器学习·语言模型·计算语言学
18号房客2 小时前
一个简单的机器学习实战例程,使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集(Iris Dataset)**的分类
人工智能·深度学习·神经网络·机器学习·语言模型·自然语言处理·sklearn
feifeikon2 小时前
机器学习DAY3 : 线性回归与最小二乘法与sklearn实现 (线性回归完)
人工智能·机器学习·线性回归
游客5202 小时前
opencv中的常用的100个API
图像处理·人工智能·python·opencv·计算机视觉
古希腊掌管学习的神2 小时前
[机器学习]sklearn入门指南(2)
人工智能·机器学习·sklearn
凡人的AI工具箱2 小时前
每天40分玩转Django:Django国际化
数据库·人工智能·后端·python·django·sqlite