在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。Juint除了Suite执行器还有哪些执行器呢?由此我的Runner探索之旅开始了!
随着人工智能技术的飞速发展,大型语言模型(LLM)、检索增强生成(RAG)和智能体(Agent)已经成为推动该领域进步的关键技术,这些技术不仅改变了我们与机器的交互方式,而且为各种应用和服务的开发提供了前所未有的可能性。正确理解这三者的概念及其之间的关系是做好面向AI编程开发的基础:
大模型(LLM)
检索增强生成(RAG)
智能体(Agent)
定义
大型语言模型(LLM),如GPT系列、BERT等,是利用大量文本数据训练的模型,能够生成连贯的文本、理解语言、回答问题等。
智能体是指具有一定智能的程序或设备,能够感知环境并根据感知结果做出响应或决策的实体。它们可以是简单的软件程序或复杂的机器人。
作用
LLM作为基础技术,提供了强大的语言理解和生成能力,是构建复杂人工智能系统的基石。
RAG可以视为在LLM基础上的扩展或应用,利用LLM的生成能力和外部知识库的丰富信息来提供更准确、信息丰富的输出。
智能体可以利用LLM进行自然语言处理,通过RAG技术获得和利用知识,以在更广泛的环境中做出决策和执行任务。它们通常位于应用层级,是对LLM和RAG技术在特定环境下的集成和应用。
从层级关系上看,大模型(LLM)提供了基础的语言理解和生成能力。在此基础上,检索增强生成(RAG)技术利用这种能力结合特定的知识库来生成更为准确和相关的输出。智能体(Agent)则在更高层次上使用LLM和RAG,结合自身的感知和决策能力,在各种环境中执行具体的任务。
因此,可以理解为LLM是基础,RAG是在LLM基础上的进一步应用,而智能体则是综合运用LLM和RAG以及其他技术,在更复杂环境中进行交互和任务执行的实体。这种关系体现了从基础技术到应用技术再到实际应用的逐级深入。
随着技术的快速进步,如何更高效地利用这些大模型(LLM)来解决具体问题?如何通过检索增强生成(RAG)技术提高信息的准确性和相关性?以及如何设计能够有效集成LLM、RAG和其他AI技术的智能体?这些问题的解决,不仅需要深入理解这些技术的工作原理和应用场景,还需要探索它们之间的相互作用和集成方法。
理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将
大型语言模型(LLM),如OpenAI的GPT系列,是一种基于深度学习的自然语言处理技术。它们能够理解、生成、翻译文本,完成问答任务,甚至编写代码。这些模型通过在大规模文本数据上的预训练,学会了语言的复杂结构和丰富的知识,使其能够在没有明确指示的情况下执行各种语言任务。GPT系列模型基于变换器(Transformer)架构,这是一种高效的深度学习模型结构,特别适合处理序列数据,如文本。变换器利用自注意力(self-attention)机制,能够捕捉文本中长距离的依赖关系,这对于理解和生成自然语言(NLG)至关重要。
目前,OpenAI最新版本的LLM工程化应用是以GPT-4为基础的,针对普通用户有3个版本,分别是免费版本(只能使用GPT-3.5)、Plus版本以及团队版本(Plus的功能加上团队协同工作管理)。每个月支付20美元(不含税)即可使用Plug版本,即ChatGPTPlus,它的主要功能有:
与“OpenAI最强大的模型GPT-4”进行对话,不止是文本的交互生成,还可以同时进行基于DALL-E的图文交互生成,以及从互联网实时获取最新知识进行辅助分析和生成。如下图:
如果你想将自己独有的指令、知识库或任何能力的API服务,同预训练的GPT-4 LLM结合在一起,创建一个“自定义模型”,那么,可以使用“GPTs”插件功能在Open AI的Web应用上快速构建出来。GPTs的推出体现了OpenAI与众不同的工程化创新能力,其交互设计理念值得我们借鉴。使用它的步骤可以参考如下这个例子:
1. 告诉 GPT Builder向导(实际上这也是一个官方的GPTs)你要做什么,它会提示你可以这样说:"制作一个帮助生成新产品视觉效果的创意人 "或 "制作一个帮助我格式化代码的软件工程师"。如下图:
2. 输入“创建一个物流系统的技术支持工程师,帮助商家解答系统问题和处理异常订单”,接下来GPT Builder会和你做一些j简单的对话,比如征求你对于命名、Logo的建议等等,如下图:
3. 仅需要2轮简短对话,一个名为“小狗物流平台技术支持”的GPTs被初步创建出来了。生成的“Instrucitons”部分可以视为GTP的System Prompt(系统提示),需要特别注意按照这4个维度修正Instrucitons,直到其准确符合你的意图:1)定位,希望GPTs执行什么类型的任务;2)上下文,给GPTs提供一些额外的信息,比如垂直领域的常识,从而引导其给出更好的回答;3)输入数据,“限定”GPTs引导用户提出的问题,确保不偏离主题;4)输出数据,“限定”GPTs给出指定格式和范围的输出,确保不输出无关的内容。如下图:
4. 重点来了,在这里可以使用“Upload files”功能上传你自己的“知识库”文件给到大模型推理,文件可以是文档、表格、图片等多种格式,这可以理解是一种对LLM的“静态”增强。如下图:
5. 更重要的是,可以通过添加“Actions”的方式,接入你的API服务给到大模型调用,API通过遵循OpenAPI3的规范进行自描述。大模型可以根据API的功能描述以及输入输出定义,结合用户会话上下文进行智能的调用,获取你的私域数据进行推理,这可以理解是一种对LLM的“动态”增强。如下图:
GPTs商店自2024 年初上线以来3个月时间,已经有超过 300 万个自定义的 ChatGPT发布。商店的功能包括2个排行榜,分别是“顶级推荐”和“流行趋势”;具体的分类有 DALL-E图像创作、写作、效率、研究和分析、编程、教育以及生活方式共7项,并且将由ChatGPT官方创作的自定义模型进行单独分类展示。例如在研究和分析(Research & Analysis) 类排名第二的“Scholar GPT”能够利用Google Scholar、PubMed、JSTOR、Arxiv等学术库的2亿+资源和内置的批判性阅读技能,助力你提高研究水平,可谓是撰写论文的神器;在效率(Productivity)类排名第一Canva能够轻松帮助你设计演示文稿、徽标、图文混排等多种内容,并且支持你直接在其提供的Web应用上对AI生成的源文件进行编辑调整,直到达成满意的效果。目前,已经有创作者通过GPTs商店独特的AI生态,实现了自己的商业模式,值得我们学习借鉴。
如果你不想依赖于OpenAI的生态平台实现自己的AI应用和商业模式,但又想借助其提供的ChatGPT等基础能力,那么,通过调用其对外开放的API接口一直是最好的选择。因此,OpenAI在推出GPTs的同时,也快速的上线了“Assistant API” 的Beta版本,在这个版本中,你可以实现GPTs中提到的所有“增强”大模型的能力,并通过API的方式将其对外发布,供第三方应用调用,并且支持GPT-4模型(当然调用价格也是不菲),如下图:
同时,你仍然可以通过传统的“fine-tuning model”API定制自己的微调大模型,这种方式主要是通过你上传格式化的“问-答”型的训练数据文件来实现对LLM的“增强”。相对于最新推出的“Assistant API” ,感觉这种方式在工程化的显得不够灵活和直接,不是很“智能”,目前“fine-tuning model”最高也只能支持GPT-3.5系列模型。如下图:
理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将
通过上一章的介绍,你可以发现OpenAI已经大规模使用工程化的技术使用户能够基于自己的知识库对其GTP系列大模型进行“增强”,从而实现更加垂直化、个性化的能力。那么,如果你基于成本或安全的考虑,想在私域进行自有知识库的“增强”,甚至切换成其它的大模型来使用这个“增强”,就不得不考虑自行开发实现了,这时候就需要了解检索增强生成(RAG)概念和向量数据库技术的应用。
RAG典型的应用场景一般在问答系统、内容推荐、数据分析领域。其优势主要在于能够结合检索结果生成回答,提高了只依赖大模型回答的准确度、实时性和信息的丰富性。
上面我们提到RAG技术一般会使用向量数据库做为“知识库”来支撑用户存储和检索自己的文档或数据。关于向量数据库的理论和概念最近随着AIGC的火热被谈论的很多了,这里有2篇文章能让你快速的了解它:
对于RAG(检索增强生成)技术方案来说,为什么使用向量数据库,主要是因为其不仅能提供传统的结构化/非结构化数据库增删改查(CRUD)以及元数据管理的能力,还在处理高维数据,特别是处理深度学习模型生成的向量数据方面具有特殊的优势,具体表现在:
1.维度。深度学习模型生成的文本、图像或语音向量通常位于高维空间中。传统的关系型数据库并不擅长处理这类高维数据,因为它们主要是为处理结构化数据(如表格数据)而设计的。相比之下,向量数据库天生就是为了存储和管理高维空间数据而构建,能够有效地处理和存储这类数据。
2.速度。向量数据库专门设计用于存储高维向量,并支持快速的相似性搜索。在RAG技术中,需要从大量数据中检索与查询最相关的信息,这通常涉及到计算查询向量与数据库中所有向量之间的相似度。向量数据库通过优化的索引结构和近似最近邻(ANN)搜索算法,能够高效地完成这一任务,显著提高检索速度。
3.推理。向量数据库支持基于向量相似度的复杂查询,这对于RAG技术中的自然语言查询处理至关重要。它们可以根据查询的语义内容相关性而非仅仅是关键字匹配来检索信息,这使得向量数据库具有“推理”的能力,而非只是“查询”。
向量数据库一般基于嵌入模型(Embedding Models)将文本向量化,从而来完成推理。前面提到Google发布的BERT模型和OpenAI发布的GPT模型都能提供嵌入(Embedding)计算的能力,但一般BERT系列模型相对于GPT系列模型会“小”很多,这体现在参数数量和磁盘占用上,可以说是“小模型”和“大模型”之分,在做向量计算时该如何选择呢?简单的说它们的相同点都是基于深度学习“将数据转换为高维向量表示”。不同点在于小模型侧重于数据的有效关联判定和简单逻辑推理,而大模型则侧重于深入理解和生成文本等更复杂的任务,具体如下:
小模型
大模型
设计目标和用途
通常设计为特定任务的一部分,比如将单词、句子或文档转换为向量形式,这些向量随后用于各种任务(如聚类、相似度搜索等)。
为理解文本上下文并生成文本而设计的。可以直接用于生成文本、问答、提取摘要等任务。
模型规模和复杂性
往往相对简单,参数量少,专注于有效地将数据转换为嵌入向量。一般模型主体占用数百MB磁盘空间。
拥有极大的参数量(从几十亿到几百亿不等),设计更为复杂,可以捕获数据中的细微语义和结构。占用TB级磁盘空间(AI估算)。
训练数据和过程
训练通常基于特定任务的数据集,目标是学习良好的数据表示。
通过在庞大的数据集上进行预训练,学习语言的广泛特征和模式,然后可以在特定任务上进行微调(fine-tuning)以提高性能。
在向量数据库中的应用
产生的向量直接用于向量数据库中,以支持快速的相似性检索和推理。
产生的向量可以用于向量数据库。但通常更注重捕捉丰富的语义信息,在需要深度理解的应用场景中作用更大。
下一节的例子会展示以上区别。
目前,在市场上可供选择的向量数据库产品越来越多了,其中Faiss(Facebook AI Similarity Search)、Milvus等产品已经可以用于企业级生产。
Chroma是2023年中旬发布的一个面向AI应用的开源向量数据库,简单、轻量、易用,是专门为自然语言处理(NLP)、图像分类、构建推荐系统和聊天机器人等领域的应用而设计的,非常适合用来快速构建和探索RAG应用。
下面用实际Python代码展示一个基于Chroma向量数据库实现RAG关键步骤“文本推理”(对应3.1节示意图环节②③)的例子,分别使用“小模型”和“大模型”对中文文本进行向量化处理,然后针对三个问题进行推理,比较这两种不同模型得到的结果:
2. 从磁盘上加载4段长文本以及录入4段短文本,用来构建你自己的“知识库”。
3. 定义处理数据的4个函数,分别是文本转向量的函数、插入数据表的函数以及2种不同模型创建数据集(可以理解为“数据库表”)的函数。
4. 在这里定义3个问题,用来测试基于不同模型数据集的推理能力。同时定义一个函数,打印推理结果。
有了以上的准备,就可以开始测试了。
1.“bert-base-chinese”模型的distances一般算出来是百位数;
2.“小模型”是可以基于简短文本数据进行一些简单推理的,例如“bert-base-chinese”模型对问题3“吃完海鲜可以喝牛奶吗?”的推理结果“基本”合格;
3.“小模型”基于较长文本数据的推理很“随机”,效果很差,例如“bert-base-chinese”模型对于问题1“中国四大名著”和问题2“宋朝的故事”的问题就完全无法理解,尽管在我提供的长文本数据里明显含有这2个问题的关键词。
然后我们使用“OpenAI text-embedding-ada-002”这样的“大模型”对问题进行推理测试。测试代码如下:
执行上述代码,得到如下关键输出:
对比第一次小模型测试的结果,我们可以明显感觉到:
2.“大模型”基于简短文本数据的推理相当精确,针对问题3“吃完海鲜可以喝牛奶吗?”的推理结果堪称完美,相对于之前的“小模型”结果,“大模型”能准确的把“海鲜与柠檬”、“早晨喝牛奶”这类相关性较差数据的向量距离依次排开,并且能把“水浒传”这类相关性极差数据的向量距离明显拉开;
3.“大模型”基于较长文本数据的推理在这个测试中都在首位命中了事实上最相关的结果,例如它能在问题1“我想了解中国四大名著”的推理中把描述红楼梦的数据排在第1位以及问题2“关于宋朝发生的故事”的推理中把描述水浒传的数据排在第1位。但也都有不足,例如它在问题1“我想了解中国四大名著”的推理结果中把描述金瓶梅的数据排在第2位,按照常识应该水浒传才是四大名著之一;在问题2“关于宋朝发生的故事”的推理结果中把描述指环王的数据排在第3位,而按照常识红楼梦似乎和中国、宋朝的相关性比指环王会更高一些。
上述的例子使用Python代码编写,当然也可以使用Java实现,Chroma也有相关的Java SDK可以使用。如果说Java是企业应用时代的原生语言,那么Python就是AI时代的原生语言,大多数AI项目的官方支持语言都是Python,并且相对于Java来说,Python的学习和应用更加简便,建议直接用起来。
基于上述简单的测试证明我们可以将类似OpenAI “text-embedding-ada-002”这样的大模型应用到实际的RAG生产中,事实上目前京东很多AI客户服务使用的向量嵌入模型正是OpenAI “text-embedding-ada-002”。鉴于text-embedding-ada-002这个模型是GTP3时代的产品,相信未来OpenAI推出基于GTP4的嵌入模型一定会更加强大精准。
理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将
上面我们提到可以利用RAG技术结合自有知识库对大模型进行增强,从而获得更准确、实时、丰富的垂直内容或个性化结果。但这仍然没有跳出内容生成(AIGC)的范畴,如果你需要人工智能像一个“以终为始”的高效率员工一样自主选取各种工具、和各种不同系统沟通协同工作,直到交付最终结果,那么就需要了解“智能体”这个方案了。
智能体(Agent)技术是人工智能应用的一个核心概念,是指可以自主执行任务、作出决策,并在一定程度上模拟人类或其他智能实体行为的计算机程序或机器。目前智能体在仿真、游戏、客户服务以及自动化控制等多个领域和应用中展示了巨大的潜力,从简单的自动化脚本到复杂的决策支持系统,智能体在软件和硬件系统中通过扮演感知者、执行者、决策者或学习者等多种角色来完成任务。
1.明确问题:首先,需要明确问题的核心内容和目标。即使问题未知,也可以通过一些通用的启动语句引导模型聚焦问题,通用的提示可以是:“让我们首先理解问题的核心并制定一个解决方案的计划。”
2.划分子任务:对于大部分复杂问题,可以将其分解为更小的、更易于管理和解决的子任务。通用的提示可以是:“接下来,根据这个计划分解问题为子任务。”
3.制定具体计划:基于子任务,进一步细化出解决每个子任务的具体计划。可以使用类似于:“针对每个子任务,让我们制定一个具体的解决方案或步骤。”的提示。
4.执行并验证:鼓励模型按照计划执行,并在执行过程中检验每一步的正确性。可以用:“现在,按照我们的解决方案计划逐步执行,并检查每一步的结果是否符合任务的预期。”的提示来指导模型。
5.适时调整:如果在执行过程中发现问题或者结果与预期不符,需要准备好调整计划的提示,例如补充类似的提示:“如果我们发现任何步骤的结果不如预期,让我们回顾并调整我们的计划。”
6.总结答案:最后,鼓励模型汇总执行计划后的结果,给出最终的答案或解决方案,提示可以是:“最后,综合我们所有子任务解决方案执行的结果,总结出问题答案或最终解决方案。”
在2022年大模型浪潮爆发后不久,开源的智能体项目也跟着大量的涌现。从最早AutoGPT推出时的轰动,到目前MetaGPT的逐步应用,我通过自己的跟踪测试能深切的体会到这项技术从“一言难尽”到日趋成熟,在工业生产中的使用指日可期。
如果你不想编写代码,也快速体验智能体产品,使用Tavily会比较方便。Tavily的口号是“对耗时的研究说再见”——声称可以帮助你快速洞察和全面研究一个课题,从准确收集信息源到整理研究成果,并且将所有工作都集中在一个平台上完成。商业模式是对API调用次数及调用其高质量实时知识库增强推理(RAG)付费,值得借鉴。
Tavily可以提供一个沙箱(APIPlayground),供用户测试其“针对高质量实时知识优化的大模型增强检索”API,沙箱只开放通用知识库(垂直的高质量实时知识库需要付费才能使用),沙箱的测试结果会返回互联网上的相关知识集。我提出了一个极富挑战性的课题进行测试,效果如下图:
Tavily还提供了一个研究助手(Research Assistant)的Web应用,供用户在线使用智能体产品,需要用户使用自己的OpenAI API Key调用GPT4服务,支持“深度研究”,也就是要消耗更多的算力和时间(钱)获得更高质量的结果。我提出了一个很直接很实用的课题进行测试,消耗了大约2元多人民币的API调用费,获得了一份大约1500字的报告,过程如下图:
通过前面的介绍,我们能够理解大模型、RAG和智能体这些技术和理念的潜力在于相互结合,形成更为强大和灵活的AI系统——即结合大模型的深层次语言理解和生成能力、RAG的垂直和实时的信息检索能力以及智能体的决策和执行能力。
目前,已经有一些比较典型的行业应用方案:
案例1:智能客服系统。在一个集成了大模型、RAG和智能体的智能客服系统中,大模型可用于理解用户的查询和生成自然语言回复,RAG技术可用于从企业的数据库和知识库中检索准确的信息以支持回复,而智能体则负责管理对话流程、处理事务性任务和执行复杂的用户请求。这种集成使得客服系统能够提供更准确、更人性化的服务,同时减轻人工客服的负担。
案例2:个性化教育平台。在个性化教育平台的例子中,大模型可以根据学生的学习进度和偏好生成定制的学习材料和测试,RAG技术可以从广泛的教育资源中检索相关信息以丰富教学内容,而智能体可以根据学生的反馈和学习成效调整教学策略和内容。这种集成不仅能够为学生提供更加个性化的学习体验,还能够帮助教师更好地理解学生的需求和进步。
案例3:复杂决策支持系统。集成大模型、RAG和智能体的复杂决策支持系统能够在金融、医疗和科研等领域提供强大的支持。在这种系统中,大模型用于处理和生成语言信息,RAG技术用于从大量数据中检索相关信息和案例,智能体则负责综合这些信息,形成决策建议。这种集成系统能够处理复杂的查询,提供基于数据的决策支持。
针对供应链物流领域通过集成大模型、RAG和智能体技术,可以从如下几个业务系统探索突破点:
1.仓储管理(WMS):结合RAG技术和智能体,系统能够实时从供应商数据库、仓库库存记录和销售数据中检索关键信息,智能调整库存水平,减少库存积压和缺货风险。
2.运输管理(TMS):通过分析地理位置数据、运输成本和时间要求,智能体可以规划最优的货物配送路线和调度计划。这一过程会利用大模型来处理复杂的逻辑和约束条件,以确保高效且成本效益的配送。
3.供应链销售与运营规划(S&OP):利用大模型处理历史销售数据、市场趋势和用户反馈,生成精准的需求预测报告。智能体能够学习并适应市场变化,实时调整预测模型,提高预测的准确性。
理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染。
另外AI技术发展与社会发展的和谐相融的问题也非常值得思考,如何避免AI造成的技术性失业这个问题,对我们软件开发者而言显得特别重要。2024年3月在央视《对话》节目上,李彦宏表示,“以后不会存在程序员这种职业了,因为只要会说话,人人都会具备程序员的能力……未来的编程语言只会剩下两种,一种叫做英文,一种叫做中文”。回想20年前的软件开发行业,除了测试,诸如需求分析、画原型、网页开发、桌面开发、后台服务开发,甚至界面设计(美工兼职辅助平面设计)都是由程序员来做,几乎所有当时的“大厂”皆是如此,后来随着技术的演进和社会的发展,不仅编程开发这个行当分成了前端开发、后端开发、客户端开发、大数据开发、算法开发等诸多工种,连“美工”都分化成了视觉、交互、用研等专业领域,那么,未来在AI技术的发展下,这些角色的分工会重新合并,甚至不会存在了么?
可能会出现如下的趋势:
1.一定会提高效率和创造力。AIGC 可以大大提高设计人员和开发人员的效率,我们很多团队在2023年初就开始使用Midjourney辅助设计或使用JoyCoder和GitHub Copilot辅助编码,效果有目共睹。可以预见,在产品设计或代码生成等探索性和创造性阶段,通过AI智能体快速生成各种解决方案并将概念转化为可视化表达或代码,会变得越来越便捷并越来越具有实际价值。
2.开发者的角色可能会演变。开发者角色分工的界限会变得越来越模糊,全新的更具协作性和增强型的软件开发生命周期会出现。未来的开发者和设计师会减少用于日常编码或设计,甚至文档撰写的时间,而更多的时间用于明确智能体等AI工具的目标、解释人工智能生成的解决方案,以及将这些解决方案集成到多种不同的系统架构中。开发者的角色可能会演变为承担更多监督和管理的职能,以确保AI生成的设计和代码符合业务目标以及人类价值观。
3.软件开发这个行业会“民主化”。随着 AIGC 工具变得更加易用和强大,我们可能会看到越来越多没有传统设计和编码技能的人也可以发起或参与软件开发。这将使软件开发这个行业参与的业务领域更加多样化,数字化应用的范围更加广泛。