正如引言所说,自 ChatGPT 问世以来,业内对AI产生了极大的关注,所以有了各种探索,试图挖掘LLM的智能,将LLM落地到应用场景中。总得来说,当下LLM的探索经历了三个阶段:
-
第一阶段是挖掘LLM智能,主要是prompt工程。通过设计不同的提示词去激活LLM的智能,在这个阶段的代表作是角色扮演提示词以及Function Call。
-
第二阶段是chain流程编排阶段:此阶段是为了增强LLM能力而提出的。主要原理是:通过编排固定的流程,将AI能力嵌入特殊任务处理的流程中,实现"+AI"。其中的代表是采用了文档检索增强生成(RAG)技术构建的聊天应用。
-
第三阶段是Agent阶段。它的重点是LLM自行进行规划,利用工具完成目标。
本文的重点将会是:
-
prompt、chain和Agent的演进过程;
-
Agent介绍;
-
简单讲讲如何从代码层面实现一个Agent。
通过上述流程,你可以完成LLM应用演进过程的了解,以及最后的Agent从诞生到落地的整个生命周期的一窥。
接下来,在详细介绍演进过程前,我们可以先了解一下LLM最流行的应用架构Agent的定义,然后,我们再从Agent的诞生中引申出来LLM的架构的演进过程。
Agent是什么?
在大语言模型领域中,Agent是指一种能够自主理解、规划决策、执行复杂任务的智能体。它具备感知、记忆、规划和使用工具的能力,能够在无人干预的情况下,根据环境信息自主决策和控制行为。
而在技术角度来看,Agent是一种增强大模型能力的技术方案路径。它使LLM能够在特定任务或领域中高智能、稳定、自主地进行学习、改进和完成目标。
在基本了解了Agent的概念后,我们进一步了解Agent的由来,理解它的出现解决了什么问题。
为什么会有Agent出现?
Agent是随着LLM应用研究的探索而发展起来的。它的出现是为了提高LLM在应用场景中的能力,最主要的体现是在于智能化以及自动化能力的提升。为了具体说明,目前我们可以依据自动化的程度,对LLM应用进行4个层级的划分:
-
prompt阶段:人类手动补充相关上下文,书写提示词进行提问,来获取llm的回答;
-
chain编排阶段:通过固定的流程编排,让LLM可以和多种工具组合起来,按流水线执行逻辑流程,从而处理特定的任务;
-
Agent阶段:通过设定好提示词,准备好工具,由Agent自动化规划流程,完成目标。
-
Multi-Agent阶段:Multi-Agent实际上算是Agent的一个子集,它用于处理单Agent工作量过重,导致容易陷入幻觉、死循环等问题;
大概了解Agent的自动化能力分层以后,我们再进一步的讲解,每一个阶段都做了什么,又有什么问题。
2.1 Prompt阶段
这个阶段是人类直接书写提示词提问,获取回答。这是LLM应用最原始的用法,此时prompt是一个"编程语言",大家都在想办法学会这门语言,从而激活LLM更强的智能。这个阶段的代表作是角色扮演类提示词。但是,这个阶段只是停留在了更好地对话的阶段,最终的效果是沉淀了chat类应用的"说明书"。
简单来说,这一阶段可以用以下6点概括:
-
目标:挖掘LLM的智能;
-
原理:提示词可以引导LLM激活特定参数(概率分布),使其在特定领域上的智能可以被更充分的发挥出来。
-
核心流程:人 --> 提示词 (每一个任务得写一份提示词)
-
优点:让LLM充分发挥自身在训练阶段获取的知识;
-
缺点:仅仅停留在更好地和LLM对话的领域中,无法和其他领域结合;
-
应用:各种提示词角色应用市场,以及开源项目,如:GPTs(https://github.com/linexjlin/GPTs)
Prompt阶段让人们意识到了LLM的智能,但是并没有找到应用的场景,直到有人发现了它可以输出规范的json格式。于是,大家开始探索工具和LLM的结合,也就来到了下一阶段Chain编排阶段。
2.2 Chain编排阶段
chain阶段主要是通过固定的流程编排,让LLM可以和多种工具组合起来,按流水线串联执行以处理特定的问题。朴素RAG是典型的例子:它先把用户的问题去向量数据库检索相关的背景,而后一起嵌入到提示词中。此时,不再需要人类手动去拼接问题的背景到提示词了,可以交给流水线去自动化处理。
但是,chain模式下LLM应用基本是固定的流程编排。这样固定的流程有其优势:可以保持程序的稳定性。但是,这也限制了LLM发挥智能的舞台。在这种模型下,LLM能解决的问题都需要穷举出编排流程。下面有两个例子可以说明问题:
-
朴素RAG检索过程中,如果检索回来的答案不佳,此时,LLM本可以思考如何更好的检索出相关文档,如:尝试HYDE等策略再次去进行检索。但是固有的chain编排不走回头路,不管检索好坏,都会去给LLM进行提问。这种固定的程序限制了LLM发挥智能的机会。
-
日志分析chain例子:假设要实现一个日志分析的工作流,由于程序输出的日志可能有很多的编码字符串,是需要解码后LLM才能理解的。所以,可能就产生了这样的chain编排,如下所示:

这样的流程看似解决了日志编码问题,可以让LLM对日志进行分析、定位错误。但是,实际线上日志存在字符串被编码过2次的情况,如:前端传入特定字符串的时候会先进行url编码,后台再进行base64编码,最后后台打印出日志。此时,按照上述的chain进行逻辑处理就会发现:只进行一次解码后的字符串并没有达到我们的目标------将需要解码的日志解码为正常的内容。所以,我们又得去修改chain的流程图,兼容这种情况。但是,其实LLM本身就可以调用两种类型的解码工具,理想的情况应该是它自己识别出字符串需要2次解码,然后自行组合工具去完成解码,而不是需要人类去调整流程图。
通过上述的例子,想必你已经看出简单的DAG模式下,chain存在的缺点是:固定的流程编排限制了LLM的能力发挥。
总的来说,我们可以将chain阶段概括为以下6个特点:
-
目标:使得LLM可以和工具相结合,拥有"手"和"脚",不再仅仅是对话模型,而是可以真正做出"行动",完成任务;
-
原理:通过编排固定的LLM和工具的交互流程,从而使LLM在特定任务上实现一定程度的自动化;
-
核心流程:人 --> 流程编排 (每一个不同流程的任务得写一个新的流程图处理)
-
优点:
- LLM能力的实际落地:通过流程编排,使得LLM和工具的结合,让LLM拥有了手和脚,不再只是一个对话模型。
- 提效:当前的流程编排过程,基本都可以做成一个可视化界面。通过可视化界面对流程进行编排,大幅提高了开发特定任务流程的效率;
- 稳定性:流程的编排过程中,由于明确知道LLM下一步会做什么,所以可以做很多兜底的策略,去保证系统的稳定性;
-
缺点:固定的流程编排限制了LLM的智能发挥,让他缺少泛化性,一些本可以自己解决的问题,最后没有处理。这一阶段其实还是思维固化在了"编程"中,认为程序一定是一步一步的,每一步都清晰知道会发生什么的。对于这一阶段的LLM应用方式,我们也称其为"+AI",而不是"AI+",因为逻辑处理的核心能力还是在编程里。
-
应用:
- langchain、langIndex等框架;
- dify、coze以及我们混元一站式的可视化流程编排平台;
综上所述,chain模式虽然限制了LLM的智能,但是其固定编排带来的稳定性,在短期看应该依然是发展可期的。而可视化编排应该是会继续朝着pipeline、低代码平台方向发展,提效永远是一个值得研究的方向。不过预估未来,当前chain模式中对LLM仅仅是一次对话的限制应该会被抛除,而会把Agent能力接入进来。目前Langchain也已经向着LangGraph进行发展了。
2.3 Agent阶段
Agent阶段主要目的是充分发挥机器学习模型(如LLM)的规划能力和工具调用能力,使其能够自行思考并设计出路线来完成目标。
在这个阶段,代表性的开源项目是AutoGPT。它设计的执行器+规划器编程范式,使LLM能够持续思考、行动,直到达成目标。在这个阶段,我们不再需要设计固定的流程。只需设定目标并提供工具,AI就能自行思考、规划并调用工具来完成目标。相比于Chain阶段对LLM的应用,这样的方式可以让LLM处理工具组合能解决的几乎任何问题,理论上是可以达到真正人类的水平。到了这个阶段,"编程"的固有模式也已经被剔除了,应用也从"xx程序+AI"变成了"AI+xx工具",真正进入了"AI+"的阶段。
不过,尽管Agent模式充分发挥了LLM的能力,但它也存在一些缺点。例如,AutoGPT中,一份提示词和一个LLM需要完成感知、记忆、规划和使用工具的所有工作,这无疑增加了模型的负担。程序很容易陷入死循环,导致无法在生产环境真正落地。
agent阶段总结
所以,总的来说,我们可以从6个角度看待Agent阶段:
-
目标:Agent模式的确定,是充分发挥了LLM的规划能力和工具调用能力,它可以多轮次的思考、利用工具,最后达成目标;
-
原理:通过"执行器+规划器"以及"ReAct"的提示词思路,使LLM的一步步思考,每一个想法都可以及时被执行器执行,并且再携带到提示词中,给LLM感知到。这样的设计使LLM拥有了持续思考、观察环境,独立完成任务的能力。
-
核心流程:人 --> 工具 (每一个新能力的出现,得写一个新工具)
-
优点:只要人类给LLM准备好工具,并且构造好"解释器-执行器"架构,LLM理论上就可以解决工具组合能解决的所有问题,不再需要人类对特定任务进行流程编排。
-
缺点:AutoGPT也已经体现出来了,一份提示词和一个LLM需要完成感知、记忆、规划和使用工具的所有工作,无疑是对智能要求依赖太重了,程序非常容易陷入死循环。因此难以在实际生产环境中落地。
-
应用:AutoGPT、AgentGPT、Jarvis、babyAGI等。
2.4 Multi-Agent阶段
终于来到最后一个阶段了------Multi-Agent阶段。Multi-Agent阶段其实是Agent阶段的一个子集,所以不算单独的一个LLM应用的阶段,只是自动化程度的一个演进。
早在1995年,就有类似《群体智能》等书有研究粒子群优化算法。算法的核心理论可以表述为:群体智能大于个人。在上面Prompt阶段就已经表明,一份特定的提示词可以有效激活LLM特定能力的智能。所以,我们采用专业的事情给专业的人做的原则,将单一agent分为多个不同领域的专家agent,它们之间互相合作,从而提高Agent的稳定性和智能。这就是现在的Multi-Agent了。
总得来说,我们可以从以下6个方面了解Multi-Agent:
-
目标:提高Agent的智能程度、稳定性
-
原理:
- 让专业的人完成专业的事情:每一个agent只关注特定任务,只使用特定工具,只关心特定信息,从而降低单agent的智能压力。
- 数据流管道:agents之间如何共享数据将是multi-agent的关键,此时,我们可以结合集群通信原理:单播、广播和组播;或者结合集群网络的拓扑结构:星型、总线和环型等;又或者结合设计模式中的发布订阅模式等。将集群内各种设计方案结合Agent都能够玩出各种花样来,使智能体集群效果不一。
-
核心流程:人 --> agent (每一个新领域的出现,需要新增一个Agent)
-
优点:Agent之间互相思考,发挥群体智能效应,能有效提高智能程度;
-
缺点:多轮的思考,信息的交互,编程实现起来相对复杂,对LLM的响应速度要求高;
-
应用:
- metaGPT:模拟一家公司,协作完成任务;
- smallville:西部世界,模拟社交场景;
- chatDev:自动化程序员;
小结
通过上面的介绍,相信你已经对于LLM应用中对自动化能力探索的四个发展阶段:Prompt阶段,Chain编排阶段,Agent阶段和Multi-Agent阶段有所了解了。 概括来说就是:
-
Prompt阶段是最初级的阶段,人类直接书写提示词提问,获取LLM的回答。这个阶段主要是激活和挖掘LLM的智能,但只停留在对话的阶段。
-
Chain编排阶段是通过固定的流程编排,让LLM可以和多种工具组合起来,按流水线执行逻辑流程,从而处理特定的任务。这个阶段的优点是稳定性和提效,但缺点是固定的流程编排限制了LLM的能力发挥。
-
Agent阶段是通过设定好提示词,准备好工具,由Agent自动化规划流程,完成目标。这个阶段的优点是LLM能够自行思考、规划并调用工具来完成目标,但缺点是模型的负担过重,容易陷入死循环。
-
Multi-Agent阶段是将单一Agent分为多个不同领域的专家Agent,它们之间互相合作,从而提高Agent的稳定性和智能。这个阶段的优点是能有效提高智能程度,但缺点是多轮的思考,信息的交互,编程实现起来相对复杂,对LLM的响应速度要求高。
总的来说,Agent的出现和发展都是为了提高LLM在应用场景中的能力,包括智能化和自动化能力的提升。了解了Agent的原理以后,接下来我们尝试实现一个Agent吧。
