最近一直在研究 Agent 智能体的相关东西,看到有网友分享用多Agent开发了《谁是卧底》的游戏。

我特别感兴趣,想研究一下。但比较遗憾,作者并没有开放 Agent 的配置。所以,老渡就自己做了一个,实现了完整的功能,今天给朋友们分享一下。
使用多Agent模式的核心原因,可以让AI模拟多位玩家,游戏可玩性更强,游戏过程更可控。
Agent是用扣子(coze)实现的,所用到的大模型以Kimi为主。下面是整体的配置

这里面大部分 Agent 都要调用工作流,完成更复杂的任务。
还不熟悉 Agent 开发的朋友,可以看我之前的文章。
下面简单介绍下每个Agent。
游戏初始化 Agent,用来随机生成卧底,同时生成卧底和平民的词语。

这是 Agent 调用的工作流——undercover_init,这个工作流的节点一共有三类
代码节点:主要用来处理数据格式问题,比如:随机挑选卧底、处理大模型生成的词语。代码量都只有几行,非常简单。大模型节点:主要是用来生成卧底和平民的词语变量节点:将卧底编号、词语存储到变量中,以便后面Agent读取
来运行一下试试

人类玩家发言 Agent,接收用户对词语的描述,并将描述存入变量。

AI玩家发言 Agent,调用工作流,用AI模拟两位玩家进行发言。
每一位AI玩家发言之前,都要参考之前的玩家,即保证发言不重复,同时又能隐藏自己的身份。


人类玩家投票 Agent,对卧底投票,并保存投票结果。

AI玩家投票 Agent,AI玩家对卧底投票,并显示最终的投票结果。

游戏结果 Agent,根据投票结果,判定胜负

这里只有3个用户,是最基础版本,所以一轮定胜负。
这个完成后,我们就很容易扩展出多名玩家。若第一轮投票,卧底未出局,则踢出被投的玩家,然后跳转到前面的 Agent 继续游戏。
这个游戏看似简单,但从构思到实现,断断续续也花了一周的时间。
开发这个游戏,最想跟朋友们分享的是,AI输出的结果是有不确定性的,要根据实际情况用不同模型,调参数。