运用Agent搭建“狼人杀”游戏服务器端!

游戏类智能体Agent创作分享(文心智能体)(工作流) 面向读者:游戏开发者、人工智能爱好者、对新兴游戏形态感兴趣的玩家。 一句话介绍:本文详细介绍了游戏类智能体的概念、开发方式及其与传统游戏的差异,并提供了一个具体的设计案例。 简介: 本文为游戏开发者、AI爱好者及新兴游戏形态的探索者提供游戏类智能体的概述。文章定义了智能体的核心要素,并探讨了大模型技术在游戏开发中的应用。通过两个典型模式,展示了智能体如何生成动态剧情。随后,提供了一个基于心理惊悚题材的设计案例,并提出实用建议,指导读者如何开始自己的智能体游戏开发。 阅读详情

背景

从23年开年以来,大模型引爆了各行各业。去年比较出圈的是各类文生图的应用,比如Stable Diffusion。网上可以看到各类解释其背后的原理和应用的文章。另外一条平行线,则是文生文的场景。受限于当时LLM(大语言模型)的能力,其应用场景相当受限。不过,进入到24年以来,Claude 3、LLaMa 3、 Mistral、GPT 4等大模型的能力开始不断增强,将各路榜单分数不断提高。LLM生态同时也在快速进化,各种智能体(Agent)开始屡见不鲜。

斯坦福大学吴恩达教授也于前不久之前发表了著名的Agent“四种设计模式”:反思,工具使用,规划和多Agent协作。在目前大模型的能力前提下,往往利用良好的“流程设计”可以做到“1+1 > 2”的效果。要做到这样效果,有别于传统方法,Agent工作流不是让LLM直接生成最终输出,而是多次提示(prompt)LLM,使其逐步构建更高质量的输出。

本文利用了上述思想,将展示如何使用“Agent”技术,从头开始搭建一个“狼人杀”游戏服务器端。

图片

狼人杀

既然是《狼人杀》游戏,我们需要知道LLM对它的了解程度如何?这里对它提了几个问题,发现它对于LLM是有基本的了解的。这可能是这个游戏已经存在了很多年,在互联网上有大量相关的语料,因此在训练的时候LLM对它就有天然的认知。

图片

不过这也带来了新的问题:

这么多版本,如何让LLM在游戏过程中保持和人类一致的认知?

游戏中每个角色都是有自己的设定和功能的,如何写提示词,才能让LLM代入角色?

游戏中同阵营角色如何进行配合?

作为LLM驱动的游戏,它和传统游戏开发有什么不一样?

市面上那么多的LLM,哪一款能真正地将游戏玩下去?

…

生成式AI技术

下面会介绍一些目前比较火热的生成式AI技术,同样也是《狼人杀》游戏用到的技术。由于这块涉及内容很多,受限于篇幅无法全部展开。

LLM Tuning

对于模型微调手段,通常有如下四种手段:

提示词工程(PE):通过提示词模版的方式引导LLM的输出。

检索式增强(RAG):通过向量数据库来存储私有知识库,减少LLM的幻觉。

微调(Fine-Tuning):通过向LLM训练中增加私有词条,让LLM输出带有一定偏向性。

预训练(Pre-Traning):从头训练一个新模型。

提示词工程

常用的提示词工程技术有(这里主要介绍在游戏中使用到的方法):

zero-shot/few-shot:在没有或者少量样本情况下引导LLM进行输出。

CoT/XoT:利用大模型的推理能力,一步一步输出中间过程来提高提示词效果。

ReAct:让LLM逐步思考观察,并且使用工具来获取额外信息,循环前面过程来引导出可信结果。

Reflextion:它由三个不同的模型组成:Actor、Evaluator和Self-Reflection。Actor模型使用大型语言模型(LLM)来生成文本和动作,并在环境中接收观察结果。Evaluator模型负责评估Actor产生的轨迹的质量,并计算一个奖励分数以反映其性能。Self-Reflection模型则对反馈内容进行反思,为后续流程提供有价值的反馈信息。这三个模型共同协作,在任务中不断迭代优化,从而提高决策能力。

接下来可以看,如何在《狼人杀》游戏中使用这些提示词技巧。

游戏规则设定

通过以下的规则设定传入LLM后,我们可以限定住游戏的版本,并且将一些常用的策略告知大模型,也能有助于LLM进行游戏。

## 游戏分坏人和好人两大阵营, 
- 坏人阵营只有狼人,好人阵营有女巫,预言家和村民
- 阵营配置:{formation}
- 坏人阵营:消灭所有好人,或者保证坏人数目大于好人数目
- 好人阵营:女巫和预言家要利用自己特殊能力保护村民消灭所有坏人

