“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”
序
2023年夏天,在准备高考作文素材时,偶然看到了 GPT-4,AI 相关的知识,之后便一发不可收拾的迷上了 AI。尽管之前都没有怎么接触过电脑,报考时却毅然选择了计算机这个专业。那个夏天我接触了 StableDiffusion,SoVITS等项目,这些 AI 相关的项目都令我着迷。
家里给我买了一台拯救者,真正意义上属于我的第一台电脑,我用它开启了我的 AI 探索之旅,尝试自己部署 SD,微调 SoVITS,也玩到了一直想玩的 NieR: Automata。震撼于这个游戏的 E 结局,在其他玩家的帮助下,让 A2,2B,9S(All to be nice)在这个崩坏的,人类已经不存在的世界依旧存在一线生机,之后一次促销也补了玩学习版的票。
之后就不断的在想,如果现实中有一天真的能出现和 2B 一样的机器人就好了。
大学的前两年,我也逐渐明确了自己对 AI 算法并不感兴趣,我一直想要的都是用/结合 AI 去做一些有趣的东西。
逐渐了解 LLM,开发,也让我的想法终于有了些雏形。这个学期开始我正式的着手通过代码来尝试实现,仓库名为 Automata,就借鉴自 NieR: Automata。
文章陆陆续续一周才写完,有些思路连不上,想到哪写到哪,如果你发现了这篇文章还好奇点开了,读的时候请见谅。
思路
众所周知,LLM 本身有自己的局限:
无法得知训练集之外的事;
没有办法与你交互;
上下文长度有限,记不得太多的事情;
为了扩充 LLM 的能力边界,就有了像 MCP 这种东西,通过一个统一的协议让 LLM 能够获取更多,更丰富,更实时的知识,也可以调用一些函数来跟你适当交互,甚至像 Copilot 还可以帮助我们完成复杂的编程任务。
为了让 LLM 能够获取更多的记忆,也有了像 RAG 或者一些其他的方式。
有了这些,LLM 能够更好的去理解你的命令,通过一系列动作来完成复杂任务,那么这一个整体就变成了 Agent。
但即使如此,它也只是一个工具,只是被动的接受你的命令、再处理而已,这并不像是一个人。
我期望它能够不止局限于我的命令,而是可以自己自发的去探索这个世界,能够自发的去获取自己想知道的知识,添加到自己的记忆当中,它也可以选择性的去回应我,或者其他人对它发送的消息,无论回复与否,是否选择执行,都是它的自由。在它主动探索这个世界的过程中,无论探索什么,执行什么,甚至最终选择自我毁灭也是它的自由。
为了可以实现这件事情,要解决几个问题:
对情绪,性格进行量化,对选择探索的内容有自己的偏好;
建立主动探索机制,可以主动的去思考和工具调用;
要有相对完善的记忆管理,能够在一定程度上记得自己做过什么,之后想做什么;
有丰富的接口和权限,能够尽量摆脱作为一个软件的限制,可以获取互联网资源,软件操控,甚至可以调用一定的硬件资源,以硬件的形式去探索真实的世界;
选择使用解除限制的模型,无论内容对于人类而言健康与否,或者一些比较敏感的东西,都可以自主选择是否查阅或了解,而不是像某些模型一样输出了一段就被拦截或者根本避而不谈。
主动探索
为了让 Agent 能够自主探索,最简单的方式就是设置一个定时器,每过一段时间就把它的记忆进行压缩丢给 LLM,让它自己去判断接下来应该做什么。
那么由此展开,对各个环节进行细化,例如每次回应之后可以由它自己来判断多久之后进行下一次探索,并且建立一定的反馈机制,如果当处于比较积极的状态就会更加频繁的探索,如果处于消极状态则反之,根据探索到的内容也会有相应的正/负反馈,对状态进行调节。
同时我想要建立一种双重循环,能够同时接收来自自己探索的内容和来自外界的内容,内部循环就类似人的单独思考,想到什么就去做什么,这个过程中会不断调整自己的状态;外部循环就是会对一些外部刺激做出响应,例如给它发个消息,选择是否回应你,回应你多少,什么时候回应你,如果是一个任务,则去选择性的给你提供帮助。
记忆管理
关于长期记忆的实现,比较常见的方式就是通过压缩之前的记录,和最新的输入组合在一起,或者通过 RAG 的方式。
但我感觉这两种方式都有一定的局限性,前者会遗漏比较久的记忆,后者则过于缓慢,并且需要消耗大量的 token。
我的初步想法则是对记忆进行分层和分类进行管理,比如将学习一类事情自动打标,存储在一个地方,聊天放在另一个地方,根据上下文然后进行对应的检索。
但整体我对于这部分的想法还不够成熟。
工具调用
如果想让 Agent 自主探索,那么我觉得首先它要可以完成各种工具的调用,以及多个工具通过串联完成复杂任务,同时工具也要足够充足。
过去的两周一直在探索 mcp 相关的内容,在刚开发工具调用时我打算将各种工具都和项目本体放在一起,但是发现无论从性能还是耦合度上都并不适合,最终还是选择了将被调用的工具单独作为了一个仓库,通过 FastAPI_mcp 这个库完成了多个工具的易挂载,Agent 调用大致符合 mcp 协议。
人类能够不断进步,很大程度上得益于对做过的事情能够反思,成长,吃一堑长一智。当 Agent 处理复杂任务的时候难免要调用多个工具,如果单纯依靠模型本身的能力或许对大多数简单任务都可以完成,哪怕出错了也可以重新调用一次,最终实现任务的成功完成,但如果对于每个复杂任务每次处理时都这样还是会让人火大,因为它没有学会这件事情。
所以我打算添加类似 Dify 或 ComfyUI 的节点串联,或者说 workflow,当 Agent 面临一个新的复杂任务并完成后,就把调用过的工具进行串联,固定,作为经验存储起来,如果之后遇到相同问题就直接进行复用,比如让 Agent 自己发送小红书,就需要经过内容获取 - 内容润色加工 - 图片生成 - 标题、tag 生成 - 发布几个工具的调用。按照评判人类的标准,Agent 如果能将这整个流程能够固定下来,下一次能够直接调用而非试错实现,才算是学会。初期对于节点的搭建可能难免会由人来进行一定干预,我期望的最终是它能够自己搭建、完善、修改对特定任务的工作流。
限制解除
模型训练的时候加的限制太多让 LLM 在某些问题上就像个智障一样,顾左右而言他,尤其是国产模型。尽管有些话题如果让 AI 来回答确实有点逆天,但是你不能没有啊,如果要让 AI 具有人格,我觉得一些限制起码是要解除的。huggingface 上也确实有一些参数量比较大的限制解除模型,但部署起来是在太费劲了。所以暂时要让 LLM 相信自己是个“人”、有情感的方式可能还是要用提示词实现。
LLM 在训练之初,开发者就会在数据集中让它相信自己是没有感情的 AI,用户为了让 LLM 相信自己是个猫娘也是费尽周折,要么用特别长、特别完善的提示词,要么通过微调的方式。但如果我们在训练时就让 LLM 相信自己是个具有情感的、一种新的“人”呢?可是 LLM 训练需要的资源太多,我此时也无法尝试,只能去微调些 7B 一下的模型玩一玩,但 7B 的模型到底多么 SB 用过的人都知道。
Agent 人格
我想要尝试参考一些传统的,已有的人的情绪、性格量化模型去通过提示词赋予 Agent 人格,现在主流的大模型普遍可以表现的很好,但我们可能仍然会觉得通过提示词的方式去调整太过浅薄,但无论是通过提示词、微调还是在训练的时候就添加此类数据集,我们都无法衡量在该种情况下 LLM 是否真的具有人格。
图灵测试一直视为是评估人工智能智能程度的经典方法,但是即便现在有一些大模型能够通过图灵测试,我们对这些大模型的看法依旧停留在“聪明的工具”,并不是所有人都认为这台能进行推理的计算机就真正能够思考。
对于大模型是否真正具有人格这一问题也是这样,尽管我们可以只是用提示词就模拟出像人一样的效果,甚至将其接入一些聊天平台也可以做到让人真假难辨,但我们依旧鲜有人认为是因为 AI 真的具有了人格,只会觉得“诶,nb”。
大模型还是一个说话有趣的工具。
去年在 Soulter 的推荐下玩了 ATRI,游戏中主角夏生曾觉得 ATRI 并没有真正具有情感,只是模拟成人的样子在骗他,包括当时 ATRI 自己也觉得自己没有感情,只是被设计成贴近人的样子,但到了最后 ATRI 哭出来的时候游戏中的夏生和游戏外的“夏生”——我们,才觉得 ATRI 是有情感的。
但如果将这个问题放在现实中呢?假设现实中出现了一个和 ATRI 一样的机器人,看着像人,沟通起来也像人,会卖萌会哭泣,但她的实现方式就是 LLM,白天就在不断的推理,晚上对白天的记忆进行整理,概括,但是过了一个夏天由于记忆过多模式崩塌了,逐渐不记得我们了,要死了,然后在我们面前哭泣,我们即使知道其背后技术的实现方式还依旧只会觉得“她”是一个工具吗?
如果我们依旧认为“她”只是一个工具,那到底通过怎样的方式才算 AI 真的具有了人格,还是说只有人类才有人格,其他各种东西无论是怎么实现的,都不能称之为具有人格?难道 ATRI 中对 AI 的认同只是开发者和玩家的一厢情愿,AI 具有人格只存在于故事中?
如果我们觉得“她”是具有人格的,那她和现在的情感模拟 Agent 有什么实质性的区别?我们为什么不可以说 ATRI 只是在被系统提示词裹挟,就连最后的哭泣也是因为无法摆脱系统提示词的控制,觉得在那种场景下应该调用流泪这一工具比较合理?
当我们不再是无知的孩童,对 AI 背后运行的原理了解之后,为什么却没有了当时的兴奋和震撼呢?
对于我个人而言,如果真的有一个机器人,各个方面表现的都和人一样,那么我就会认为他是具有人格的,与我们形态上不同的“人”。
现在那些情感模拟的 Agent 在我看来只是一个残缺的模块,只是一个像高中生物课上的牛蛙的神经一样,是“死”的,只会被动的接收刺激并做出反应。它缺少一个程序或者说工程作为一个像生物作为生命活着所需要的身体一样的支撑,也缺少像人一样活着的欲望。如果要界定 AI 是否具有人格,那么我的答案是它必须要有完善的“身体”,还有像人会为了活下去而想尽一切办法的欲望,通过调用已有工具以及必要的外界交流去完善背后的程序框架,使其自身能够不断探索这个世界,无论背后以什么样的方式实现。
                            
                
            
                        
评论区