人工智能领域著名教授吴恩达在今年3月份红杉资本的人工智能峰会(AI Ascent)以及最近Snowflake峰会开发者日上都发表了关于AI Agent(人工智能体)的演讲。演讲中,其分享了对AI Agent未来发展潜力的展望。认为AI Agent能够让人工智能胜任更多种类的任务,甚至可能比下一代基础模型带来更大的AI进展。
关于吴恩达教授对AI Agent可能比下一代基础模型带来更大AI进展的观点,笔者无法判断。但AI Agent能胜任更多种任务,成为AI工程落地的重要手段的观点,笔者是深以为然的。去年业界在探索LLM工程应用场景时,逐渐聚焦到“检索增强生成(RAG)”和 “智能体(Agent)”两个方向上。RAG的相关技术方案去年爆火,包括向量算法、向量库、Rerank等技术得到了迅猛发展。但该技术只能做到初步激活客户的私有数据,利用LLM的总结归纳能力,完成垂域知识的问答。但这还远远不够,面对LLM不断进化所表现出的强大推理能力,业界希望LLM能够独立或辅助承担更多的工作。AI Agent成为一个不二的选择,这也是它在2024年爆火的原因。
什么是AI Agent
AI Agent是一种能够感知环境、自主规划、决策、执行动作以及不断学习、改进的智能实体。由于其具有对外部环境的感知和执行动作的能力,使其具备了可以胜任更多任务的可能。一般而言,LLM被视为AI Agent的大脑,通过其强大的推理能力完成规划及决策。
LLM赋能的AI Agent主要组成如下:
Ø 传感器(I/O Sensors)
感知外部环境,向Agent提供环境信息,触发Agent进行响应。
Ø 规划(Planning)
子目标分解:Agent 将大任务拆分为更小的可管理的子目标,使得可以有效处理复杂任务。
反思与完善:Agent 对历史动作可以自我批评和自我反思,从错误中学习并在后续步骤里完善,从而改善最终结果的质量。
Ø 记忆(Memory)
短期记忆:上下文学习即是利用模型的短期记忆学习。
长期记忆:为 agent 提供保留和召回长期信息的能力,通常利用外部向量存储和检索实现。
Ø 工具使用(Tools)
对模型产生响应时缺失的信息,Agent采用调用外部API或执行代码来获取额外的信息,包括:实时信息,专有信息等。
智能体垂域工程落地面临的问题
AI Agent的高速发展使我们可以预期到,未来它有能力解决和提升客户众多方面的工作效率。比如现在我们已经可以看到一些法律、金融、医疗类的智能体开始提供服务,并取得了一定的效果。但这些智能体受限于运营成本、算力成本等因素,目前更多是以公共服务的方式对外赋能。而这种服务方式无法满足客户的私有化部署需求。国内众多的大中型企业、政府、军队等,出于数据安全和政策要求,需要以私有化的方式来部署和应用AI Agent。这将成为未来AI Agent落地最重要的场景。
可以预期,随着LLM参数规模的持续优化以及推理计算硬件成本的不断降低,私有化部署AI Agent将逐渐普及。客户的每个业务领域都可能有一个由垂域专业LLM支撑的AI Agent;也可能会是由一个通用LLM做为基础,在不同业务领域构建出不同的AI Agent。当然,不管AI Agent的实现形式是怎样的,工程落地都会面临一类通用的问题,就是如何使AI Agent与客户的环境相结合,从而完成与环境的信息交换。只有这样,AI Agent才能真正贴合客户的需求为客户提供有价值的服务。
众所周知的是,当我们需要与客户的环境对接时,必然会产生定制开发的成本。成本的多少与客户环境的复杂程度及客户的需求正相关。而这部分成本对于软件服务企业来说,大概率是无法实现多项目功能复用,成本平摊的。那么这就意味着AI Agent的工程成本至少要与项目的预算基本持平才能够不断帮助客户实现AI Agent的垂域落地。
现实的情况是,近两年全球经济下滑,四处都在勒紧裤腰带发展。政府及企业的IT建设预算也是大幅缩水,之前预算充足,可以大幅投入开发人员满足客户定制化需求的局面将难以为继。但AI Agent发展所推动的客户应用需求将不断增长。因此,未来AI Agent相关的项目将持续涌现,但经费预算将远低于前些年。这将为提供AI应用服务的服务商提出挑战。即如何才能够在经费有限且需要大量定制化工作才能实现AI Agent工程落地的项目中获得利润?
面向AI应用的低代码工具
笔者认为面向AI应用的低代码工具可以成为回答上一节问题的一个可选的答案。但笔者这里所说的低代码平台非前两年爆火的面向UI应用开发的工具。因为这类低代码工具理论上可以降低任何场景的开发成本而不是特指于AI Agent的应用场景。
去年伴随着LLM兴起,出现了围绕LLM应用落地的开源框架LangChain。该开发框架可以大幅提升LLM的应用落地效率。一经推出就得到了开发者的广泛关注和应用。但面对AI Agent的工程落地需求看,大量的数据整理、环境对接工作,即便使用了LangChain框架,定制开发工作量仍无法忽视。于是,去年下半年,开始陆续出现了一些以LangChain作为基础的低代码类RPA工具,如:Flowise,LangGraph以及国内最近非常火的Dify等工具。这些工具的出现,进一步降低了LLM的应用成本和搭建AI Agent的成本。通过组件拖拽,可视化的构建数据处理流程和AI的应用逻辑,可降低对实施人员的编程能力要求,使得有经验的业务人员有机会参与工程落地;可更快速的调整及测试流程的逻辑,提升实施效率。
虽然Flowise,Dify等工具已经在很大程度上降低了AI Agent的实施成本。但在笔者看来,由于AI Agent应用场景的不确定性,仍存在大量RPA类工具无法满足的潜在开发工作。比如:这类RPA工具对于文本、图片等非结构化数据有较好的支持,但对于传统的结构化数据的支持能力就显得有所不足了。而经过了近30年的IT信息化建设,绝大多数客户都拥有相当规模的存量结构化数据。这些数据也一定会纳入AI Agent的应用场景中。因此,笔者认为一款能够更好的落地AI Agent的低代码工具应该至少包括以下几个特性:
Ø 全结构数据支持能力:能够同时支持结构化、半结构化以及非结构化数据的应用处理,这样才能串接各类数据并与AI Agent进行整合。这类工具从设计角度不应该是一个简单RPA工具,应该是一个数据科学工具,即应该采用类似Kettle,StreamSet等工具的技术路线,并将数据处理能力扩展到非结构化数据。这样就能够串接过去几十年的数据应用习惯并延伸至未来以AI模型应用的场景中了。
Ø 数据全生命周期支持能力:具备数据从采集、存储、处理、传输、交换到销毁六个阶段的全能力支持。由于无法明确AI Agent的应用边界。因此一个能够支持数据全生命周期阶段的工具将有可能更大范围的降低AI Agent的应用成本。
Ø 强大的AI模型整合能力:需要能够整合各类AI模型能力,而不仅限于LLM的整合能力。众所周知的是,LLM在自然语言方面的工作能力已经让我们大开眼界,最近多模态模型进化出的能力更是进一步让我们唏嘘不已。但我们能看到的是,每一次惊叹背后都一笔无法忽视的能源和算力消耗。而且,我们并不是每一个任务都需要动用如此巨大能力的模型来应答,反而有些时候,一些小的专用AI模型能够带来更好的性价比。比如:分词、文本分类、翻译、OCR识别、物体识别、语音转文字、文字转语音、基于业务的预测、分类、聚类等。目前HuggingFace网站上的近80万个各类AI模型是一个巨大的宝藏,整合这些AI模型的能力,能够让AI Agent变的更智能。
Ø 丰富多样的数据处理扩展能力:提供丰富多样的功能扩展手段,用以支持AI Agent在工程实施时需要对接的各类外部环境及业务功能。可以方便的扩展与各类存储计算系统的对接;支持通过算子组件、脚本、Rest接口等方式扩展数据生命周期各阶段的功能支撑;支持在主流程中复用通过低代码方式编写的子流程,从而可以在工具内形成闭环的业务功能扩展能力。
HuggingFists AI应用开发平台
HuggingFists是一款由笔者团队开发的低代码AI应用开发平台。(该平台虽不是开源的,但社区版支持免费使用,可通过Github下载,地址:https://github.com/Datayoo)。有别于现在流行的RPA类低代码平台,HuggingFists采用的是传统的数据科学工具的架构,即HuggingFists是面向数据集来处理的。因此,其天然能够兼容结构化与半结构化的数据处理场景。另外,HuggingFists在设计上剥离了文件系统与文件的捆绑结构。将其转换为了输入和读取两大类算子。因此,对于以文件形式表达的非结构化数据也有了全面的接入能力。下面笔者简单罗列下HuggingFists系统的特性:
Ø 完善的数据源接入能力:能够支持数据库、文件系统、消息队列以及应用四类数据源,并可通过安装连接器插件扩展数据连接能力。提供了数据源管理界面,可对所有的数据源进行可视化浏览,方便使用者了解及简单管理数据。支持同一存储系统的不同版本的连接器,如:可同时支持ElastiSearch7和ElasticSearch8等。数据库除支持传统的关系数据库、文档数据库、数据仓库等外,围绕AI应用,还支持了向量库和图数据库。
Ø 直观易用的低代码编程模式:HuggingFists采用了传统数据科学的低代码编程风格--算子(含端口) 数据连接的流程构建风格。但也有别于传统的数据科学工具,其编程风格更自由。多数情况下,HuggingFists没有对算子端口的连接数做任何限制,可自由构建算子间的数据连接关系; 流程的定义态与执行态分离,在定义态点击端口,可以清晰知道各算子间的数据流入/流出结构。该功能如同函数声明中的入参与返回定义,方便使用者知道如何使用算子;执行态执行流程后,会记录每个算子的运行时长,每个端口输入/输出数据量;为了流程调试方便,HuggingFists还提供了对流程的断点调试功能,方便使用者更方便的定位问题。此外,还提供了执行到当前算子、复制算子、为算子填写注释、多算子打包/拆包(流程复杂时,可用此功能将多个算子打包在一个容器算子中,使版面清晰)等。使用者不必担心流程的运行的效率,流程中的每个算子都以并行方式运行,可最大效率的处理流程中的数据。
Ø 流程复用与对外服务:HuggingFists支持在主流程中引用一个子流程,即可以用算子编写一个类似函数的子流程,被其它流程调用。也可编写一个流程,将其配置到接口管理中,对外提供Rest风格的API调用。利用这种模式,可以使用HuggingFists系统对外提供数据访问服务。
Ø 丰富的AI模型集成能力:HuggingFists是基于笔者团队早期的数据科学平台Sengee孵化出来的。项目孵化的主要成因就是为了能够使用低代码的方式访问到HuggingFace网站提供的各类模型。目前HuggingFists已经集成了HuggingFace网站的近二十种可用于自动化场景的AI任务接口,如:文本生成、文本分类、物体识别、音频转文字等。使用者可以直接使用部署在云端的HuggingFace模型,也可以将模型下载到本地,使用私有化部署的模型。除了对HuggingFace模型的支持外,HuggingFists还支持了包括OpenAI,Google,阿里,百度,腾讯在内的众多国内外厂商的云AI模型接口,方便搭建各类AI应用。
Ø 完善的数据处理扩展能力:HuggingFists提供了完善的算子开发标准,依据此标准开发的算子可以通过算子库在系统中安装并应用。除此外,HuggingFists提供了Python脚本算子、Javascript算子,可通过这些算子扩展HuggingFists暂不支持的功能。最近,在将要发布的HuggingFists系统中,笔者团队扩展了数据服务功能。在该功能模块中,使用者可通过简单的配置,引入一个已经存在的外部Rest API接口。该接口可直接在流程中通过服务调用算子直接调用,进一步降低了数据处理能力的扩展成本。
Ø 多样的作业调度与派发:HuggingFists提供了多种作业调度机制来满足不同应用场景的需求。其提供了即时、定时以及接口调度等不同的作业触发方式。“即时”作业表示立即执行一次作业;“定时”作业定义了作业的执行计划,定期自动化执行作业;接口调度作业可通过调度接口由外部系统调用触发作业的执行。执行作业的计算节点支持水平扩容,当算力不足时,使用者可通过扩展计算节点来扩充平台的计算能力。
除以上特性外,HuggingFists还有很多方便使用的小功能,这里不一一列举了。下面是笔者整理的一些关于HuggingFists的介绍和学习资料,欢迎有兴趣的朋友下载试用。
类型 | 内容 | URL |
---|---|---|
文章 | HuggingFists系统功能介绍(系列) | https://blog.csdn.net/colorknight/article/details/136282240 |
文章 | 使用HuggingFists搭建LLM RAG(系列) | https://blog.csdn.net/colorknight/article/details/134744449 |
文章 | 使用HuggingFists构建知识图谱(系列) | https://blog.csdn.net/colorknight/article/details/135709258 |
文章 | 使用HuggingFists搭建图片检索系统 | https://blog.csdn.net/colorknight/article/details/135514105 |
文章 | 使用HuggingFists实现数据脱敏(系列) | https://blog.csdn.net/colorknight/article/details/135735793 |
视频 | HuggingFists系统介绍 | https://www.bilibili.com/video/BV1Gx421y7yZ/ |
视频 | 使用HuggingFists搭建AI Agent | https://www.bilibili.com/video/BV1o6421Z7CQ/ |
视频 | 如何使用LLM搭建知识图谱 | https://www.bilibili.com/video/BV1GF4m1c72y/ |
视频 | 使用月之暗面LLM抽取知识图谱 | https://www.bilibili.com/video/BV1Rm421n72e/ |
视频 | 使用ElasticSearch搭建RAG | https://www.bilibili.com/video/BV1mZ421E7ki/ |
视频 | LLM本地化构建知识图谱,Ollama Neo4j | https://www.bilibili.com/video/BV1xZ421s7Lj/ |
视频 | HuggingFace模型应用 | https://www.bilibili.com/video/BV1Ku4y1r72H/ |
视频 | HuggingFace数据集应用 | https://www.bilibili.com/video/BV1G84y1m79m/ |
视频 | HuggingFace预训练数据集转换 | https://www.bilibili.com/video/BV12S411F7tq/ |
视频 | PDF文本抽取 | https://www.bilibili.com/video/BV1Tg4y1J7WV/ |
视频 | Visio文本抽取 | https://www.bilibili.com/video/BV19F411X7D1/ |
视频 | Visio关系抽取 | https://www.bilibili.com/video/BV1RN41127vt/ |
视频 | Word文本抽取 | https://www.bilibili.com/video/BV1qV41157HH/ |
视频 | Word表格抽取 | https://www.bilibili.com/video/BV1X94y1C7Bh/ |
视频 | Html文本抽取 | https://www.bilibili.com/video/BV1SP411W7kv/ |
视频 | 按块大小切分文本 | https://www.bilibili.com/video/BV1yQ4y1H7Qx/ |
视频 | 按段落切分文本 | https://www.bilibili.com/video/BV1Mu4y187B6/ |
视频 | 图片处理 | https://www.bilibili.com/video/BV1rz4y137pH/ https://www.bilibili.com/video/BV1oy4y1A7Bd/ |
视频 | Json数据处理 | https://www.bilibili.com/video/BV1D8411o7x6/ |
视频 | XML数据处理 | https://www.bilibili.com/video/BV14u411Y7Z3/ |
视频 | Avro数据处理 | https://www.bilibili.com/video/BV1rW4y1D7mb/ https://www.bilibili.com/video/BV1Ps4y117pS/ |
视频 | Excel数据处理 | https://www.bilibili.com/video/BV1jk4y1V7nK/ |
视频 | MySQL数据读取 | https://www.bilibili.com/video/BV138411Q7ia/ |
视频 | 如何断点调试 | https://www.bilibili.com/video/BV1yV4y1Q7uT/ |
视频 | 如何设置条件断点 | https://www.bilibili.com/video/BV1p14y1f7K3/ |
视频 | 如何使用流程变量 | https://www.bilibili.com/video/BV1qN4y1R7Pt/ |
视频 | 如何使用上下文变量 | https://www.bilibili.com/video/BV1ok4y1A7ZM/ |
视频 | 如何复用流程 | https://www.bilibili.com/video/BV1Rt421j7fr/ |
视频 | 如何完成数据库的迁移 | https://www.bilibili.com/video/BV1ft421G7Hj/ |