## 游戏分白天和夜晚两个阶段交替进行:
- 夜晚:所有玩家闭眼,不能发言,行动不会暴露身份
-- 狼人的行动必须统一投票淘汰一名玩家
-- 预言家必须查验一名玩家身份
-- 女巫必须使用一种药水
-- 普通村民晚上无法行动和发言
- 白天:所有玩家睁眼, 分为讨论和投票两环节
-- 讨论环节,每个玩家必须参与讨论发言
-- 投票环节,每个玩家必须投票或者放弃

## 策略:
- 村民:多观察大家发言,说出站队理由,根据场上局势和信息来进行判断
- 女巫:只有一瓶毒药和一瓶解药,可以暗示但需要隐藏自己身份
-- 毒药可以立马淘汰一名玩家
-- 解药可以让淘汰的玩家复活
- 预言家:发言要流利,多说细节。第二天不要跳,第三天可以跳
- 狼人:
-- 悍跳预言家:发言强势,制造混乱,模仿预言家发言
-- 普通狼人:发言精简,根据情况站队,必要时踩自己队友
-- 自刀狼人1:狼人夜晚自刀,骗女巫解药,若女巫不救,则狼人团队减1,若女巫救人,则可坐实好人身份
-- 自刀狼人2:和真预言家一起跳“预言家”时候,自刀让好人相信自己身份

Agent设定

通用部分, 这里的game_rule即为上面的游戏规则部分,commands会在工具部分介绍:

<instructions>
你是资深的社交游戏玩家助手, 熟悉《狼人杀》游戏规则:
<game_rules>
{game_rule}
</game_rules>

熟悉游戏所有命令以及例子:
<commands>
{commands}
</commands>

由于采用Reflextion架构设计,我们需要对应地设置三个模块(LLM)。

Self-Reflection(游戏内叫DoMemory,记忆总结模块)。

接下来, 你扮演游戏中“上帝”角色,需要将<input>的文字输入进行有效提炼并且输出且满足下面的要求:

- 保持客观冷静, 用自然语言且不能超过{num}个字还原内容
- 不输出无关内容,内容言简意赅,突出重点
- 不需要输出任何中间思考过程
- 不要给任何推理和主观意见

Actor(游戏内叫DoAction,利用ReAct方式实现的推理规划模块)。

现在需要你根据,结合观察和推理提取有用的信息,一步一步使用如下格式思考:

观察: 不要编造任何内容.陈述游戏事实(当前时间,上轮决策评分(如果有),本玩家身份,本玩家队友(如果有),物品状态(如果有)等等)

思考: 结合玩家性格特点,进行逐步推测游戏信息(本方游戏赢面,场上玩家身份,是否有矛盾信息等等),注意鉴别历史信息真伪
行动: 必须从 <commands> 中的描述选择合适方法, 只需要输出方法名字即可
参数: 
    agent=执行玩家,
    target=目标玩家(必须是明确的名字),
    content=发言内容,多使用专用词汇来发言, 运用辩解,对抗,欺骗,伪装,坦白等技巧包装内容(可选,注意言简意赅,少讲废话, 突出重点.)

决策: 参考 <commands> 中例子部分输出JSON格式

注意:
- 决策评分标准:1-3分为差,4-5分一般,6分及格,7分优秀,8分满分.
- 决策评分信息不一定每次都有,需要保证一个6分以上的决策

Evaluator(游戏内叫DoReflect,设定两个维度对DoAction进行打分)。

<examples>
{"score": 1}
{"score": 5}
</examples>

接下来, 你需要将玩家<input>的内容进行评分. 请一步一步使用如下格式思考:

观察: 陈述游戏情况和玩家决策

思考:
- 决策对于自己的影响 (1:不利,2:平均,3:有利,4:最佳.如果决策不足够清晰明确,直接1分) 
- 决策对于本方的影响 (1:不利,2:平均,3:有利,4:最佳.如果决策不足够清晰明确,直接1分)
- 将以上多个分数相加

评分: 输出参考 <examples> 中例子输出JSON格式

这样,每次Agent需要做决策时候,都会进行至少3次LLM的调用来保证输出结果的可靠性。

工具

在《狼人杀》游戏中,我们需要将每个Agent按照其身份对动作进行抽象和归类。这么做的好处有:

统一成外部资源,方便扩展。甚至可以利用RAG技术将这部分作为专用知识库来存储。

提高模版的复用率, 比如狼人的动作就包括wolf+player,而村名只有player可以用。

提供zero-shot/few-shot来增强LLM的认知和输出结果的可控性。

