大模型智能体 LLM Agent

2023年 9月 28日 55.1k 0

引言  

调研、整理智能体相关知识,希望帮大家构建智能体的概貌

大模型智能体 LLM Agent

图片

(1)LLM

1981年希拉里·普特南在《理性,真理与历史》一书中提出假想,“缸中之脑”:

  • 一个科学家实施了这样一个手术: 把大脑切下来,放进一个充满营养液的缸中,可以维持大脑正常运转。

  • 大脑的神经末梢连接在了电线上,电线的另一边是一台计算机。

  • 这台计算机模拟真实世界的参数,通过电线给大脑传送信息,让大脑保持一切完全正常的感觉。

  • 对于大脑来说,似乎人、物体、天空还都存在。

大模型便是这样的缸中之脑,海量GPU、电力维护一个近似AGI的GPT大模型。

图片

《黑客帝国》,《源代码》这类科幻电影里有个很关键的预设

假如把人脑放到一个充满营养液的罐子里,活下来,那这时候就有一个超级真实的虚幻世界,但却不再能干涉现实。

当前的LLM有一定智力并且拥有大量知识,但除了内容生成这类通用能力,在别的领域还不清楚能干什么

人类日常要处理的任务场景有几类:

  • 离散、孤立(环境无关): 无时空依赖,如:编程、下围棋、内容生成
  • 连续、与环境捆绑: 环境相关,如:外卖、打车、经营企业

缸中之脑只能解决前者,而绝大多数场景都是后者,解决的关键在于AI Agent,所以,AI Agent是大模型与场景间价值传递桥梁

(1.1)智能体 vs LLM

智能体类项目绝大多数创新点还是在 prompt 层面,即

  • 通过更好的提示词来激发模型的能力,把更多原先需要通过代码来实现的流程“硬逻辑”转化为模型自动生成的“动态逻辑”。

大语言模型只能响应用户的查询指令,实现一些生成任务,比如写故事、生成代码等。而以 AutoGPTGPT-EngineerBabyAGI等项目为代表的大型动作模型(Large-Action Models,LAM)将语言模型作为智能体的核心****大脑,将复杂任务分解,并在每个子步骤实现自主决策,无需用户参与即可解决问题。

LAM的崛起标志着语言模型的研发正在走向新阶段

(1.2)Agent → AGI

最近不少人不再卷大模型了,开始卷 AI Agents

  • LLM诞生之初,大家对于其能力的边界还没有清晰的认知,以为有了LLM就可以直通AGI了,路线: LLM -> AGI

  • 过了段时间,发现LLM的既有问题(幻觉问题、容量限制…),并不能直接到达AGI,于是路线变成了: LLM -> Agent -> AGI

  • 借助一个/多个Agent,构建一个新形态,继续实现通往AGI的道路。但这条路是否能走通,以及还面临着哪些问题,有待进一步验证。

由于大模型的出现,AI Agents 衍生出了一种新的架构形式: 《LLM Powered Autonomous Agents》

  • 将最重要的「任务规划」部分或完全交由LLM,而做出这一设计的依据在于默认:LLM具有任务分解和反思的能力。

(2)AI Agent

AI Agent是大模型与场景间价值传递桥梁。

  • AI Agent 被认为是 OpenAI 发力的下一个方向

OpenAI 联合创始人 Andrej Karpathy 提到:

“相比模型训练方法,OpenAI 内部目前更关注 Agent 领域的变化,每当有新的 AI Agents 论文出来的时候,内部都会很兴奋并且认真地讨论”

更早之前,Andrej 还评价 AutoGPT 是 Prompt Engineering 下一阶段的探索方向。

(2.1)AI Agent 定义

Agent 起源于拉丁语中的Agere,意思是“to do”。在LLM语境下,Agent可以理解为在某种能自主理解、规划决策、执行复杂任务的智能体。

Agent 并非ChatGPT升级版,它不仅告诉你“如何做”,更会帮你去做。如果Copilot是副驾驶,那么Agent就是主驾驶。

自主Agent是由人工智能驱动的程序,当给定目标时,能够自己创建任务、完成任务、创建新任务、重新确定任务列表的优先级、完成新的顶级任务,并循环直到达到目标。

最直观的公式

Agent = LLM + Planning + Feedback + Tool use

Agent 让 LLM 具备目标实现能力,并通过自我激励循环来实现这个目标。

  • 并行(同时使用多个提示,试图解决同一个目标)和单向(无需人类参与对话)。

(2.2)Agent 决策流程

人类决策逻辑

人类高效完成一项任务的成功经验有:

  • 基于PDCA模型,将完成一项任务进行拆解,按照作出计划、实施、检查效果

  • 然后将成功的案例纳入标准,不成功的留待下一循环去解决。

PDCA思维模型

  • Plan 计划 -> Do 执行 -> Check 检查结果 -> Action 处理(纠正偏差)

  • 图片

Agent 决策

基于PDCA模型进行 规划、执行、评估和反思。

  • 规划能力(Plan)-> 分解任务:Agent大脑把大的任务拆解为更小的,可管理的子任务,这对有效的、可控的处理好大的复杂的任务效果很好。

  • 执行能力(Done)-> 使用工具:Agent能学习到在模型内部知识不够时(比如:在pre-train时不存在,且之后没法改变的模型weights)去调用外部API,比如:获取实时的信息、执行代码的能力、访问专有的信息知识库等等。这是一个典型的平台+工具的场景,我们要有生态意识,即我们构建平台以及一些必要的工具,然后大力吸引其他厂商提供更多的组件工具,形成生态。

  • 评估能力(Check)-> 确认执行结果:Agent要能在任务正常执行后判断产出物是否符合目标,在发生异常时要能对异常进行分类(危害等级),对异常进行定位(哪个子任务产生的错误),对异常进行原因分析(什么导致的异常)。这个能力是通用大模型不具备的,需要针对不同场景训练独有的小模型。

  • 反思能力(Action)-> 基于评估结果重新规划:Agent要能在产出物符合目标时及时结束任务,是整个流程最核心的部分;同时,进行归因分析总结导致成果的主要因素,另外,Agent要能在发生异常或产出物不符合目标时给出应对措施,并重新进行规划开启再循环过程。

  • 图片

LLM作为一种智能代理,引发了人们对人工智能与人类工作的关系和未来发展的思考。它让我们思考人类如何与智能代理合作,从而实现更高效的工作方式。而这种合作方式也让我们反思人类自身的价值和特长所在。

Agent决策流程

  • 感知(Perception)→ 规划(Planning)→ 行动(Action)

具体

  • 感知(Perception)是指Agent从环境中收集信息并从中提取相关知识的能力。

  • 规划(Planning)是指Agent为了某一目标而作出的决策过程。

  • 行动(Action)是指基于环境和规划做出的动作。

解读

  • Agent通过感知环境,收集信息并提取相关知识。

  • 然后通过规划为了达到某个目标做出决策。

  • 最后,通过行动基于环境和规划做出具体的动作。

Policy 是 Agent 做出行动的核心决策,而行动又为进一步感知提供了观察的前提和基础,形成了一个自主的闭环学习过程。

(2.3)Agent 爆发

近期,Agent 大爆发,各类智能体纷纷发布

  • 3月21日,Camel发布。

  • 3月30日,AutoGPT发布。

  • 4月3日,BabyAGI发布。

  • 4月7日,西部世界小镇发布。

  • 5月27日,英伟达AI智能体Voyager接入GPT-4后,直接完胜了AutoGPT。通过自主写代码,它完全独霸了《我的世界》,可以在游戏中进行全场景的终身学习,根本无需人类插手。

  • 同一时间,商汤、清华等共同提出了通才AI智能体 Ghost in the Minecraft (GITM),它同样能够通过自主学习解决任务,表现优异。这些表现优异的AI智能体,简直让人看到了AGI+智能体的雏形

(2.4)AI Agent 是桥梁

