我们设想一个可能的业务用例,来看LLM在企业应用集成的一个典型架构与流程是怎样的:
假设我们需要给企业的CRM(客户关系管理)构建一个 AI智能销售助理 ,该助理可以与潜在用户进行自然语言的对话,并根据对话过程灵活的决定下一步的动作,在此过程中,可以自主的完成一些销售工作任务,比如介绍产品、给出产品对比报告、登记销售线索等。而这些任务需要与多个企业应用或工具做交互,包括:
与私域知识库系统获得公司产品信息,以回答客户的产品咨询
从互联网搜索竞争对手的产品信息,进行竞品分析与产品对比
通过与CRM系统的接口查询客户信息,或进行潜在销售线索的登记
一个可能的应用架构与流程示意如下:
本案例参考了微软Azure平台OpenAI能力应用架构并扩展
这里对其中的流程与功能做简单的阐述:
公司的私域文档通过搜集、识别形成数字化的知识 。可能来自于营销、产品、客服等多个部门;当然这一步对于大部分信息化较高的企业来说,可能已经完成大部分。这些数字化资产可能以多种形式存在,比如存放在关系型/非关系性数据库中,或者各类数字文档(Excel、PDF、TXT等)、企业搜索引擎等。
通常,文档都需要进行分割,变成更小的文档块 。当然对于Excel/CSV这种本身就已经结构化分割的则可以直接使用。文档分割的目的是为了变成更适合管理、搜索与学习的“知识块”,这个粒度需要根据实际情况控制。
向量化嵌入 。用通俗的语言来说,就是把这些文档块转换成多维向量(一种由N个浮点数字组成的多维数组)。向量化嵌入的最大好处是可以实现近似语义搜索。向量的转换通常需要借助于专门用于嵌入的第三方或开源语言嵌入模型(Embedding Model)接口,OpenAI、国内的阿里/百度都有专门的向量嵌入模型接口。
关于向量数据库与嵌入(embedding),我们将在后续文章单独介绍。目前只需要理解:向量化就是把各种知识(文本/图片/音频视频)转化为一堆数字(一段文字可以转成几百上千个数学浮点数),用来实现相似性搜索。
以上步骤是一种前置准备:把私域知识用大模型易于理解和使用的形式存储好。以下则进入AI销售助理的工作流程,这是一个反复循环的过程:
能否介绍下你们公司A产品与xx公司B产品的区别?
子任务1:查询公司A产品的信息,输入1: A产品基本信息与参数
子任务2:到互联网搜索xx公司B产品,输入2: xx公司B产品介绍与参数
子任务1执行:到本地向量库中通过相似算法搜索符合“A产品基本信息与参数“的私域知识,整理成A产品信息。
子任务2执行:调用搜索引擎的API,搜索“xx公司B产品介绍与参数“,获得结构化的返回结果,形成B产品信息。
生成本轮响应。 大模型根据提示携带的上下文、对话历史、客户原始问题,进行理解、总结、生成响应结果,最终传递到客户,同时存储到大模型的本地“记忆”,用于下一轮对话。
接收客户的下一次输入,进入下一轮的工作过程。 在新一轮的工作过程中,会参考之前存储在本地“记忆”的会话与任务历史。
这是展示一次原始任务的工作流程,对于AI销售助理这样的应用场景来说,通过任务循环驱动,借助LLM这样的大脑,最终实现自治甚至自我反思的任务自动化,可以大大提高企业生产效率,降低成本。
LLM企业应用之集成工具
以上架构中可以注意到:在企业应用中的LLM本身虽然能作为一个思考的“大脑”,输出核心的决策(比如计划下一步“行动”)或者关键的内容(比如产品参数总结),但其本身并不直接解决前面提到的LLM在企业应用中的几个关键工程问题:私有知识库、本地记忆、外部工具使用、企业应用集成、任务调度等。也就是说,你需要自行构建一个系统服务,一方面连接LLM这个大脑;另一方面在解决以上工程问题的基础上,借助于LLM,自动化的完成指定的工作任务。
这其实就是目前在大语言模型应用领域(注意不是LLM本身)的一个备受重视的新兴概念: AI Agent 。OpenAI应用研究主管LilianWeng写过一篇长篇论文来论述AI Agent,并非常看好Agent的应用前景。在文章里她把AI Agent总结为 Agent = LLM + 记忆 + 规划技能 + 工具使用 ,这其实和上文我们描述的架构中需要的能力是可以对应的。
简单的说,AI Agent就是在LLM基础上增加Memory,Planning,Tools三大能力:
Memory :所有的任务过程中的上下文记忆(短期记忆)以及存储在向量数据库中可随时检索的外部数据(长期记忆)。
Planning :借助于LLM将大型任务分解出多个子目标与小任务,并设定与调整优先级;并具有自我反思与调整的能力。
Tools :借助外部工具完成行动的能力,比如访问LLM本身不具备的知识(如借助搜索引擎)、访问企业信息系统(如CRM)、或执行特定代码等。
构建这样一个AI Agent的角色,在大语言模型初期需要完全自行编码完成,不过随着大语言模型的大规模应用,出现了一些面向这些应用场景的开源平台与框架,可以帮助降低大量的代码工作量,内置了必须的功能组件,并帮助屏蔽很多底层技术的差异(比如不同的大模型、不同的向量库、不同搜索引擎等),因此实现起来要简单的多。
目前应用最广泛的构造AI Agent的开源平台与框架是LangChain。此外,还有一些与LangChain有着类似思想或原语的AI Agent工具,比如AutoGPT,BabyAGI等。
从实际应用上看, LangChain是一个更具灵活性和强大的方案,可以根据企业自身的需要,灵活的使用其各种强大的内置组件,大大减少使用LLM与企业应用集成的工程量。但由于LangChain为了兼容大量的底层差异与应用场景,其本身内部组件设计较为复杂,相对也具备一定的技术门槛。所以最近官方也推出了一个新的开源项目 LangSmith , 一个让LangChain更易于使用的工程化平台。 目前还处在内部测试阶段,让我们一起来期待吧!