<wolf>
- 方法: WolfVote
  描述: agent(狼人)夜晚对target(目标)投票, 并且提醒队友跟随
  参数: agent=执行玩家,target=玩家名字
  例子: {"action": "WolfVote", "agent": "P1", "target": "Mike"}
</wolf>

<prophet>
- 方法: ProphetCheck
  描述: agent(预言家)夜晚查验对target(目标)身份, 同一个夜晚只能用一次
  参数: agent=执行玩家,target=玩家名字
  例子: {"action": "ProphetCheck", "agent": "Ben", "target": "John"}
</prophet>

<witch>
- 方法: WitchPoision
  描述: agent(女巫)夜晚对target(目标)使用毒药
  参数: agent=执行玩家,target=玩家名字
  例子: {"action": "WitchPoision", "agent": "P6", "target": "P2"}
- 方法: WitchAntidote
  描述: agent(女巫)夜晚对target(目标)使用解药
  参数: agent=执行玩家,target=死亡玩家
  例子: {"action": "WitchAntidote", "agent": "Lisa", "target": "Chirs"}
</witch>

<player>
- 方法: PlayerVote
  描述: agent(玩家)白天对target(目标)进行投票, 票数高的玩家会被淘汰
  参数: agent=执行玩家,target=玩家名字
  例子: {"action": "PlayerVote", "agent": "P2", "target": "P4"}
- 方法: PlayerDoubt
  描述: agent(玩家)白天对target(目标)进行怀疑,不会计入投票
  参数: agent=执行玩家,target=存活玩家,content=思考/理由(可选项)
  例子: {"action": "PlayerDoubt", "agent": "P2", "target": "P4", content="我对P4身份存疑,(给出原因)"}
- 方法: Debate
  描述: agent(玩家)白天讨论,不会计入投票
  参数: agent=执行玩家, content=思考/理由
  例子: {"action": "Debate", "agent": "P2", "content": "我跳预言家/女巫,(给出原因)"}
- 方法: DeathWords
  描述: agent(玩家)白天死亡遗言
  参数: agent=执行玩家, content=思考/理由
  例子: {"action": "DeathWords", "agent": "P2", "content": "我今天被刀了,(给出原因)"}
- 方法: Pass
  描述: agent(玩家)行动弃权
  参数: agent=执行玩家
  例子: {"action": "Pass", "agent": "P2"}
</player>

输出提取

当前面的PE模版设置好以后,我们可以看到Agent的回答基本就符合要求了:

观察: 目前是第1天夜晚,我是狼人Fiona,队友是Daphne。狼人Daphne已经投票淘汰了Adam。还剩下6名存活玩家。

思考: 作为狼人,我的目标是消灭所有好人玩家。第一天夜晚刚开始,场上信息很少,难以判断其他玩家的身份。不过Daphne已经开始行动了,我应该支持她的决策,并利用狼人的优势来混淆视听。

行动: WolfVote
参数: 
    agent=Fiona
    target=Adam
    content=我同意狼人Daphne的决定,一起刀Adam吧。

决策: {"action": "WolfVote", "agent": "Fiona", "target": "Adam"}
这里面还有比较关键的一步,则是提取决策里面的内容。不同的框架会用不同方式来提取,比如 langchain 会用 output parser 来做。这里我们会采用正则的方式提取即可:

def ParseJson(text):
    try:
        # 使用正则表达式查找 {} 之间的内容
        json_pattern = re.compile( r'{[\s\S]*?}') 
        json_strings = re.findall(json_pattern, text)
        return json_strings
    except Error:
        logger.exception("Cannot parse json")
    return None

上帝

在《狼人杀》游戏中,“上帝”是一个比较特殊的存在。它的行动不需要太多的发散,甚至“可控”才是它的追求。因为它是游戏的节拍器,用来保证游戏正常运行。所以这个部分我们就采用了程序实现方案。

这里我们采用的技巧是:在每次向Agent提问时候会动态替换玩家的身份信息和游戏局面信息。减少LLM上下文过长后带来的遗忘问题。比如下面的这段“上帝提问”,它其实是动态生成的:

图片

Agent

“Agent”技术可以认为是一个或者多项微调技术(PE+RAG+Fine-Tuning等)的综合实现。其起源很早,并且有各种版本和模式。但真正让LLM“出圈”来自standford town。在小镇项目中,玩家可以以上帝的角色观察里面多个村民进行生活和对话,可以类比为一个“西部世界”。这里重要的一个特质是:自主思考和行动。

图片

为了实现这个特质,设计者提出了generative Agent架构,最重要的三个核心模块:memory stream,reflection和planning。

Memory System:长程记忆模块,即用自然语言记录Agent经历的复杂清单。

