2023年09月18日

众所周知,大模型可以写好的文案、故事、散文和程序,而随着AutoGPT, GPT-Engineer and BabyAGI等项目的火爆,以LLM(large language model) 作为核心控制器来构建agents,通过集成不同系统、工具自主决策完成各类复杂任务,正在成为自主人工智能新的创新方向。

注意:这里是让LLM去做事,不是去对话。

一、人是如何做事的?

在工作中,我们通常会用到PDCA思维模型。基于PDCA模型,我们可以将完成一项任务进行拆解,按照作出计划计划实施检查实施效果,然后将成功的纳入标准,不成功的留待下一循环去解决。目前,这是人们高效完成一项任务非常成功的经验总结。

P (plan) 计划:包括数据收集,方针和目标的确定,以及活动规划的制定。

D (Do) 执行:根据设计和布局,进行具体运作,实现计划中的内容。

C (Check) 检查:总结执行计划的结果,分清哪些对了,哪些错了,明确效果,找出问题。

A (Act)处理:对总结检查的结果进行处理,对成功的经验加以肯定,并予以标准化;对于失败的教训也要总结,引起重视。对于没有解决的问题,应提交给下一个PDCA循环中去解决。

二、如何让LLM替代人去做事

LLM要想作为agent的大脑替代人去自主工作,必须具备以下能力:

规划能力(Plan

分解任务:

Agent大脑把大的任务拆解为更小的,可管理的子任务,这对有效的、可控的处理好大的复杂的任务效果很好(这个是LLM天然具备的能力)。

思考:

LLM作为大脑我们需要的是全局思维能力;因此,需要通过更多的指令微调来提高LLM的通用推理能力,而不是面向某个领域的专项微调。另外,LLM的能力通常是看的多了就学会了,即一种集众人之力形成的通用能力(行业解决方案),但是缺少个性化。某些时候我们面对的任务往往还会有很多个性化限制条件。例如:某类资源受限,如何在受限条件下进行任务分解可能是我们的一个创新方向。

执行能力(Done

使用工具

Agent能学习到在模型内部知识不够时(比如:在pre-train时不存在,且之后没法改变的模型weights)去调用外部API,比如:获取实时的信息、执行代码的能力、访问专有的信息知识库等等。

思考

这是一个典型的平台+工具的场景,我们要有生态意识,即我们构建平台以及一些必要的工具,然后大力吸引其他厂商提供更多的组件工具,形成生态。

评估能力(Check

确认执行结果

Agent要能在任务正常执行后判断产出物是否符合目标,在发生异常时要能对异常进行分类(危害等级),对异常进行定位(那个子任务产生的错误),对异常进行原因分析(什么导致的异常)。

思考

这个能力是通用大模型不具备的,需要针对不同场景训练独有的小模型。

反思能力(Action

基于评估结果重新规划

Agent要能在产出物符合目标时及时结束任务;同时,进行归因分析总结导致成果的主要因素(生成BI报表),另外,Agent要能在发生异常或产出物不符合目标时给出应对措施,并重新进行规划开启再循环过程。

思考

这个是整个流程最核心的部分,是LLM自主工作(越用越聪明)的核心所在,需要重点创新。

参考

ReAct (Yao et al. 2023) ,语言模型中推理和动作的协同作用,一种比CoT更好的提升LLM推理能力的prompt 设计方式。参考:REACT:语言模型中推理和动作的协同作用

ReAct prompt template 一般包含如下的内容:

Thought: ... Action: ... Observation: ... ... (Repeated many times)

这是一种新型的基于提示的范式,将语言模型中的推理和行为协同起来,我们可以这方式微调LLM(让模型形成反思),最后在推理阶段输入thoughtobservation,让LLM预测下一步Action

Reflexion (Shinn & Labash 2023) Reflexion 代理通过语言反思任务反馈信号,然后将其自己的反思文本存储在一个情节性记忆缓冲区中,以在后续试验中促进更好的决策。

个人观点

我认为LLM像人脑一样需要记忆的是概念以及运用概念的能力(概念组合的方法,概念拆解的方法,概念转化的方法),LLM中的token=人脑中的概念,LLM的网络结构MLP+attention机制=运用概念的能力。其他的都是信息,可以通过工具随时重新获取不需要记忆(input=上一步的output,都是信息),为了加快计算速度可以暂时放在缓存中(临时记忆随时可以忘掉),通常只需用工具将其管理起来就可以(能存能查,人用记事本,Agent可以用DB)。

因此,我认为prompt都是任务目标(信息),可以分为当前目标和长期目标。