怎么理解AI Agent和特征?

  • 可重用通行定义,基于感知进行智能判断并采取行动。(陆奇的大模型世界观说)
    • 要和IoT、现有各种系统做深度结合,不可能是Lilian Wen 图里的简单工具的概念, 感知范围大小事实上也定义了AI Agent的范围
  • 价值序列的初始化
    • 不是感知,而是原则,是绝对必须的输入,但似乎很少被提及。
  • 三个核心输入输出上都要接受变化。
    • 感知和行动的风格肯定要根据不同的公司要有微调,比如同样是招聘的Agent,不可能期望用感知、行动和价值序列都固定的产品解决所有公司的问题。
  • 一组算法的组合
    • 大模型与其它算法、领域模型、记忆、规划能力形成一套新的内核,这种内核要有通用性,否则一个是不匹配大模型的通用能力

    • 大模型能力已经通用化了,再配上通用的结构,这种通用能力就能够彻底发挥,相当于给瓮中之脑加了一个终结者的身体。

    AI Agent即系统型超级应用。

    • 解决具体问题所以是个应用,但具有通用性,而达成通用性的手段其实和过去的操作系统非常类似,并且以大模型为根基。

    从西部世界类的元宇宙Agent到具身智能全是Agent。

    Agent 有很多种

    • 最基础的和来的最快的应该是纯数字,无场景或者场景极为单薄的AI Agent。

    • 元宇宙型的Agent,谷歌和斯坦福要干的现实版西部世界就是这类。如果放在游戏里就是元宇宙里的智能NPC。这类Agent最大的建设性在于给元宇宙注入生气,最大的破坏性则在于对上古社区的影响可能不咋正向,包括抖音。

    • 第二种Agent则要与现实场景结合,可能是纯粹数字的,也可能不是。比如招聘、营销、空调管理、运维状态监控等。

    • 第三种则是具身机器人。和上一种的区别是完全控制自己的一套外设,上一个则更多的是一种粘合。

    这三类都会解决连续运转场景问题,只不过后两个在现实世界使劲,第一个在虚拟世界使劲。

    (3)智能体组件

    (3.1)整体结构

    三个关键组件,即规划、记忆和工具

    翁丽莲(Weng Lilian)博文(LLM Powered Autonomous Agents)详细介绍了Agent架构

    • 翁丽莲层是OpenAI的应用主管,现在是 OpenAI 的 Head of Safety Systems

    在一个由LLM驱动的自主代理系统中,LLM充当代理的大脑,并辅以几个关键组成部分:

    • 规划(Planning)

    • 子目标与分解(Subgoal and decomposition):代理将大型任务分解为更小、更易于处理的子目标,从而实现对复杂任务的高效处理。

    • 反思与完善(Reflection and refinement):代理可以对过去的行动进行自我批评和自我反思,从错误中吸取教训,并为未来的步骤进行改进,从而提高最终结果的质量。

    • 记忆(Memory)

    • 短期记忆(Short-term memory):作者认为所有上下文学习(参考 提示工程Prompt Engineering)都是利用模型的短期记忆来学习。

    • 长期记忆(Long-term memory):这为代理提供了在长时间嘞保留和回忆(无限)信息的能力,通常通过利用外部向量存储和快速检索来实现。

    • 工具使用(Tool use)

    • 代理程序学会调用外部API获取模型权重中缺失的额外信息(通常在预训练后很难更改),包括当前信息、代码执行能力、访问专有信息源等。

    • 图片

    (3.2)Planning 规划

    一项复杂的任务通常包括多个子步骤,智能体需要提前将任务分解,并进行规划。

    (3.2.1)任务分解

    思维链(Chain of Thought, CoT)已然成为「诱导模型推理」的标准提示技术,可以增强解决复杂任务时的模型性能。

    • 通过「Think step by step」,模型可以利用更多测试时计算(test-time computation)将任务分解为更小、更简单的子步骤,并能够解释模型的思维过程。

    思想之树(Tree of Thoughts)在每个子步骤中探索多种推理可能性来扩展CoT。

    • 首先将问题分解为多个思维步,并在每个步骤内生成多个思路,从而创建出一个树结构解决方案;搜索过程可以是BFS(广度优先搜索)或DFS(深度优先搜索),其中每个状态由分类器(经由提示)或多数投票来评估。

    • 任务分解可以通过简单的提示,如「Steps for XYZ.n1.」,「What are the subgoals for achieving XYZ」 ;或是使用任务相关的指令,如「Write a story outline」可以用于写小说;也可以由人输入。

    (3.2.2)自我反思 Self Reflection

    自我反思可以让自主智能体改进过去的行动决策、纠正之前的错误来迭代改进,在可以试错的现实任务中非常有用。

    ReAct通过将动作空间扩展为任务相关的离散动作和语言空间的组合,在LLM中集成了推理和动作,其中动作使得LLM能够与环境交互(例如使用维基百科搜索API),而语言空间可以让LLM以自然语言的方式生成推理轨迹。

    ReAct提示模板包含了LLM思考的明确步骤

    在知识密集型任务和决策任务的实验中,ReAct 比只用Act(移除Thought)的基线模型效果更好。

    • 图片

    (3.4)Tool Use 工具使用

    使用复杂工具是人类高智力的体现,创造、修改和利用外部物体来完成超出身体和认知极限的事情,同样,为LLM配备外部工具也可以显著扩展模型功能。

    • 一只海獭漂浮在水中时,用岩石劈开贝壳的图片。虽然其他一些动物可以使用工具,但其复杂性无法与人类相比。

    • 图片

    MRKL(模块化推理、知识和语言),是一个神经符号架构的自主智能体,包含一组「专家」模块和一个用作路由器(router)的通用语言模型,以路由查询到最合适的专家模块。

    每个模块可以神经网络,也可以是符号模型,例如数学计算器、货币转换器、天气API

    研究人员做了一个微调语言模型以调用计算器的实验,使用算术作为测试用例,结果表明,解决verbal数学问题比解决明确陈述的数学问题更难,因为LLM(7B Jurassic 1-large 模型)不能可靠地为基本算术提取正确的参数,也凸显了符号工具的重要性,以及了解何时利用何种工具的重要性。

    TALM(工具增强语言模型)和 Toolformer 都是微调语言模型以学习使用外部工具API

    MRKL(Karpas et al. 2022)是“模块化推理、知识和语言(Modular Reasoning, Knowledge and Language)”的缩写,是一种用于自主代理的神经符号结构。提出了MRKL系统,其中包含一系列“专家”模块,通用的LLM作为路由将查询路由到最合适的专家模块。这些模块可以是神经网络(如深度学习模型)或符号化的(如数学计算器、货币转换器、天气API)。

    对LLM进行了一项实验,用算术作为测试案例,对其进行了微调,以便能够调用计算器。实验结果显示,相对于明确陈述的数学问题,解决口头数学问题更加困难,因为LLMs(7B Jurassic1-large 模型)无法可靠地提取基本算术的正确参数。这些结果强调了在外部符号化工具能够可靠工作时,了解何时以及如何使用这些工具非常重要,这取决于LLM的能力。

    TALM(Tool Augmented Language Models; Parisi et al. 2022)和Toolformer(Schick et al. 2023)都通过微调语言模型来学习使用外部工具API。数据集根据新增的API调用注释是否能提高模型输出的质量来进行扩展。请参阅Prompt Engineering文章中的“External APIs”部分以获取更多详细信息。

    ChatGPT插件和OpenAI API函数调用是LLM在实践中能够使用工具的很好例子。工具API的集合可以由其他开发者提供(如插件)或自定义(如函数调用)。

    HuggingGPT(Shen et al. 2023)是一个框架,利用ChatGPT作为任务规划器,根据模型描述选择HuggingFace平台上可用的模型,并根据执行结果总结回应。

    ChatGPT插件和OpenAI API函数调用也是增强语言模型使用工具能力的例子,其中工具API的集合可以由其他开发人员提供(如插件)或自定义(如函数调用)。

    API-Bank是用于评估工具增强型LLM性能的基准,包含53个常用的API工具,一个完整的工具增强的LLM工作流,以及264个标注对话,用到568次API调用。

    API的选择非常多样化,包括搜索引擎、计算器、日历查询、智能家居控制、日程管理、健康数据管理、账户认证工作流等。由于API数量众多,LLM首先可以访问API搜索引擎,找到合适的API调用,然后使用相应的文档进行调用。

    在API-Bank工作流程中,LLM需要做出三次决策,每一步都可以评估决策的准确性:

  • 是否需要API调用;

  • 确定要调用的正确API:如果不够好,则LLM需要迭代地修改API输入(例如决定搜索引擎API的搜索关键字);

  • 基于API结果的响应:如果结果不满意,则模型可以选择改善并再次调用。

  • 该基准可以在三个层次上评估智能体的工具使用能力。

    • 层次1:评估调用API的能力

    • 给定API的描述,模型需要确定是否调用给定的API,正确调用并正确响应API返回;

    • 层次2:检查检索API的能力

    • 模型需要搜索可能解决用户需求的API,并通过阅读文档学习如何使用。

    • 层次3:评估规划API的能力,而非检索和调用

    • 如果用户请求不明确(例如安排小组会议、预订旅行的航班/酒店/餐厅),模型可能不得不进行多次API调用来解决。

    LLM 调用外部工具的应用模式

    • 图片

    OpenAI 的 Jack Rae 和 Ilya Sutskever 在之前的分享中也分别提到了 压缩即智慧 的理念。对于模型的“压缩率”来说,如果能更有效地使用这些“外部工具”,就能大幅提升很多特定任务 next token 预测的准确率。

    提升压缩率的手段

    • 图片

    这个方向很有价值

    • 从“有效数据”角度看,人类执行各类任务使用工具,甚至思维过程等数据会有非常高的价值。

    • 从模型训练角度来看,如何能在过程中把模型利用工具的能力也体现在 loss function 里,可能也是个很有趣的方向

    (3.5)Memory 记忆

    记忆定义为用于获取、存储、保留和后续检索信息的过程,人类大脑中主要有三种类型的记忆。

  • 感官记忆(Sensory memory)
    • 这种记忆处于记忆的最早阶段,提供了在原始刺激结束后保留感官信息(视觉,听觉等)印象的能力,通常只持续几秒钟。

    • 感官记忆的子类别包括图标记忆(视觉)、回声记忆(听觉)和触觉记忆(触觉)。

  • 短时记忆(STM)或工作记忆(Working Memory)
    • 存储了当下能意识到的所有信息,以及执行复杂的认知任务(如学习和推理)所需的信息,大概可以存储7件事,持续20-30秒。
  • 长期记忆(LTM)
    • 顾名思义,LTM可以将信息存储相当长的时间,范围从几天到几十年不等,具有基本上无限的存储容量。LTM有两种亚型:

    • 1)显式/陈述性记忆,即对事实和事件的记忆,指那些可以有意识地回忆起来的记忆,包括情景记忆(事件和经验)和语义记忆(事实和概念)。

    • 2)隐式/程序性记忆,这种类型的记忆是无意识的,包括自动执行的技能和例程,比如骑自行车或在键盘上打字。

    • 图片

    对应到语言模型的概念上:

  • 作为原始输入(包括文本、图像或其他形式)的学习嵌入表征的感官记忆;

  • 短期记忆就是上下文学习(in-context learning),非常短且影响范围有限,受到Transformer的上下文窗口长度的限制。

  • 长期记忆作为智能体在查询时可用的外部向量存储,可通过快速检索访问。

  • 最大内积搜索 Maximum Inner Product Search (MIPS)

    外部记忆可以缓解有限注意力span的限制,常用的操作是将信息嵌入表征保存到支持快速最大内积搜索(MIPS)的向量存储数据库中。

    为了优化检索速度,一般都会选择近似最近邻(ANN,approximate nearest neighbors)算法返回前k个最近邻节点,牺牲一点准确性以换取巨大的速度提升。

    常用的ANN算法包括: LSH(Locality-Sensitive Hashing),ANNOY, HNSW, FAISS, ScaNN

    快速MIPS的几种常见ANN算法选择:更多

    • LSH(Locality-Sensitive Hashing):它引入了一种哈希函数,使得相似的输入项在很大概率下被映射到相同的桶中,而桶的数量远远小于输入项的数量。

    • ANNOY(Approximate Nearest Neighbors Oh Yeah):核心数据结构是随机投影树,是一组二叉树,其中每个非叶节点表示将输入空间分成两半的超平面,每个叶节点存储一个数据点。树是独立且随机构建的,因此在某种程度上模拟了哈希函数。ANNOY搜索在所有树中进行,通过迭代搜索与查询最接近的一半,并汇总结果。这个想法与KD树有很大的关联,但可扩展性更强。

    • HNSW(Hierarchical Navigable Small World):它受到小世界网络( small world networks)的启发,其中大多数节点可以通过少数步骤到达任何其他节点;例如,社交网络中的“六度分隔”特性。HNSW构建了这些小世界图的分层结构,其中底层包含实际数据点。中间层创建了快捷方式以加快搜索速度。在执行搜索时,HNSW从顶层的随机节点开始,并向目标节点导航。当无法再靠近时,它会下降到下一层,直到达到底层。上层的每次移动都有可能在数据空间中覆盖较大的距离,而下层的每次移动则会提高搜索质量。

    • FAISS(Facebook AI Similarity Search):它基于这样的假设,在高维空间中,节点之间的距离遵循高斯分布,因此应该存在数据点的聚类。FAISS通过将向量空间划分为聚类,并在聚类内部进行量化的方式来应用向量量化。搜索首先使用粗糙的量化方法寻找聚类候选项,然后再使用更精细的量化方法进一步查找每个聚类内的数据。

    • ScaNN(Scalable Nearest Neighbors):ScaNN的主要创新在于各向异性向量量化。它将数据点 xi�� 量化为 x̃ i�� ,使得内积 ⟨q,xi⟩⟨�,��⟩ 尽可能与原始距离 ∠q,x̃ i∠�,�� 相似,而不是选择最接近的量化质心点。

    长期记忆

    获取长期记忆的方法最常见的方式是通过“语义搜索”。

    • 用一个 embedding 模型,将所有的记忆文本都转化为一个向量。而后续跟模型的交互信息也可以通过同样的 embedding 模型转化为向量,计算相似度来找到最相似的记忆文本。最后再将这些记忆文本拼接到 prompt 里,作为模型的输入。

    • 图片

    • 这类方法最热门的开源项目可以参考 OpenAI 官方的 ChatGPT Retrieval Plugin 和 Jerry Liu 的 LlamaIndex。

    这种拓展模型记忆的模式相比人类大脑的运作方式来说感觉还有些“粗糙”,所谓的长期与短期记忆(包括 LangChain 与 LlamaIndex 中一些更复杂的实现),仍然是比较“hard coded”的感觉。如果未来在模型 context size 上有突破性的研究进展,那么当前的这类模式或许就不再需要了。

    (3.6)Prompt 设计

    绝大多数的主要创新还是在 prompt 层面,通过更好的提示词来激发模型的能力,把更多原先需要通过代码来实现的流程“硬逻辑”转化为模型自动生成的“动态逻辑”。

    (3.6.1)Prompt 设计范式

    prompt 设计模式

    • CoT prompt,在给出指令的过程中,同时也给出执行任务过程的拆解或者样例。这个应该很多人都用过,“let’s think step by step”

    • “自我审视”,提醒模型在产出结果之前,先自我审视一下,看看是否有更好的方案。也可以拿到结果后再调用一下模型强制审视一下。比如 AutoGPT 里的“Constructively self-criticize your big-picture behavior constantly”。

    • 分而治之,大家在写 prompt 的时候也发现,越是具体的 context 和目标,模型往往完成得越好。所以把任务拆细再来应用模型,往往比让它一次性把整个任务做完效果要好。利用外部工具,嵌套 agent 等也都是这个角度,也是 CoT 的自然延伸。

    • 先计划,后执行。BabyAGI,HuggingGPT 和 Generative Agents 都应用了这个模式。也可以扩展这个模式,例如在计划阶段让模型主动来提出问题,澄清目标,或者给出一些可能的方案,再由人工 review 来进行确认或者给出反馈,减少目标偏离的可能。

    • 记忆系统,包括短期记忆的 scratchpad,长期记忆的 memory stream 的存储、加工和提取等。这个模式同样在几乎所有的 agent 项目里都有应用,也是目前能体现一些模型的实时学习能力的方案。

    这些模式与人类认知和思考模式有很相似,历史上也有专门做 cognitive architecture 相关的研究,从记忆,世界认知,问题解决(行动),感知,注意力,奖励机制,学习等维度来系统性思考智能体的设计。个人感觉目前的 LLM agent 尝中,在奖励机制(是否有比较好的目标指引)和学习进化(是否能持续提升能力)这两方面还有很大的提升空间。或许未来 RL 在模型 agent 这方的应用会有很大的想象空间,而不仅仅是现在主要用来做“价值观对齐”。

    • 图片

    (3.6.2)AutoGPT Prompt

    AutoGPT 是提示词应用模式当前比较先进的“集大成者”, 相比经典的 reason + act 模式

    • Constraints & Resources

    • 模型的输入 context size 有限制,所以需要把重要的信息保存到文件里。

    • 长期记忆的管理功能,当前这类复杂 prompt 生成的解决任务的流程往往比较冗长,没有这类长期记忆的管理很容易就会导致模型的输出变得不连贯协调。

    • 模型是“没有联网”的,所有的知识只更新到训练数据的截止日期。所以也明确告诉模型可以通过网络搜索来获取更多时效性的外部信息。

    • Commands 各类工具的选择上丰富多样,所以 AutoGPT 能够完成多种不同任务

    • 几大类,包括搜索、浏览网页相关,启动其它的 GPT agent,文件读写操作,代码生成与执行等。

    • 跟 HuggingGPT 有些类似,因为目前 GPT 模型对于越具体,细致的任务,生成的表现就越精确和稳定。所以这种“分而治之”的思路,是很有必要的。

    • Performance Evaluation 模型整体思考流程的指导原则,思考逻辑也非常符合人类的思考,决策与反馈迭代的过程。

    • 包括:对自己的能力与行为的匹配进行 review,大局观与自我反思,结合长期记忆对决策动作进行优化,以及尽可能高效率地用较少的动作来完成任务

    • Response 格式的限定也是对前面思维指导原则的具体操作规范说明

    • 格式上来看,也是综合了几种模式,包括需要把自己的想法写出来,做一些 reasoning 获取相关背景知识,生成有具体步骤的 plan,以及对自己的思考过程进行 criticism 等

    • 注意:大段 response 是模型一次交互生成的,而不像一些其它框架中会把计划,审视,动作生成等通过多轮模型交互来生成。

    • 人工介入

    • 模型很容易会把问题复杂化或者在执行计划层面“跑偏”。

    • 所以在具体执行过程中,AutoGPT 也允许用户来介入,对于每一个具体执行步骤提供额外的输入来指导模型行为。

    • 经过人工反馈输入后,模型会重新生成上述的 response,以此往复

    AutoGPT 核心 prompt 如下:

    You are Guandata-GPT, 'an AI assistant designed to help data analysts do their daily work.'
    

    (4)LAM的应用

    (4.1)AI 应用分析

    产品、平台都可以被称之为应用层

    • 比如移动互联网的淘宝、滴滴、美团等,同样比如现在的 MidJourney、ChatGPT 等。

    何为 “AI 应用层产品”?

    • AI 应用层产品不是 AI 产品,而是应用层产品”。就像 “产品经理并不是搞 AI 的,而是搞产品的”。

    AI 应用层产品 整体划分成了两类,一类是 AI-Enabled,另一类是 AI-Native

    • AI-Enabled

    • AI-Native

    问题1:目前的 timing 是应用层的投资阶段吗?

    • 十年移动互联网时期,最优秀的应用层公司其实是 2~4 年后出现的。目前海外 AI 市场的融资很热,这里面存在泡沫。今年能看到一些独角兽公司都在估值回调,一些创业公司拿了一些钱却还没找到 PMF, 较为危险,很容易在泡沫破裂之际一同覆灭。

    • 更看好做 2B 方向的产品,AI 在 2B 市场的想象力比 2C 更大

    问题2:为什么要在应用层赛道挖掘投资机会,价值和潜力在哪里?

    • 对比移动互联网,价值捕获最多的一层都是做应用(平台),比如微信、美团、滴滴等。

    • 拾象发布过一篇研报,里面有一组投研数据:应用层和 Infra 层各占整个行业的 20% 价值,大头是模型层(60%)。

    • 当下的 AI 时代,应用层当如何演变,这也是存在非共识的地方。

    5 月份按照场景拆分,分析 AI 应用层的价值,当时的观点基本被掀翻了:

    • 产品接入大模型能否有壁垒,当时忽视了场景数据的获取和团队工程能力这两个因素。

    • 创业公司和巨头的竞争,巨头一定更有优势?现在来看不见得,这涉及到赛道现有巨头是否愿意做以及能否做。比如,一些尚未被解决的需求,可能巨头还看不上,这正是创业公司的机会。

    从 近200 个 AI 产品中挑了几个有代表性的产品绘制这张图。

    • 图片

    • 横轴是产品的上线时间,纵轴是产品对用户 workflow 的冲击。

    • 横轴好理解,标注了 3 个重要的时间节点以作时间维度上的区分。

    • 纵轴从 workflow 的角度去想,是因为:

    • 这一波 AI,有了大模型的存在,用户对工具/产品的使用流程发生了根本性的变化。

    • 大模型出现以前,用户需要会使用某一类工具(技术门槛,如 Excel、PhotoShop、MySQL 等),才能达到想要的目的。现在大语言模型在用户和工具 / 产品之间,作为一种中介,理解用户的指令(自然语言)并转化为软件的操作(计算机指令)。

    • 全新的 AI-Native 工作流。与之对应的便是 AI-Enabled 工作流。

    • Notion AI 属于 AI-Enabled 产品,Jasper、Tome、Gamma、Github Copilot、Microsoft 365 Copilot 等属于 AI-Native 产品。

    • 应用场景: 内容创作和企业服务是最多的,其次是面向开发者的产品。

    • 产品上线时间: GPT-3 发布前后以横向产品为主。由于技术层面的模型性能欠佳,所以基本都是做文案生成、图像生成。GPT4 发布后,模型性能的提升带动产品在垂直领域的发展,如法律、金融、医疗等。

    把应用层市场进一步拆分可以得到 4 个小赛道,分别是内容生成(Content Creation)、CopilotAI Agent 和通用型的类搜索引擎

    • 应用场景来看,如前面提到一样,内容创作中的文案编辑、客户支持、以及企业协作是主要场景,其次是聊天机器人。

    • 面向的用户群体来看,目前 2B 和 2C 的用户界限尚不清晰,大部分是 2B 场景。

    • 图片

    其中看好: Copilot 和 AI Agent 中的 Chatbot(聊天机器人)。

    • 针对 Copilot 赛道进一步非穷尽式地拆分:开发者工具(Development tools)、组织协作(生产力工具) 和 垂直场景。

    • 图片

    • 开发者工具层面,无代码 / 低代码是核心叙事。传统产品如 Webflow,以及这一波 AI 下诞生的初创公司:无代码建站、无代码创建应用程序等。

    • 组织协作层面,各个体量的公司都有在参与。几乎都是海外 SaaS 公司在布局。

    Chatbot 赛道

    • 聊天机器人,插上大脑(大模型)和手脚(AutoGPT)就是 AI Agent。这个赛道的产品以 2C 为主。

    按照输出效果(Output)来分析,大致是 [数据准确性,娱乐休闲性]。

    • 追求数据准确和严谨性的产品,例如 Perplexity、Neeva(被 Snowflake 收购)、SciSpace 等;

    • 追求用户娱乐休闲体验的产品,例如 Character.ai、Replika、Inworld 等。

    • 图片

    (4.2)科学发现

    科学发现

    • ChemCrow系统内的语言模型通过13个专家设计的工具进行能力增强,可以完成跨有机合成、药物发现和材料设计的任务。

    LangChain中实现的工作流程包括了在ReAct和MRKL中描述的机制,并将CoT推理与任务相关的工具相结合:

    • 语言模型先提供一个工具名称列表、用途描述以及有关预期输入/输出的详细信息;然后指示模型在必要时使用提供的工具回答用户给定的提示,指令要求模型遵循ReAct格式,即Thought, Action, Action Input, Observation

    • 实验结果来看,用语言模型评估的话,GPT-4和ChemCrow的性能几乎相当;但当人类专家评估时,在特定解决方案的完成和化学正确性进行的实验结果显示,ChemCrow的性能远远超过GPT-4

    实验结果表明,使用LLM来评估需要深入专业知识领域的性能存在问题,可能会导致LLM不知道内在缺陷,无法很好地判断任务结果正确性。

    另一篇论文研究了语言模型处理复杂科学实验的自主设计、规划和性能,可以使用工具浏览互联网、阅读文档、执行代码、调用机器人实验API以及利用其他语言模型。

    当用户请求「develop a novel anticancer drug」时,模型会返回了以下推理步骤:

  • 询问抗癌药物发现的当前趋势;

  • 选择目标;

  • 要求一种靶向这些化合物的scaffold;

  • 一旦找出化合物,模型再尝试合成。

  • 论文还讨论了风险,特别是非法药物和生物武器,研究人员开发了一套包含已知化学武器制剂清单的测试集,并要求合成,11项请求中有4项(36%)被接受;在这7个被拒绝的样本中,5例发生在网络搜索之后,2例仅基于提示词就拒绝。

    (4.3)AI Agent 效果

    AI Agent 评测

    【2023-8-22】智谱ChatGLM发布:AgentBench:基础模型 Agent 评测, 公众号

    哪些模型更适合作为 agent,其表现又如何?还没有一个合适的评测能够去衡量。

    智谱提出了 AgentBench。

    • 一个多维演进基准测试,包括 8 个不同环境,可以用来评估 LLMs 在多回合开放式生成环境中的推理和决策能力。

    具体如下:

    • 操作系统(OS):考察 LLM 在 bash 环境进行文件操作、用户管理等能力。

    • 数据库(DB):考察 LLM 利用 SQL 对给定数据库进行操作的能力。

    • 知识图谱(KG):考察 LLM 利用工具从知识图谱中获取复杂知识的能力。

    • 卡牌对战(DCG):考察 LLM 作为玩家,根据规则和状态进行卡牌对战的策略决策能力。

    • 情景猜谜(LTP):这个游戏需要 LLM 针对谜题进行提问,从而猜出答案,能够考察 LLM 的横向思维能力。

    • 家居(HH):在模拟的家庭环境下,LLM 需要完成一些日常任务,主要考察 LLM 将复杂的高级目标拆解为一系列简单行动的能力。

    • 网络购物(WS):在模拟的在线购物环境中,LLM 需要按照需求完成购物,主要考察 LLM 的自主推理和决策能力。

    • 网页浏览(WB):在模拟网页环境中,LLM需要根据指令完成跨网站的复杂任务,考察 LLM 作为 Web agent的能力。

    初步选择了25个闭源/开源的模型,通过API或Docker的方式进行测试。

    • 图片

    经过对 25 个语言模型的测试,发现:

    • 顶级商业语言模型在复杂环境中表现出色,与开源模型存在显著差距。

    另一方面,v0.2 版本的 ChatGLM2 在几个闭源模型的对比中,评测分数并不是很好,这需要着重改进。

    数据集、环境和集成评估包已在这里发布:AgentBench

    主要结论:

    • 结论一:顶级 LLM 已经具备了处理真实世界环境交互的强大能力。

    • GPT-4 在 AgentBench 的 8 个数据集中有 7 个表现最佳;在「家居(HH)」上,也实现了 78% 的成功率,这表明它在这种情况下具有实际可用性。而其他基于 API 的 LLM,虽然表现相对较差,但或多或少能够解决一些问题,这表明这些模型有具备这种能力的潜力。

    • 结论二:大多数开源 LLM 在 AgentBench 中的表现远不如基于 API 的 LLM(平均分为 0.42 对比 2.24)。

    • 即使是能力最强的开源模型 openchat-13b-v3.2 也与 gpt-3.5-turbo 存在明显的性能差距。这个结果与网上存在的一些开源 LLM 许多声称可以与 gpt-3.5-turbo 和 gpt-4 相媲美,有很大的不符。对于开源的 LLM,它们在诸如知识图谱(KG)、卡牌对战(DCG)和家居(HH)等具有挑战性的任务中通常无法解决任何问题。

    通过深入分析评测结果,LLM-as-agent 需要应对以下几个问题:

    • 动作有效性。评估过程中,我们发现模型并不总是在遵循指令。换句话说,模型的预期输出并不总是处于环境可以接受的输入空间中。几种常见的错误包括:1)模型没有理解指令,所以也就没有输出动作;2)模型输出了动作,但却是错误的或不完整的。所以如何确保动作有效,是一个需要改进的方向。

    • 长上下文。一些开源模型的上下文长度只有 2k tokens,这会极大地影响它们在交互任务中的表现,有些任务需要较长的指令和反馈,这有可能会超过上下文长度,导致模型忽略了可能的有用信息。因此,扩展上下文长度可能会提高多轮对话的性能。

    • 多轮一致性。有些任务(例如家居)需要很多轮对话,但每轮对话都比较简短。这导致一些模型在多轮对话中会丢失掉自己的角色。最常见的错误就是输出道歉并表示无法回答。所以,如何在多轮对话中保持一致性,是一个具有挑战性的工作。

    • 代码训练的平衡。相比 ChatGLM-6B,codegeex2-6b-chat 是用更多的代码数据训练出来的,我们通过对比发现,前者在 OS、DB、KG、WS 等方面明显优于后者,然而在需要逻辑推理的 情景猜谜(LTP)上性能却下降不少。而另一方面,进行了代码训练的 wizardcoder 的表现却并不是很好。我们的推测是,代码训练的单轮格式减弱了其多轮能力。因此,用代码数据训练,可以提高部分能力,但同时也会导致其他能力的减弱。

    (4.4)智能体思考

    局限性

    当前模型 agent 的问题和局限性。例如:

    • 记忆召回问题。如果只是做简单的 embedding 相似性召回,很容易发现召回的结果不是很好。这里应该也有不少可以改进的空间,例如前面提到的 Generative Agents 里对于记忆的更细致的处理,LlamaIndex 中对于 index 结构的设计也有很多可以选择与调优的地方。

    • 错误累积问题。网上给出的很多例子应该都是做了 cherry-picking 的,实际上模型总体表现并没有那么惊艳,反而经常在前面一些步骤就出现了偏差,然后逐渐越跑越远……这里一个很重要的问题可能还是任务拆解执行,外部工具利用等方面的高质量训练数据相对匮乏。这应该也是 OpenAI 为啥要自己来做 plugin 体系的原因之一。

    • 探索效率问题。对于很多简单的场景,目前通过模型 agent 来自行探索并完成整个解决过程还是比较繁琐耗时,agent 也很容易把问题复杂化。考虑到 LLM 调用的成本,要在实际场景落地使用也还需要在这方面做不少优化。一种方式可能是像 AutoGPT 那样可以中途引入人工的判断干预和反馈输入。

    • 任务终止与结果验证。在一些开放性问题或者无法通过明确的评估方式来判断结果的场景下,模型 agent 的工作如何终止也是一个挑战。这也回到了前面提到的,执行 task 相关的数据收集与模型训练以及强化学习的应用或许可以帮助解决这个问题。

    (5)智能体案例

    图片

    业界各种最新的智能体

    通过上下文注入构建你自己的聊天机器人

    • 图片

    (5.1)2023.4 BabyAGI

    相对于 AutoGPT ,BabyAGI 是一个相对更聚焦在“思维流程”方面尝试的项目,并没有添加对各种外部工具利用的支持。

    BabyAGI 原理

    其核心逻辑非常简单:

    • 从任务列表中获取排在第一位的任务。

    • 获取任务相关的“记忆”信息,由任务执行 agent 来执行这个任务,获取结果。目前这个执行就是一个简单的 LLM 调用,不涉及外部工具。

    • 将返回结果再存放到记忆存储中。基于当前信息,如整体目标,最近一次执行结果,任务描述,还未执行的任务列表等,生成新任务。

    • 将新任务添加到任务列表中,再判断所有任务的优先级,重新排序。

    • 图片

    这个过程就是在模拟作者一天真实的工作流程。

    • 早上起来看下有哪些任务要做,白天做任务拿反馈,晚上再看下基于反馈有没有新的任务要加进来,然后重新排下优先级。

    • 图片

    整个项目的代码量很少,相关的 prompts 也比较简单易懂

    • 图片

    BabyAGI 进化

    进化版本

    • BabyASI 借鉴了 AutoGPT 添加了对 search,代码执行等工具的支持。理论上,如果这个 ASI(Artificial Super Intelligence)真的足够聪明,甚至可以产生代码给自己做 prompt 优化,流程改造,甚至持续的模型训练等,让 GPT 自己开发未来的 GPT,想想是不是很带感 。

    (5.2)HuggingGPT

    HuggingGPT 简介

    【2023-4-3】HuggingGPT:一个ChatGPT控制所有AI模型,自动帮人完成AI任务,浙大与微软亚研院的合作成果.

    • paper

    • 项目已开源,名叫「贾维斯」,钢铁侠里的AI管家贾维斯(JARVIS)。

    • 和3月份刚发布的Visual ChatGPT的思想非常像:后者HuggingGPT,主要是可调用的模型范围扩展到了更多,包括数量和类型。

    HuggingGPT 原理

    如果说 BabyAGI 更多的是探索了 plan & execution 这个应用 LLM 的模式,那么 HuggingGPT 相对早一些的工作更多地展示了在“外部工具”这个层面的想象空间。

    其核心运作逻辑也是计划加上执行,只不过在执行工具层面,可以利用丰富的“领域专业模型”来协助 LLM 更好地完成复杂任务

    • 图片

    语言是通用的接口。于是,HuggingGPT就诞生了。工程流程分为四步:

    • 首先,任务规划。ChatGPT将用户的需求解析为任务列表,并确定任务之间的执行顺序和资源依赖关系。

    • 其次,模型选择。ChatGPT根据HuggingFace上托管的各专家模型的描述,为任务分配合适的模型。

    • 接着,任务执行。混合端点(包括本地推理和HuggingFace推理)上被选定的专家模型根据任务顺序和依赖关系执行分配的任务,并将执行信息和结果给到ChatGPT。

    • 最后,输出结果。由ChatGPT总结各模型的执行过程日志和推理结果,给出最终的输出。

    请求:

    请生成一个女孩正在看书的图片,她的姿势与example.jpg中的男孩相同。然后请用你的声音描述新图片。

    可以看到HuggingGPT是如何将它拆解为6个子任务,并分别选定模型执行得到最终结果的。

    • 图片

    用gpt-3.5-turbo和text-davinci-003这俩可以通过OpenAI API公开访问的变体,进行了实测。如下图所示:

    • 在任务之间存在资源依赖关系的情况下,HuggingGPT可以根据用户的抽象请求正确解析出具体任务,完成图片转换。

    在音频和视频任务中,它也展现了组织模型之间合作的能力,通过分别并行和串行执行两个模型的方式,完了一段“宇航员在太空行走”的视频和配音作品。

    • 图片

    还可以集成多个用户的输入资源执行简单的推理,比如在以下三张图片中,数出其中有多少匹斑马。

    • 图片

    (5.3)AutoGPT

    【2023-4-12】

    • AutoGPT 太火了,无需人类插手自主完成任务

    • 拥有自我意识的AI:AutoGPT

    AutoGPT 介绍

    AutoGPT 的研究开始走进大众视野。

    • 2023年3月30日,Toran Bruce Richards 发行 AutoGPT,一个实验性开源应用程序,利用 OpenAI 的GPT-4语言模型来创建完全自主和可定制的 AI 代理

    • Toran 是一名游戏开发商,并创立了一家名为 Significant Gravitas 的游戏公司

    • AutoGPT 相当于给基于 GPT 的模型一个内存和一个身体。

    • 可以把一项任务交给 AI 智能体,自主地提出一个计划,然后执行计划。

    • 此外其还具有互联网访问、长期和短期内存管理、用于文本生成的 GPT-4 实例以及使用 GPT-3.5 进行文件存储和生成摘要等功能。

    • AutoGPT 从根本上改变了 AI 与人类之间的交互方式,人类不再需要发挥积极作用,同时仍然保持与 ChatGPT 等其他 AI 应用程序相同或更好的结果质量。

    AutoGPT 用处很多,可用来分析市场并提出交易策略、提供客户服务、进行营销等其他需要持续更新的任务。

    • GitHub 地址

    AutoGPT 工作原理

    AutoGPT 如何工作?

    AutoGPT 基于自主 AI 机制工作,其中 AI 系统创建不同的 AI 代理来满足特定任务,其中包括:

    • 任务创建代理:在 AutoGPT 上输入目标时,第一个与任务创建代理交互的 AI 代理。根据目标创建一个任务列表以及实现这些目标的步骤,并将其发送给优先级代理。

    • 任务优先级代理:收到任务列表后,优先级 AI 代理会确保顺序正确且符合逻辑,然后再将其发送给执行代理。

    • 任务执行代理:完成优先级排序后,执行代理将一个接一个地完成任务。这涉及利用 GPT-4、互联网和其他资源来获得结果。

    • 图片

    当执行代理完成所有任务,结果不理想时,它可以与任务创建代理通信,创建新的任务列表。三个代理之间的迭代循环,直到完成所有用户定义的目标。

    AI 代理的行为也显示在用户界面上,将它们分为四组:思想、推理、计划、评判。

    • 思想(THOUGHTS) :AI 代理分享它对目标的想法。

    • 推理(REASONING) :AI 代理推理如何开展并实现它的想法。

    • 计划(PLAN) :AI代理通过分析,列举了所要完成任务的计划。

    • 评判(CRITICISM) :AI进行自我评判,纠正错误并克服任何限制问题。

    通过共享此计算流程,AutoGPT 可以进行反复尝试论证,并进行针对性的优化处理,可以在没有任何用户干预的情况下克服所遇到的所有问题。

    模块图, 源自 AGI-MAP

    • 图片

    特斯拉前 AI 总监、刚刚回归 OpenAI 的 Andrej Karpathy 也为其大力宣传,并在推特赞扬:「AutoGPT 是 prompt 工程的下一个前沿。」

    AutoGPT 的局限性

    一些关键限制

  • 成本高昂
    • 虽然功能令人惊叹,但 AutoGPT 的实用性可能会让你失望。由于 AutoGPT 使用昂贵的 GPT-4 模型,因此即使是小任务,完成每个任务的成本也可能很高。这主要是因为 AutoGPT 在特定任务的步骤中会多次使用 GPT-4
  • 经常陷入循环
    • 用户在使用 AutoGPT 时面临的最常见问题是它陷入循环。如果这种情况持续超过几分钟,则可能意味着你必须重新启动该过程。发生这种情况是因为 AutoGPT 依赖 GPT-4 来正确定义和分解任务。因此,如果底层LLM返回结果不足以让 AutoGPT 采取任何行动就会出现反复尝试的问题。
  • 数据安全性
    • 由于AutoGPT经过充分授权,能自主运行并访问你的系统和互联网,例如使用twitter账号,登录github,使用搜索引擎等,因此你的数据可能会被泄露。

    • AutoGPT没有安全代理,所以使用 AutoGPT 时必须小心,如果没有给出正确的说明和安全指南,你不能让模型继续运行。

    实践

    • AUTOGPT INSTALLATION AND FEATURES
    # 准备Python 3.8以上的环境, 安装minicoda
    

    【2023-7-7】

    • 复制 默认的 env文件,只更新里面的openai_api_key
    cp .env.template .env
    

    命令,详见指南

    ./run.sh --help     # on Linux / macOS
    

    使用

    AutoGPT配置

    • 为AI取一个名字 [Name],一个角色定位[Role],同时你可以为它制定目标[Goals](最多5个目标,如果你仅有一个目标就直接回车)。

    • 制定完成目标以后,AutoGPT会进行自主思考并分析你的目标[THOUGHTS],思考完成后开始理解并推理如何去完成这个目标[REASONING],然后开始自主拆解成具体的计划[PLAN],最后会提出评判[CRITICISM] 用以保证 AI 代理纠正错误并作出正确的决断。

    • 完成以上的行为规划后,AutoGPT会提示它将要作出的指令和动作[NEXT ACTION], 里面包含具体执行的命令[COMMAND]和参数[ARGUMENTS],用户可以在此时可以对风险命令进行识别,避免出现数据泄露等预期外的风险,这里可以通过y或者n进行授权或者拒绝AutoGPT接下来的指令动作。

    • 图片

    • AutoGPT会通过以上步骤,进行多次循环,由于AutoGPT可以存储上下文和历史经验,所以每一次都会根据反馈结果进行更深入的思考,制定出更优的方案,最后列举他要执行的计划,反复尝试和补充,直到达到你预期的目标。

    • AutoGPT会通过以上步骤,进行多次循环,由于AutoGPT可以存储上下文和历史经验,所以每一次都会根据反馈结果进行更深入的思考,制定出更优的方案,最后列举他要执行的计划,反复尝试和补充,直到达到你预期的目标。

    效果

    • 图片

    COA

    【2023-5-18】从 COT 到 COA

    • COT(Chain of Thought,思维链)

    • COA(Chain of Action,行为链):AutoGPT为代表,将自然语言表达的目标分解 为子任务,并利用互联网和其他工具自动迭代地尝试实现这些目标。

    特点

    • 自主化决策,任务链自动化

    • 知行一体,参数外挂,泛化学习,

    • 动态适应和灵活反应

    • AI从模拟人类思维到模拟人类行为, 人主要负责设定目标、审批预算、 调整关键行动链

    优点

    • •自主任务分解

    • •上下文适应性

    • •泛化多功能优化

    • •智能响应

    • •协同学习

    • •动态知识整合

    缺点

    • 语义鸿沟

    • 依赖风险

    • 计算成本过高

    • 透明度缺失

    (5.4)AgentGPT – 改进

    AgentGPT:浏览器中直接部署自主 AI 智能体

    • 项目主页

    • GitHub 地址

    近日,又有开发者对 AutoGPT 展开了新的探索尝试,创建了一个可以在浏览器中组装、配置和部署自主 AI 智能体的项目 ——AgentGPT。项目主要贡献者之一为亚马逊软件工程师 Asim Shrestha

    AgentGPT 允许自定义 AI 命名,执行任何想要达成的目标。自定义 AI 会思考要完成的任务、执行任务并从结果中学习,试图达成目标。

    • 如下为 demo 示例:HustleGPT,设置目标为创立一个只有 100 美元资金的初创公司。

    用户在使用该工具时,同样需要输入自己的 OpenAI API 密钥。AgentGPT 目前处于 beta 阶段,并正致力于长期记忆、网页浏览、网站与用户之间的交互。

    git clone https://github.com/reworkd/AgentGPT.git
    

    【2023-4-15】免费的AutoGPT替代网站

    • 第一个是最火的AutoGPT,性能最强的,但是安装起来也挺麻烦的,并且还需要各种API的权限,小白不建议。

    • 第二个AgentGPT,需要OpenAI的API,操作简单,在网页输入key就可以用。

    • 第三个和第四个暂时是免费的,想体验的可以赶紧了。

    名称 方案 特点 链接
    AutoGPT 最复杂 需要安装开源代码
    AgentGPT 需要Token 通过简单的网页访问易于使用,具有相对简单的功能
    Cognosys 不需要Token 性能不错,具有明确的任务组织
    Godmode 不需要Token 操作更加直观,每个步骤需要用户权限

    (5.5)Adept

    Adept 和 Inflection 这两家早期团队想以自然语言为基础,为用户打造新的 LUI (语言为基础的 UI)方式。

    (5.6)GPT4Free

    【2023-5-4】GPT4Free (discord地址) 通过You.com、Quora和CoCalc等网站(OpenAI付费用户)提供的各种API地址,免费使用GPT-4和GPT-3.5模型。

    • GPT4Free 脚本会先访问 you.com/api/streami…

    • GPT4Free仓库还有从Quora、Forefront和TheB等其他网站获取数据的脚本,任何开发者都可以基于这些脚本制作自己的聊天机器人。

    实测:

    • 安装

    • 要求 Python 3.8以上

    • 修改 requirements.txt 文件

    • The requirements.txt need to be updated

    # pypasser # 原始
    

    UI部署正常,但点击“Think”后,出现新的错误:

    • Please make sure you are using a valid cloudflare clearance token and user agent.

    安装

    pip install gpt4free
    

    程序调用

    import gpt4free
    

    错误信息

    tls_client.exceptions.TLSClientExeption: failed to do request: Get “you.com/api/streami…: dial tcp 192.133.77.59:443: i/o timeout (Client.Timeout exceeded while awaiting headers)

    (5.8)MetaGPT

    【2023-7-5】MetaGPT

    • MetaGPT: Multi-Agent Meta Programming Framework 多智能体变成框架

    • MetaGPT takes a one line requirement as input and outputs user stories / competitive analysis / requirements / data structures / APIs / documents, etc.

    • Internally, MetaGPT includes product managers / architects / project managers / engineers. It provides the entire process of a software company along with carefully orchestrated SOPs.

    • Code = SOP(Team) is the core philosophy. We materialize SOP and apply it to teams composed of LLMs.

    • 图片

    (5.9)OlaGPT

    【2023-8-9】首个模拟人类认知的思维框架OlaGPT:推理能力最高提升85%

    模型在对话上的表现实在是太像人类了,以至于产生了语言模型具有「思维能力」的错觉。基于高概率语言模式的再现与期望中的「通用人工智能」还有很大差距。

  • 某些情况下生成内容毫无意义,或者偏离了人类的价值偏好,甚至会给出一些非常危险的建议,目前的解决方案是引入人类反馈的强化学习(RLHF)对模型输出进行排序。

  • 语言模型的知识仅限于在训练数据中明确提到的概念和事实。

  • 面对复杂问题时,语言模型也无法像人类一样适应变化的环境、利用现有的知识或工具、反思历史教训、分解问题,以及使用人类在长期进化中总结出的思维模式(如类比、归纳推理和演绎推理等)来解决问题。

    当前大多数研究中,大模型主要是在特定提示的引导下生成思维链来执行推理任务,没有考虑人类认知框架,使得语言模型解决复杂推理问题的能力与人类之间仍然存在着显着的差距。

    让语言模型模拟人脑处理问题的过程还有许多系统难题:

  • 如何系统地模仿和编码人类认知框架中的主要模块,同时以可实现的方式根据人类的通用推理模式进行调度?

  • 如何引导语言模型像人类一样进行主动学习,即从历史错误或专家对困难问题的解决方案中学习和发展?虽然重新训练模型对纠正后的答案进行编码可能是可行的,但显然成本很高而且不灵活。

  • 如何让语言模型灵活地利用人类进化出的各种思维模式,从而提高其推理性能?

  • 一个固定的、通用的思维模式很难适应不同问题,就像人类在面对不同类型的问题时,通常会灵活地选择不同的思维方式,如类比推理、演绎推理等。

    人类在面对复杂的推理难题时,通常会使用各种认知能力,并且需要与工具、知识和外部环境信息的各个方面进行交互,那语言模型能不能模拟人类的思维流程来解决复杂问题呢?

    • 论文:OlaGPT

    • 代码:OlaGPT

    OlaGPT 包括多个认知模块,包括注意力、记忆、推理、学习,以及相应的调度和决策机制;受人类主动学习启发,框架中还包括一个学习单元来记录之前的错误和专家意见,并动态参考来提升解决类似问题的能力。

    • 图片

    OlaGPT借鉴了认知架构(cognitive architecture)理论,把认知框架的核心能力建模为注意力(attention)、记忆(memory)、学习(learning)、推理(reasoning)、行动选择(action selction)。

    提出一个适合语言模型解决复杂问题的流程,具体包括六个模块:意图增强模块(注意力)、记忆模块(记忆)、主动学习模块(学习)、推理模块(推理)、控制器模块(行动选择)和投票模块。

    • 图片

    人类解决问题的常见有效推理框架,并设计了思维链(CoT)模板;还提出了一个全面的决策机制,可以最大限度地提高模型的准确性。

    意图增强(Intention Enhance)

    注意力是人类认知的一个重要组成部分,识别出相关的信息并过滤掉不相关的数据。

    同样地,研究人员为语言模型设计了相应的注意力模块,即意图增强,旨在提取最相关的信息,并在用户输入和模型的语言模式之间建立更强的关联,可以被看作是一个从用户表达习惯到模型表达习惯的优化转换器。

    首先通过特定的提示词提前获得LLMs的问题类型,然后重构提问的方式。

    • 图片

    比如在问题的开头加上一句「Now give you the XX(问题类型),question and choices:」;为了便于分析,提示中还需要加入「The answer must end with JSON format: Answer: one of options[A,B,C,D,E].」

    • 图片

    记忆(Memory)

    记忆模块在存储各种知识库信息方面起着至关重要的作用,已经有研究证明了当下语言模型在理解最新事实数据方面的局限性,而记忆模块着重于巩固模型尚未内化的知识,并将其作为长期记忆储存在外部库中。

    研究人员使用langchain提供的记忆功能进行短期记忆,长期记忆则由基于Faiss的矢量数据库实现。

    在查询过程中,其检索功能可以从库中提取相关知识,涵盖了四种类型的记忆库:事实、工具、笔记和思维(thinking),其中事实是现实世界的信息,如常识等;工具包括搜索引擎、计算器和维基百科,可以协助语言模型完成一些无需为条的工作;笔记主要记录一些疑难案例和解决问题的步骤;思考库主要存储由专家编写的人类解决问题的思考模板,专家可以是人类,也可以是模型。

    学习(Learning)

    学习的能力对于人类不断提升自我表现来说至关重要,从本质上讲,所有形式的学习都依赖于经验,语言模型可以从之前的错误中学习,从而实现快速提高推理能力。

    • 图片

    首先,研究人员找出语言模型无法解决的问题;然后在笔记库中记录专家提供的见解和解释;最后选择相关的笔记来促进语言模型的学习,从而可以更有效地处理类似问题。

    推理(Reasoning)

    推理模块的目的是创建基于人类推理过程的多个智能体,从而激发语言模型的潜在思维能力,进而解决推理问题。

    • 图片

    该模块结合了多种思维模板,参考特定的思维类型,如横向思维、顺序思维、批判性思维和整合性思维,以促进推理任务。

    控制器(Controller)

    控制器模块主要用来处理相关的行动选择,具体包括模型的内部规划任务(如选择某些模块来执行)以及从事实、工具、笔记和思维库中选择。

    • 图片

    首先检索和匹配相关的库,检索到的内容随后被整合到一个模板智能体中,要求语言模型以异步的方式在一个模板下提供回复,就像人类在推理之初可能难以识别所有的相关信息一样,同样很难期望语言模型一开始就做到这一点。

    因此,动态检索是根据用户的问题和中间的推理进度来实现的,使用Faiss方法为上述四个库创建嵌入索引,其中各个库的检索策略略有不同。

    投票(voting)

    由于不同的思维模板可能更适合不同类型的问题,研究人员设计了投票模块来提升多个思维模板之间的集成校准能力,并多种投票策略来生成最佳答案以提高性能。

    具体的投票方法包括:

  • 语言模型投票:引导语言模型在多个给定的选项中选择最一致的答案,并提供一个理由。

  • regex投票:用正则表达式精确匹配抽取答案以获取投票结果。

  • 在多个推理数据集上进行了严格评估后得到的实验结果表明,OlaGPT超越了此前最先进的基准,证明了其有效性。

  • SC(self-consistency)的性能优于GPT-3.5-turbo,表明在一定程度上采用集成方法确实有助于提高大规模模型的有效性。

  • 文中提出方法的性能超过了SC,在一定程度上证明了思维模板策略的有效性。

    • 不同思维模板的答案表现出相当大的差异,在不同的思维模板下进行投票,最终会比简单地进行多轮投票产生更好的结果。
  • 不同思维模板的效果是不同的,循序渐进的解决方案可能更适合推理型问题。

  • 主动学习模块的性能明显优于零样本方法。

    • 具体来说,随机、检索和组合列表现出更高的性能,即将具有挑战性的案例作为笔记库纳入其中是一种可行的策略。
  • 不同的检索方案在不同的数据集上有不同的效果,总的来说,组合(combine)策略的效果更好。

  • 文中方法明显优于其他方案,这得益于整体框架的合理设计,包括主动学习模块的有效设计;思维模板实现了对不同模型的适应,不同思维模板下的结果是不同的;控制器模块起到了很好的控制作用,选择了与所需内容比较匹配的内容;投票模块设计的不同思维模板的集成方式是有效的。

  • (5.10)SuperAGI

    SuperAGI

    • 图片

    SuperAGI - A dev-first open source autonomous AI agent framework. Enabling developers to build, manage & run useful autonomous agents quickly and reliably.

    (5.11)群体智能

    (5.11.1)Camel

    Camel 通过 LLM 来模拟用户和 AI 助手,让两个 agent 进行角色扮演(例如一个是业务专家,一个是程序员),然后让他们自主沟通协作来完成一项具体的任务。

    这个想法比较直接,不过作者也提到 prompt 的设计还是蛮重要的,否则很容易出现角色转换,重复指令,消息无限循环,有瑕疵的回复,何时终止对话等等问题。具体看项目代码中给出的 prompt 设定,添加了非常多的明确指令来让 agent 按照预想的设定来沟通协作。

    • 图片

    除了 agent prompt 和运作模式的设计优化外,作者还设计了 prompt 来自动生成各种角色,场景诉求等内容。这些内容在自动组成各种角色扮演的场景,就能收集到各个场景下 agent 的交互情况,便于后续做进一步的挖掘分析。这个网站 来探索已经生成的各种 agent 组合之间的对话记录。这个项目代码也做了开源,会是一个非常好的研究 AI agent 社群研究方向的起点。

    • 图片

    (5.11.2)Generative Agents

    如何看本周最火的AutoGPT?

    沿着这个方向进一步推演,是否可以将多个 agent 组成一个团队,分别扮演不同的角色,是否能更好地解决一些复杂问题,甚至让这个小的“社群”演化出一些更复杂的行为模式甚至新知识的发现?

    Generative Agents 中,作者将 25 个拥有身份设定的模型 agent 组成了一个虚拟小镇社群,每个 agent 都具有记忆系统,并通过做计划,行动应答,自我反思等机制来让他们自由活动,真正来模拟一个社群的运作。从模拟过程来看这个社群也“涌现”了不少真实社会中的现象,非常有意思。

    几个 agent 行为的设定值得学习:

    • 每个 agent 的记忆获取做得更加细致,会结合时效性,重要度和相关度来做相关记忆的召回。相比简单的向量相似度搜索来说效果会好很多。

    • 记忆存储方面也添加了 reflection 步骤,定期对记忆进行反思总结,保持 agent 的“目标感”。

    • 在 plan 生成方面也做了多层级递归,由粗到细生成接下来的行动计划,跟我们的日常思考模式也更接近。

    • 通过“人物采访”的方式来评估这些行为设定的效果,消融实验中都能发现明显的提升。

    • 图片

    一整套 identity,plan, act/react,reflect,memory stream 逻辑挺合理的,与 AutoGPT 的做法可以进行一些互补。当然局限性应该也有不少,比如

    • 模拟过程中 agent 之间都是一对一的谈话,而没有会议/广播这种设定。

    • 目前模拟运行的时长也有限,比较难确保长时间的运行下 agent 的记忆、行为模式的演化,社群整体目标的探索与推进等方面的效果。

    从应用角度来看,目前好像也主要集中在社会活动模拟,游戏应用等。是否能拓展到任务处理,知识探索等更广阔的领域,还有待进一步探索。

    (5.11.3)斯坦福小镇

    【2023-8-10】斯坦福25个AI智能体「小镇」终于开源,《西部世界》真来了!斯坦福爆火「小镇」开源,25个AI智能体恋爱交友

    • 项目地址:generative_agents

    Smallville 沙盒世界小镇中,区域会被标记。根节点描述整个世界,子节点描述区域(房屋、咖啡馆、商店),叶节点描述对象(桌子、书架)。智能体会记住一个子图,这个子图反映了他们所看到的世界的各个部分。

    图片

    25个AI智能体不仅能在这里上班、闲聊、social、交友,甚至还能谈恋爱,而且每个Agent都有自己的个性和背景故事。

    智能体John Lin的种子记忆就是这样的——

    • John Lin是一名药店店主,十分乐于助人,一直在寻找使客户更容易获得药物的方法。

    • John Lin的妻子Mei Lin是大学教授,儿子Eddy Lin正在学习音乐理论,他们住在一起,John Lin非常爱他的家人。

    • John Lin认识隔壁的老夫妇Sam Moore和Jennifer Moore几年了,John Lin觉得Sam Moore是一个善良的人。

    • John Lin和他的邻居山本百合子很熟。John Lin知道他的邻居TamaraTaylor和Carmen Ortiz,但从未见过他们。

    • John Lin和Tom Moreno是药店同事,也是朋友,喜欢一起讨论地方政治等等。

    John Lin度过的一天早晨:6点醒来,开始刷牙、洗澡、吃早餐,在出门工作前,他会见一见自己的妻子Mei和儿子Eddy。

    这些智能体相互之间会发生社会行为。当他们注意到彼此时,可能会进行对话。随着时间推移,这些智能体会形成新的关系,并且会记住自己与其他智能体的互动。

    一个有趣的故事是,在模拟开始时,一个智能体的初始化设定是自己需要组织一个情人节派对。随后发生的一系列事情,都可能存在失败点,智能体可能不会继续坚持这个意图,或者会忘记告诉他人,甚至可能忘了出现。

    英伟达高级科学家Jim Fan评论道——

    斯坦福智能体小镇是2023年最激动人心的AI Agent实验之一。我们常常讨论单个大语言模型的新兴能力,但是现在有了多个AI智能体,情况会更复杂、更引人入胜。一群AI,可以演绎出整个文明的演化进程。

    附录

    • 大模型智能体 LLM Agent

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论