什么是Agent?为什么是Agent?
大模型除了Chat外还能做什么用?
当我们将大型模型视为“核心调度器“时,它就变成了我们的Agent。借助任务规划、记忆及外部工具等能力,大型模型能够识别出应该执行的任务以及执行方式,从而实现自主决策。
并非单纯地“执行任务的工具”,Agent更具备一种类似于具有主观能动性的人的“仿主体性”。这种拟主体性即指Agent以模仿人类的方式,实现从“计划”,“组织”,“执行”,“学习”等过程直至完成一个任务。
Agent的主动模式相对于传统软件或机械的被动模式来说,无疑带来了革新。我们可以为Agent设定能力范围,让它自主地发现问题、设定目标、构思策略、挑选方案、执行任务并进行检查更新。
因此,Agent可被视为“具备自主智能的实体”,也被广泛地称作智能体。
当前的Agent主要被分为三种类型:单体Agent、多Agent协作(Multi-Agent)、以及与人交互的Agent。
面对一个“任务”,人类描述一个“目标”,然后将这个任务的执行交给Agent。AI接受目标并自主地进行“感知环境”,“形成记忆”,“完成规划”,“选择行动”,“观察和纠正错误”等一系列以任务目标为导向的行动。
基于大模型的AI Agent并非一种“新技术”,而更象是面向大型语言模型(LLMs)的一种“新的管理方式”。
基于Prompt的与大型模型互动的方式更像是静态的“输入-输出”,而AI Agent给大模型提供了一个进行“动态决策”的框架,它使得大模型有能力处理更复杂、更多样化的决策任务,从而为大型模型从“语言”成功以稳固的基础迈向“真实世界”。
从CoT到Agent
什么是CoT
在深入理解思维链(Chain of Thought, CoT)之前,我们先来认识两个概念,即“语言智能”和“推理”。
“语言智能”可以被看作是使用基于自然语言的概念去理解经验事物,并对概念间进行推理的能力。而“推理”更常被理解为根据已知前提推出新结论的过程,这通常涉及到多个步骤并形成了关键的“中间概念”,它们有助于解决复杂问题。
当我们让大型模型对复杂问题进行分解,将其转换为一步步可解决的子问题,大模型的性能得以显著提升。此时,这些推理的步骤便构成了我们所称的思维链 CoT。
一个完整的CoT形式的Prompt通常由三部分组成:指令(Instruction)、逻辑依据(Rationale)和示例(Exemplars),比如:
- 指令(Instruction):“请你解决这个复杂的数学问题:求一个立方体的对角线长度,它的边长为'a'。”
- 逻辑依据(Rationale):“首先,我们知道直角三角形中的勾股定理,然后,这个问题可以通过勾股定理解决。先找出立方体的一个面(一个平方),然后找出该平方的对角线长度,这就形成了一个新的直角三角形,该三角形的边长包括立方体的边,面的对角线,及我们要找的立方体的对角线。”
- 示例(Exemplars):"让我们来执行它。首先,一个立方体的一个边面是一个正方形,而正方形的对角线长度可以通过勾股定理求出,即d=sqrt(a^2 + a^2)= asqrt(2)。接下来,我们需要找出立方体的对角线,这会涉及到一个新的直角三角形,他的边长是a, asqrt(2) 和立方体的对角线。再次应用勾股定理,我们可以得出立方体对角线长度为 sqrt(a^2 + 2a^2)= asqrt(3)。"
以上结构就是一个CoT形式的完整解析过程。
为什么使用CoT
- 提升了大模型的推理能力:通过将复杂问题拆解为简单的子问题,CoT大大增强了模型的推理能力。它还尽可能地减少了模型在解决问题时忽视关键细节的现象,从而确保计算资源始终集中在解决问题的核心步骤上。
- 提高了模型的可解释性:与单纯输出结果的模型相比,CoT可以展示模型的解题过程,帮助我们更好地理解模型是如何工作的。同时,其解题步骤的输出也为我们提供了错误定位的依据。
- 增强了模型的可控性:CoT让模型一步步展示解题步骤,我们通过观察这些步骤可以更大程度地影响模型的问题解决过程,避免模型成为无法控制的“完全黑盒”。
- 提升了模型的灵活性:只需添加一句“Let's think step by step”,CoT方法便可在各种大型模型中使用。此外,CoT赋予模型的分步思考能力并不仅仅局限于“语言智能”,在科学应用与AI Agent构建等领域也均可发挥重要作用。
何时使用CoT
CoT (Chain of Thought) 的运用能够有效提升模型解决复杂任务的效率和准确度。如何理解这种差异效应呢?
- 任务复杂度: 对于简单的任务,如查找特定信息或回答事实性问题,CoT的优势可能不明显,因为这些任务的解决方法直接且单一;然而,当面临复杂任务,例如编写全面的项目报告或进行复杂的数学求解,CoT的序列推理过程可以显著提升模型的表现,通过分解和逐步解答,大大提高了问题解决的准确性。
- 模型规模与算力: 此外,CoT的效益也与模型的规模以及可用的算力有关。对于较小的模型,它们可能没有足够的计算能力或内部表现形式空间来有效地实施CoT。相反,较大的模型,特别是那些配备有大量计算资源的模型,更能有效地运用CoT策略,因为他们可以在信息处理和理解中,通过持续的、连续的推理过程,更加深入地理解相关上下文。
- 任务之间的关联性:CoT策略也依赖于处理的多个子任务之间的关联性。如果这些子任务在概念性或主题性上有一定的关联性,那么通过CoT,模型就可以很自然地建立起这些基础知识和子任务之间的联系,“桥梁”作用显现,如联合乘法和加法运算规则解决更复杂的数学问题。这种关联性允许模型在解答过程中,把先前步骤的信息有效地用在后续步骤里,从而提高整体任务的解决效率。
CoT如何到Agent
AI Agent需要对接收到的信息进行深度理解,这包括但不限于从环境中收集的反馈,以及从用户接收的指令。这个理解的过程不仅包括了信息的收集和分析,更加重要的是对所收集信息进行深度解析,实施有效的意图识别。这可以将解析的结论转化为模型下一步的具体任务,这个过程就像人类大脑的工作过程:从接收信息,对信息进行处理和理解,然后基于理解结果形成决策,再从决策转化为具体行动。
CoT就在这个过程中发挥了关键的作用,它通过序列化的思考模式,让智能体能更有效地理解和处理输入信息。
CoT帮助增强智能体进行决策的可靠性。它将任务分解为一系列小步骤,然后通过逻辑推理,逐一解决这些小步骤,最终将这些解决方案整合为完成整个任务的方案。
这种逐步解决问题的方法,可以大大降低在面对复杂任务时,因信息过多或过于复杂,而导致的错误决策。同时,这种方法也提高了整个解决方案的可追踪性和可验证性。
CoT的核心功能在于将计划、行动与观察相互结合,弥补推理与行动之间的差距。这种思考模式允许AI Agent在预测可能遇到的异常情况时制定有效的对策,以及在与外部环境交互的同时积累新信息、验证预先设定的预测,提供新的推理依据。
CoT就像是一个强大的精确度和稳定性引擎,帮助AI Agent在复杂环境中保持高效的工作效率。
Agent怎么落地?
为什么Agent落地这么难?
- 在未知领域中的泛化能力:尽管 AI Agent 的出现本身就拓展了大模型解决更加复杂未知领域问题的能力,但是由于缺乏与现实世界真正“具身”的交互,因此一个可以做到浏览网页的 Agent 是否通过同一套框架与工程手段就可以做到操控无人机编组,这一问题仍然悬而未决;
- Agent 的过度交互问题:为了完成任务,Agent 需要与环境进行大量复杂多步的交互,而一些研究也表明 Agent 很有可能会陷入到不断交互的循环陷井之中,在交互循环中无意义的空转,并且,由于 Agent 解决问题缺乏“效率”,因此由此生出的日志的存储与信息检索也将成为新的问题;
- 个性化 Agent:人手一个的私人智能助理是一个美好的畅想但是一个真正的个性化 Agent 的实现还面临许多问题,目前个性化 Agent 的研究有三条技术进路,分别是从定制化的 Prompt 出发,从微调出发以及从模型编辑出发,但是这些进路都有各自的问题,并且当下研究都主要聚焦于特定的问题背景,目前还不存在一套完整统一的解决方案;
- 多智能体社会:如何扩大大模型 Agent 的数量,以组成一个多智能体的社会用于观察“社会行为的涌现”也是一个非常有意思的方向,但是多智能体的计算开销是阻碍这一领域发展的关键问题;
- Agent 安全问题:当 Agent 逐步进入人们的日常生活,Agent 与 CoT 的安全性问题就必须得提上日程,譬如老生常谈得隐私泄露、权限滥用、有毒信息等等问题,此外,当 Agent 应用于现实世界后,此外,由于缺少现实世界真正多模态的反馈,譬如人类智能可以感受到“痛”,而 AI Agent 不会有这方面的信息输入,因此如何对完全不同质的两类主体进行“对齐”也将是关键问题;
- Agent 的评价:如何客观的评估一个 Agent 的能力也将是 AI Agent 发展带给我们的新问题,想想几年前 NLP 时代的数据集刷榜的评估方式,这种传统评价方式必然不适用于一个不断与外部环境打交道的 Agent。此外,一个做对了 99 步但生成答案错误的智能体可以本身能力要优于一个做错了 99 步但生成答案正确的智能体,因此 Agent 评价也呼唤除了评估执行任务的成功率以外的新指标、新方法。
从实践层面,影响目前Agent落地的问题主要有如下两方面:
- API质量差,没有形成生态
Agent在2B领域落地,有些类似ChatGPT Plugin搬到2B领域。但ChatGPT Plugin发布之后,实际落地的情况与预期有很大差距,我们分析背后原因在于两个:一是背后的API不够丰富、质量差(比如描述不清晰),二是试图用一个模型解决所有的垂直问题(大模型对于垂直场景的理解未必足够)。第一个问题在国内尤其严重。企业服务API生态在欧美非常成熟和开放,中国还很不完善,开发者很难赚到钱。这些让Agent很难真正在生产环境落地。
- 开放场景 vs 封闭场景
Agent的落地效果与场景的封闭程度也很相关。一个典型的对比是Agent在法律助手 vs 出行预订场景。前者场景不够封闭,经常有新知识(如新的法律法规、新的判例)出现,API也不够完善。要做成真正的律师“助手”还有比较大的挑战,比较现实的是做成一个帮助律师整理文档、搜索案例的提效工具。而后者场景封闭(可以穷举)、API丰富(机票、酒店等都有明确的API),在落地中的效果要好很多。最理想的落地情况,是有大量垂直领域数据(给到大模型做预训练)、场景封闭、问题基本可穷举。
Agent已经有哪些落地的场景?
创作与生成助手
当前在企业应用中以内容创作生成为主要能力的AI Agent从技术上至少有两种:
1、单Agent的内容生成。简单地将大模型的生成能力通过API集成到其他应用与业务流程中,替代或简化原来由人工完成的部分工作。比如:
- 在线培训管理系统中,利用AI自动根据课件创建考题/考卷
- 在数字营销流程中,利用AI生成精确营销话术甚至撰写营销方案
- 市场分析的AI Agent基于互联网搜索或开放数据生成市场分析报告
- 电子商务企业借助AI自动批量生成商品摘要
- 媒体行业通过AI生成新闻摘要;学术平台借助AI生成论文摘要
这种类型的AI助手,如果内容简单的情况下,可以借助Prompt工程实现(与C端个人助手并无本质区别),如果内容复杂或者较长,可以拆分多任务执行Prompt,或者使用工具来分段生成。
2、基于多Agent协作(可能还有人类)的内容生成。典型的为虚拟机器人软件公司,由AI Agent担任多个软件开发岗位,通过相互协作完成某个软件开发任务。
这种多Agent协作型的助手可以借助Multi-Agents框架来简化开发与实现。比如MetaGPT,可以根据自然语言描述的开发任务,组建Agent团队(PM、架构师、程序员、QA等),遵循SOP并最终输出完整软件开发的成果(文档、代码、API说明等)。
或者可以尝试定义一个文章作者+三个文章批评专家,通过多轮讨论优化,实现高质量的文章输出。
企业知识助手
在企业应用中,通过“外接”私有知识库来扩充大模型的知识储备,以提供基于自然语言的、对话式的企业私有知识访问(对应到AI Agent的基本能力之一:持久化记忆),以解决通用大模型在面向企业应用时领域知识不足导致的幻觉问题。
这种“外接”的方式就是检索增强生成技术(Retrieval-Augmented Generation,RAG),本质是借助于在大模型输入时携带相关的私有知识上下文,让大模型理解、总结、整理并回答用户问题。
RAG 通过在语言模型生成答案之前,先从广泛的文档数据库中检索相关信息,然后利用这些信息来引导生成过程,极大地提升了内容的准确性和相关性。
RAG 有效地缓解了幻觉问题,提高了知识更新的速度,并增强了内容生成的可追溯性,使得大型语言模型在实际应用中变得更加实用和可信。
在技术架构图中可以看到LangChain或者LlamaIndex大模型主流应用开发基础框架。这两个基础框架对大量的模型、文档加载器、向量数据库、嵌入模型等做了抽象封装,并对RAG应用过程中的知识检索、Prompt组装等过程做了简化,可以大大简化开发过程。
另一类可以使用具备开箱即用能力的RAG应用构建平台,比如百度的灵境、天工的开放平台、COZE、FastGPT等,都提供了完善的RAG应用构建工具。FastGPT确实好用,COZE的白嫖GPT4(8k)更香。
数据分析助手
在现有的企业数据分析应用中,无论是中小型企业自定义的简单报表查询,还是大型企业基于专业数据仓库与BI工具的经营分析系统,尽管在决策支持中发挥了重大作用,但是在使用中仍然存在一些可见的不足,这也常常使得BI类的应用很难达到预期的建设目标。
而现在基于大模型的数据分析助手(Data Agent),通过在企业应用中将自然语言转换成数据分析的语言或代码,比如对API的调用、对数据库的访问、甚至编写数据分析代码,来达到获取数据、分析数据与可视化结果的目的。
企业内的数据分析场景(至少是一部分场景)在未来可以转变为:业务人员通过自然语言与Agent对话(比如:我需要了解一下上季度各大区的销售与增长情况),完成数据查询、统计、分析甚至洞察。
在实现Data Agent,目前主要通过三种技术途径:
- 自然语言转数据分析的API,text2API
类似现有的一些BI工具会基于自己的语义层开放出独立的API用于扩展应用,因此如果把自然语言转成对这些数据分析API的调用,是一种很自然的实现方式。当然完全也可以自己实现这个API层。
这个方案的特点是受到API层的制约,在后面我们会分析。
- 自然语言转关系数据库SQL,text2SQL
这也是目前最受关注的一种大模型能力(本质上也是一种特殊的text2code)。由于SQL是一种相对标准化的数据库查询语言,且完全由数据库自身来解释执行,因此把自然语言转成SQL是最简单合理、实现路径最短的一种解决方案。
- 自然语言转数据分析的语言代码,即text2Code
即代码解释器方案。简单的说,就是让AI自己编写代码(通常是Python)然后自动在本地或者沙箱中运行后获得分析结果。当然目前的Code Interpreter大多是针对本地数据的分析处理(如csv文件),因此在面对企业应用中的数据库内数据时,需要在使用场景上做特别考虑。
这种方案的特点是可以利用Python语言自身强大的数据科学库,且独立于数据库。
这里推荐几个除Langchain之外构建数据分析助手的工具与项目:
- DB-GPT:一个国内团队的以重新定义数据交互为使命的强大开源项目,包含完整的前后台项目实现,实现了多场景下的交互数据分析。包括数据库分析、Excel分析、仪表盘分析等,该项目的另一个特点是后端大模型的可伸缩管理架构。另外还有一个专注于微调Text2SQL模型与评估的开源项目。
- OpenAgents:一个来自香港团队的开源项目,Data Agent是其中一个重要的Agent实现。当前主要实现了对本地结构化数据文档的数据分析,其特点是提供了两种数据分析方法供选择,一种是基于SQL,一种是基于代码解释器。
- OpenInterpreter:当前最强大的开源代码解释器,完美地复刻了OpenAI的代码解释器实现,但是可以完全在本地部署与使用,利用它来实现本地的数据分析与可视化是一个不错的选择。
应用/工具助手
AI应用/工具助手就是能够把自然语言转换成对企业应用或者互联网开放API调用的一种基础Agent形式。
应用助手的基本原理是比较简单的,其复杂性主要体现在大模型对自然语言转API的能力,类似于上述的text2API。
推荐以下几个项目:
- LangChain:LangChain中的Agent组件,通过组装多个Tools,封装与简化了大模型使用工具的过程,可以让你专注于Tools的创建即可。
- Assistants API:这是OpenAI官方最新放出构建AI助手的API,如果你条件具备,也可以基于此构建企业AI助手,充分利用其强大的gpt4模型。其中对工具的使用主要体现在其对Function Calling功能的支持。
- OpenAgents:该项目中的Plugins Agent实现了对大量开放API的智能使用,并且可以灵活配置增加新的Plugin,可以参考其实现。
自定义的流程助手
一种类似RPA(机器人流程自动化)的AI智能体。其主要能力是结合RPA实现网络浏览、操作与探索的动作与过程,实现由AI控制的工作流程。
通过自定义的流程助手,将Agent作为企业的数字员工,来简化企业日常工作中重复性较高、流程与规则固定、大批量的前端操作性事务,比如多平台订单数据分析、合并、计算,批量联系客户等。
利用大模型的理解与分析推理能力,可以让AI更加智能的规划与分解任务过程,然后借助浏览器完成执行;且在未来可以利用像GPT-4V这样的视觉模型,更智能的理解界面元素与功能,实现完全自主的智能操作,具备更强的自适应能力。
Agent适合在哪些场景落地?
做到比人(普通员工)好
当我把生成的文章拿给我们的专业内容编辑同事,她撇撇嘴,这只能给60分啊。但是我们要的不就是这60分?
客户不一定要求Agent达到专家水平,很多场合只要比普通员工好就够了。Agent PK的,实际上是月薪几千元的员工。比如,公司IT部门要响应业务人员的各种需求(如临时报表)。如果提供对话式UI,通过几轮对话让业务人员说明白需求,Agent来自动生成,做到这个,客户已经愿意买单了。这样IT团队可以从琐碎中解脱出来,做更重要的事。
Text to SQL
Text to SQL 在企业落地上有很多案例,以上例子本质上就是Text to SQL, 只不过多了很多新的数据来源:比如从商业化中最值钱的文档(合同、财报、简历、招投标书等)中提取数据。把这些数据连同专家知识一起灌给大模型,把信息抽出来,通过Text to SQL来回答问题,这件事已经很值钱了,可复制性也很强。
写代码
帮程序员写代码这个场景毋庸多言。一个有趣的发现,是大模型些代码大部分时间做的是写正则表达式。正则表达式是个没多少人会写、但是很好用的东西。程序员调试,之前在这里经常花很多时间,用了大模型之后发现很快就能解决。这带给我们一个启发:有很多人类不擅长但AI很擅长的细分领域,是最适合Agent去落地探索的。
解决头部问题是落地关键
我们看到在Agent领域有很多漂亮的Demo, 但能否将企业转化成为真正的长期付费者,一个核心是当这个工具真的进入企业后,员工是不是可以真正把它用起来解决问题。Agent肯定会有不好用的地方,关键是要先能把大部分员工的头部问题解决掉。做到这个,再出现一些小众长尾问题,能让大部分用户觉得,这是人的问题而不是AI的问题,就好办了(这种情况下,人会调整自己使用Agent的方式,比如更改询问方式等等,通过人向AI靠拢的方式解决的一部分长尾问题)。