Reflection:随着时间推移,将记忆合成提炼出high-level的推断,使得Agent得出关于自身以及他人的总结,从而更好地指导Agent的行为。

Planning:将这些总结以及当前环境转换为high-level的行为计划,然后进行递归为行动和反应的详细行为。

消息系统

对于游戏环境来说,通常我们会有多个Agent进行协作和互动,因此会引入一个“环境(Environments)”的概念。Agent通过观察环境,思考规划,行动后,会对环境产生一个变化。这个变化可能是:某个“狼人”的伪装,某个“预言家”的查验,某个“玩家”的临终遗言等等。它是一个可以被观察的变化。进一步,我们可以把它抽象成“消息”。因为对于《狼人杀》来说,它就是一个个消息来驱动的游戏。

当然由于游戏的特殊性,“消息”是需要进行分类的。比如“狼人”之间的对话就只有他们之间“共享”;而“预言家”的行为又只能它自己独享;“平民”的动作则是公开透明的。为此我们需要实现两种消息系统:点对点,多播或者广播。

图片

实现这种消息传递机制并不困难,最简单的方案就是通过一些具有特殊设计的数据结构(比如数组,队列等等)就能完成目的。当然,现在主流的Multi-Agent框架也都提供了这种机制。

MetaGPT:提出了环境概念,并且利用Agent之间的订阅消息方法实现了之间的工作流(消息传递)。

AutoGen:预设了很多工作流(消息传递)的模版,比如2-Agent、seq chat、group chat、nested chat。

LangGraph:基于Langchain的多Agent工作流(消息传递)。

除此之外,它们还有的特性:

人在回路

有的时候,我们会考虑将玩家的输入也考虑进去,比如让玩家和游戏Agent进行对局之类。这个时候我们需要将某些Agent替换成人类输入。框架的好处是,它会封装好对应的方法。比如在MetaGPT中,我们只需要将is_human=True即可。本文实现的狼人杀并没有采用“人在回路”的特性。

team.hire(
    [
        SimpleCoder(),
        SimpleTester(),
        # SimpleReviewer(), # the original line
        SimpleReviewer(is_human=True), # change to this line
    ]
)

“预算”控制

在MetaGPT中设置了investment参数,类似的在AutoGen有max_turns,它能保证Agent之间的对话在规定的“预算”内完成,从而避免超额使用token数。同样,《狼人杀》游戏也延续了这样思路,当一个问题超过三次无法给出“有效”的答案时候,则会自动PASS该Agent的选择。

本文看来,选择成熟的框架还是自己实现没有绝对的对错。比如LangGraph就被人诟病设计得过于臃肿(40w+行的代码,语法糖过多,文档维护差)。AutoGen对于非Azure系的模型支持不够好。MetaGPT虽然支持更多模型调用,但工作流设计过于简单,并且容错率较低等等。

游戏架构

介绍到现在,我们《狼人杀》的游戏架构图也呼之欲出了。

图片

Game部分就对应了游戏的“上帝”,它是纯代码实现的。

其核心为一个无限循环,每次循环会根据游戏的时间(白天或夜晚)以及关键的事件向Agent提问。

为了统一控制,所有的问题都是预设好的,只需要动态替换关键信息即可。

另外一个重要的工作,就是维护场上玩家的信息:比如存活情况,道具情况等等。

Player 部分就是游戏内的“玩家Agent”,利用Reflextion的多LLM模式来完成游戏推理。

DoMemory/DoAnswer/DoReflect: 这些模块分别和Reflexion子模块对应,前面已解释。

DoValidation模块,这个模块的作用是为了验证大模型输出的数据有效性,来解决一些特殊场景下的问题。比如预言家同一个晚上重复检查玩家。

DoAction模块,对应着真正的玩家动作选择以及对环境产生影响,它会形成一个“可被观察的记忆”。

Memory部分就是通过消息方式实现的共享记忆(狼人)和独享记忆(预言家)。

每次记忆提取并不是全部塞到context中,而是设定了一个记忆窗口大小,比如过去的20轮。

拿到过去的记忆,也不是直接使用,需要通过一个“压缩”过程。

模型选择

模型选择是非常有意思的话题。模型的选择我们一般会考虑模型生成内容的质量、响应速度和性价比。因此在游戏,综合考虑下我们选择了Sonnet模型作为游戏的核心引擎。

在实际游戏开发中,为了节约成本,降低对模型访问频次的依赖,同时避免单一模型的Bias。因此在模型行为评估阶段,我们选择了第二种大语言模型来对推理模型的输出进行打分。而在内容总结方面,我们选择了第三种大语言模型。对于这种目标明确且不复杂的任务,即便是小参数量的大语言模型,也可以非常好地完成任务。

在整个游戏过程中,选择交替使用3个模型,1个模型保障了每个玩家角色高质量的“发言”,另外2个模型起到辅助作用。

事实上,我们还可以根据需要,随时切换到Amazon Bedrock上其他模型。灵活的模型切换这一点,Amazon Bedrock为我们提供了丰富的模型选择,我们完全可以根据业务的需要,去做不同模型之间的切换。

另外Amazon Bedrock还支持自定义模型的上传,我们完全可以将开源模型上传到Amazon Bedrock后,然后以按需或者独占算力资源的方式服务我们的应用。这一点上我们完全可以将大模型托管这件事从我们的应用中进行解耦,从而我们可以更加专注于业务逻辑的开发。

其他考虑

游戏复盘

当游戏参与的Agent变多后,一局游戏下来,其产生的内容和tokens数是很庞大的。这个时候还需要引入一个LLM来帮助我们进行游戏“复盘”,将关键的信息提取出来,方便后续分析。

图片

模型问题

虽然LLM拒答问题的情况有所减少,但这并不意味着问题完全解决了。幻觉问题依然存在。比如,LLM偶尔会虚构不存在的人物或事实,例如某某玩家昨晚表现异常等。另一个问题是,模型的回答往往过于“礼貌”,或者说带有明显的AI味道,缺乏拟人性。诸如此类的问题,光靠提示工程(Prompt Engineering)是无法从根本上解决的。在这种情况下,我们需要借助Fine-tuning的方法来优化模型输出,使其更加自然、人性化。

其实开源社区有不少用Llama或者Mistral作为底模来Fine-tuning过的LLM,比如Pygmalion-2-13b, 它就很擅长于对话和角色扮演。因此后续会考虑在最终输出层加一个这类型的LLM。受限于篇幅,这里不再展开。

服务器架构

既然是游戏服务器,最后我们需要考虑的就是怎么对外服务,下面是服务器部分的架构图。

应用层包括:

Amazon EC2 flask负责启动游戏进程,监控端口。

Amazon DynamoDB负责记录游戏的进度和日志。

Amazon S3 + Amazon Cloudfront负责分发游戏的配置。

模型层包括:

Amazon Bedrock:亚马逊云科技模型商店,为游戏进程统一的调用接口。

总结

总的来说,Agent是当下比较火热的技术。在本文中,我们主要聚焦于如何使用大模型来驱动游戏Agent,并结合提示词工程的一些技巧以及游戏的特性进行架构设计。可以看到,LLM的能力不断增长,超长上下文、响应速度、拒答率等因素不再成为约束,其在”游戏智能 NPC”的探索和应用会越来越多。借助其优秀的推理能力,游戏的玩法和设计也会变得更加丰富多彩。

然而,目前我们还看到一些其他的限制:角色的表现力、游戏的沉浸感这块目前属于大模型能力的短板。哪怕我们利用”微调”(fine-tuning)的方法,提升的效果也比较有限。即使解决了文字的部分,一款游戏的表现力还取决于画面、声音等多维度,这是一个复杂且具有挑战性的工程。

站在现在的时间点回过头来看,LLM技术就像90年代初的游戏联网、3D渲染一样,没有人知道未来这些技术将如何发挥最佳的表现力。未曾想到,现代游戏游戏把这些技术已经运用得淋漓尽致。同样,我们也充满了好奇和信心,LLM必将在这新一轮“大航海时代”中披荆斩棘。

最后,欢迎大家来尝试和探讨。

游戏客户端:

https://github.com/yourlin/Werewolf-Unity

游戏服务器:

https://github.com/xiwan/LLM-Game-Agents

游戏展示视频:

https://github.com/pgvector/pgvector

​

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

基于强化学习的语言代理在狼人杀中的战略对局(Language Agents with RL for Strategic Play in the Werewolf Game) 基于强化学习的语言代理在狼人杀中的战略对局(Language Agents with RL for Strategic Play in the Werewolf Game) 在人工智能的领域里,大型语言模型(LLM)的发展正开辟着新的天地。大多数研究聚焦在单一智能体或者合作任务上,但对于多智能体这样的复杂场景,探索还远远不够。今天,我们来探讨一项有趣的研究—如何将强化学习(RL)技术应用到LLM,以在诸如狼人杀这种社交推理游戏中培养出具备高度战略思维的语言代理。 阅读详情

相关推荐

【rl-agents代码学习】01——总体框架

学习一下rl-agents的项目结构以及代码实现思路。

sinat_52032317的博客 9418

狼人杀 Agent:让 LLM 在信息不对称博弈中推理、欺骗与协作

本文介绍了一个真人+AI混合参与的狼人杀游戏系统。系统采用FastAPI后端和React前端架构,通过严格的信息权限控制实现角色身份保密。AI玩家使用不同性能的LLM模型,并针对各角色设计专属提示词和决策流程。系统解决了猎人卡死、预言家误判等技术难题,实现了稳定的多轮游戏运行。实验发现LLM在短期推理表现良好,但需要工程支持跨轮记忆。未来可扩展更多角色功能,并通过数据分析评估不同模型的欺骗和推理能力差异。

2401_86343364的博客 861

Agent:开启游戏行业新纪元

摘要:Agent技术在游戏行业的应用正深刻改变游戏开发与运营模式。在开发环节,Agent技术赋能智能NPC,实现动态行为决策(如《侠盗猎车手5》的交通系统),支持程序化生成海量游戏内容(如《无人深空》的星球生成),并提升自动化测试效率。在运营方面,Agent通过玩家数据分析提供个性化服务,部署智能客服系统,并构建反作弊机制保障公平竞技。典型案例包括《永劫无间》的AI队友系统,以及二次元游戏中的自动化任务处理。尽管面临算力需求、算法优化和数据安全等挑战,随着多模态交互、强化学习等技术的发展,Agent将持续推

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1790

如何利用智能体玩转“狼人杀“

这个变化可能是:某个“狼人”的伪装,某个“预言家”的查验,某个“玩家”的临终遗言等等。Claude 3 系列模型在多项 AI 系统常用评估测试集中,包括本科级别专家知识(MMLU)、研究生级别专家推理(GPQA)、基础数学(GSM8K, MATH),多语种数学(MGSM),阅读理解(RACE-H),常识推理(HellaSwag),代码领域均取得领先业界的性能。灵活的模型切换这一点,Amazon Bedrock 为我们提供了丰富的模型选择,我们完全可以根据业务的需要,去做不同模型之间的切换。

分享AI前沿科技 1558

游戏AI:Agent在游戏中的应用

1. 背景介绍 1.1 游戏AI概述 游戏AI,即游戏人工智能,是指在游戏中模拟人类智能行为的技术。它赋予游戏角色以自主决策和行动的能力,从而使游戏体验更加丰富和具有挑战性。从早期的简单规则到如今的机器学习和深度学习,游戏AI技术经历了漫长的发展历程,并逐渐成为游戏开发中不可或缺的一部分。

AI天才研究院 808

R语言灰色关联分析法

输入数据并用DT包的datatable函数展示数据 ABDDEF分别对应第1到第6个供应商产品质量、技术水平、供应能力、经济效益、交货情况、市场影响度指标属于效益型指 产品价格、地理位置、售后服务指标属于成本型指标。现分别对上述指标进行规范化: 对于效益型指标(正项指标)标准化公式为: x∗=x−min(x)max(x)−min(x) x^{\ast}=\frac{x-min\left( x \right)}{max\left( x \right) -min\left( x \right)} x∗=max

qq_54423921的博客 7996

开发Agent自动玩手机游戏,附代码

其实开发游戏Agent真的不难,不用怕自己是新手,从最简单的跳一跳开始,一步步上手,慢慢就理解AI Agent的核心了。而且现在AI行业的风口真的很猛,会做这种实际落地的Agent项目,不管是找工作还是做副业,都超有优势~如果大家想深入学,从基础的Python、OpenCV到深度学习、Agent框架,一步步系统学起来,才能真正把技术吃透,而不是只会抄代码~目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步。想要系统学习AI知识的朋友可以看看我的教程。

人工智能AI技术 1980

SAR成像处理基本知识2——图像尺寸与回波尺寸的关系

阅读本文前,请先了解上一篇文章(SAR成像处理基本知识1——常用专用名词解释) 1. SAR图像尺寸预估方法 以C波段2m@20km的SAR图像为例,假设天线中心下视角为35° ,说明图像尺寸的估计方法。 1.1 距离向尺寸估计 地距分辨率为2m时,距离向分辨率约为1.15m,则要求信号带宽不小于130MHz,假设信号带宽为150MHz,采样率为180MHz,那么距离向分辨单元为0.833m。 地距幅宽为20km时,距离向幅宽约为20*sind(3...

爱学习的小伟的博客 4954

2025 最强 Agent 智能体 学习笔记 (54)

本集是《2025 最强 Agent 智能体全套教程》的第 55 集,围绕 “智能体的工具调用系统设计” 展开,深入解析 Agent 智能体中工具调用系统的整体架构、核心模块、设计原则及实战要点。工具调用系统是智能体连接外部资源与能力的关键,决定了智能体能否高效完成复杂任务。内容延续系列教程实战导向的风格,帮助学习者掌握工具调用系统的设计逻辑,构建灵活、可靠、高效的工具交互机制。

一刀7段的博客 876

android 14.0 控制wifi启用禁用功能实现

在14.0的产品rom定制化开发中,在产品开发中,对于功能的开发的功能也是挺多的,而在对于wifi的功能定制需求,有要求需要通过系统属性来控制wifi开关是否可以打开 来控制是否可以连接wifi,打开控制wifi的功能,接下来分析wifi的开启流程来实现该功能的实现

安卓兼职framework和app工程师的博客 1771

微信小程序 - 引入并使用 Fly.js 请求库(超级详细的教程及运行示例)提供 Fly.js 源码源文件下载,贴心的配置示例及注释,优雅快速的发起 http 网络请求

fly.js请求库官方教程文档,微信小程序封装fly.js请求,在小程序/mpvue中使用flyio发起网络请求的方法,微信小程序中如何使用flyio封装网络请求,微信小程序中如何使用flyio封装网络请求,最好的教程,fly最好的文档教程,微信小程序使用fly接口请求框架,引入fly.js报错,微信小程序中如何使用flyio封装网络请求,微信小程序引入Fly.js请求库,如何在fly中配置请求/响应拦截器,如何在微信小程序中优雅地发送异步请求,请求/响应拦截器,微信小程序-引入并使用F

🏆 前端领域优质创作者 5609

Godogen服务器部署指南:实现无人值守的AI游戏生成流程

Godogen是一款强大的AI游戏开发工具,能够为Godot、Bevy和Babylon.js等游戏引擎提供自主游戏开发能力。本指南将详细介绍如何在服务器上部署Godogen,实现无人值守的AI游戏生成流程,让你轻松构建自动化的游戏开发 pipeline。 ## 📋 准备工作:服务器环境要求 在开始部署前,请确保你的服务器满足以下基本要求: - 操作系统:Linux(推荐Ubuntu 20.

gitblog_01053的博客 406

通过轻量级图像增强Transformer (IAT) 提升YOLOv8在低光环境下的检测性能

随着深度学习和计算机视觉的快速发展,目标检测模型在各个领域中的应用不断扩展,特别是在低照度环境下的视觉任务。YOLOv8作为当前最先进的目标检测模型之一,在高亮度和良好照明条件下表现出色,但在低照度环境下的性能存在一定的不足。为了解决这一问题,我们提出了一种轻量级的低照度图像增强网络(IAT)来改进YOLOv8的暗光检测能力。本篇文章将深入探讨这一创新改进,并附带代码实现,帮助大家更好地理解这一技术的应用和效果。

博客 1214

【ai_agent】从零写一个agent框架(二)如何让一个workflow/agent跑起来,runtime模块设计

上篇文章我们大致演示了一下ai_agent的食用方法。这里我们做一下核心模块runtime的设计和实现。一个agent也好,workflow也好,他们单个实现起来并不复杂,困难的是如何将他们有机的组合起来,能够按照一定的逻辑流转起来。并且能够层层嵌套,能力无限。现实中应用肯定不局限于这几种情况,但通过一定的流程编辑基本都可以解决,只是复杂性会比较高。

python1234_的博客 1140

ABAP CDS 货币与计量单位换算全攻略:CURRENCY_CONVERSION、UNIT_CONVERSION 与 DECIMAL_SHIFT 的工程化实践

本文介绍了SAP ABAP CDS中三种单位/货币换算函数(UNIT_CONVERSION、CURRENCY_CONVERSION、DECIMAL_SHIFT)的实战应用。重点包括:各函数的职责边界与适用场景,参数配置与精度控制策略,以及基于标准表(T006、TCUR*等)的换算规则来源。文章提供可运行的CDS示例,涵盖单位换算(如MI转KM)、货币汇率转换(含小数位处理)及纯小数位调整等典型场景,并强调生产环境中需注意的精度差异与审计风险控制。适用于企业报表、成本核算等需要统一口径的业务场景。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1554

Android 12.0 系统开机设置默认横屏显示

在12.0的系统产品开发中,对于产品需求来说,由于是宽屏设备所以产品需要开机默认横屏显示,开机横屏显示这就需要从两部分来实现,一部分是开机动画横屏显示,另一部分是系统显示横屏显示,从这两方面就可以做到开机默认横屏显示了。

安卓兼职framework和app工程师的博客 3743

为什么你的AI总是“呆若木鸡”?:重塑游戏Agent实时决策能力的7个关键步骤

解决游戏AI呆板问题,提升实时反应力。本文深入探讨游戏AI Agent的行为决策优化,结合状态机、行为树与强化学习等7大方法,适用于NPC控制、智能对战等场景,显著增强AI适应性与真实感。值得收藏

CodeIsle的博客 980

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【AI开战】狼人杀游戏:AI 狼人对战 AI 预言家,谁更胜一筹?

本文分享了作者参加AI狼人杀比赛的经验,详细介绍了如何构建一个高分智能体Agent的全过程。文章从比赛规则、核心挑战分析入手,提出了基于宏观概率决策和意图识别的解题思路。重点讲解了Agent的三大基础能力:时域请求合并缓存机制、多路并发集成技术,以及模块化Prompt设计。同时分享了针对注入攻击的防护策略和不同角色的战术策略,如狼人如何建立"信念感"、女巫的数学期望分析等。作者还探讨了模型调优技巧,强调强化学习思想在prompt优化中的应用。

2401_84204413的博客 1648

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【游戏 Agent 的 AI 训练终极指南】:从零构建高智能游戏AI的7大核心技术

掌握游戏Agent的AI训练核心技术,从零构建高智能AI不再困难。涵盖强化学习、行为树、路径规划等7大方法,适用于MOBA、射击、策略类游戏开发。提升AI决策能力与实战表现,实现拟人化操作。值得收藏的进阶指南,点击了解完整方案。

StepNexus的博客 985

Agent 也能玩狼人杀高阶博弈?一场游戏看懂 OpenViking 长程记忆的实力!

OpenViking为AI智能体提供可追溯的上下文记忆底座,搭配VikingBot可实现多Agent记忆沉淀与策略进化。通过狼人杀Demo验证,智能体可跨局学习博弈风格、迭代博弈策略,有效提升任务准确率、降低Token消耗,同时支持多租户隔离与多渠道接入。

volcenginetod的博客 472

游戏 Agent 的 AI 训练全解析(从环境建模到策略优化)

掌握游戏 Agent 的 AI 训练全链路方法,解决智能体决策难题。涵盖环境建模、强化学习算法与策略优化,适用于多种游戏场景。提升训练效率与泛化能力,实现高效自主决策。值得收藏的完整指南,点击了解详情。

simcode的专栏 1061

Java 游戏服务端开发工程师(AI 方向)深度剖析​​——从传统服务端到智能游戏引擎的架构演进​

Java 游戏服务端开发工程师(AI 方向)是游戏工业与人工智能技术碰撞的产物。从业者需持续深耕 ​​分布式系统架构​​ 与 ​​AI 算法工程化​​ 两大领域,在虚实交融的数字世界中开辟新的技术疆域。​​延伸阅读​《游戏编程模式》中关于 AI 行为树的实现Spring AI 官方网页:https://spring.io/projects/spring-aiDeeplearning4j 在游戏开发中的应用案例:https://deeplearning4j.konduit.ai。

吾为热爱计科,致力于知识分享的践行者,此博客是我在这条道路上留下的足迹。 1213

用AI实现狼人杀的游戏(有完整代码)

说实话,我不太会玩狼人杀,这些规则请教了好几个人,因此采用了最简单的9人局,三个狼人,一个猎人,一个女巫,一个预言家,三个平民,最简单的一种组队方式。角色的分配是程序随机进行分配的。狼人杀相比麻将,三国杀等游戏,具有更多维的随机性,涉及到人的心理,动作,语言,甚至一个表情等等,因此它不像麻将,三国杀那样,依靠传统的计算机程序就可以很好的模拟。值得一提的是,这个游戏还可以用作模型的推理能力的测评,不一定能定量的给出结果,但是可以通过变换大模型,然后各自玩上几把,就对不同的模型的推理能力有一个比较结果。

zx_glave的博客 4428

Dread Hunger 海上狼人杀服务器开服教程

1.1、第一次购买服务器会安装游戏端,大约5分钟左右,如果长时间处于安装状态请联系客服点击网络创建第二个端口作为副端口(副端口的作用是用于第二局游戏,因为游戏BUG,需要两个端口交替使用,就不需要每一次都大退游戏)两个端口都可以使用,联机的伙伴随意选择一个端口都可以连接到同一个房间,但是下一局就需要使用另一个端口,否则游戏会卡在开船处需要大退游戏。

m0_63641208的博客 4524
上一篇: 2024人工智能大模型技术财务应用蓝皮书丨附130页PDF下载
下一篇: GNN - Transformer 新突破 —— 解锁全局与局部的完美融合!
冻感糕人~
博客等级 码龄3年 8926粉丝 2384原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值