众所周知,现在很火的ChatGPT3.5是无法联网的,所以如果想使用自己的功能实现联网搜索并给出回答,总结PDF、基于某个视频进行问答等功能是无法实现的。也有人会说现在Chat GPT4.0是可以,但是它也是收费的呀,并且价格不菲,由于众所周知的原因充值也很麻烦。也有人可能会说,AutoGPT自己可以去产生新想法的;它们其实都是一个自动化AI agent的一个概念。这个agent的概念就是它作为一个节点,能够自主的去根据你所定义的这个任务去生发出一些新的任务,然后完成它。那么,在这个应用的背后啊,必然隐藏了一个很重要的技术。本篇文章就来为你揭秘。他就是LangChain,通过了解它,我们便可以使用自己的功能实现联网搜索并给出回答,总结PDF、基于某个视频进行问答等功能的。
官方文档地址:https://python.langchain.com/docs/get_started/introduction.html
我个人认为它是你学习AI或者说是你想要成为一个AI开发人员,现阶段必须要学习的一个架构,或者说一个协议虽然呢,它现在在一个不起眼的角落,但是它在未来有非常非常大的潜力。那么今天呢,我们就来详细的介绍一下LangChain到底是什么。首先来说一下这个库目前非常活跃,每天都在迭代,已经有 50.2k 的 star,更新速度飞快。

LangChain 是一个用于开发由语言模型驱动的应用程序的框架。他主要拥有 2 个能力:
那么我们应该如何更加通俗易懂的去了解体会LangChain到底是什么呢。
相信大部分人都尝试过了ChatGPT,或者其它的一些大型语言模型。无论是哪种大型语言模型,相信都用到了一个prompt的一个东西。LangChain在官方文档中就说了:怎么样对prompt进行管理,进行优化,然后怎么样去设定一个通用性质的一个接口,然后怎么样去利用一些操作,让这个prompt更有效率

你可以把prompt看成是一种指导意见,只不过这种指导意见是在做这个大型语言模型的时候,人们总结出来得到的一个东西,然后把它成文,你用了这套代码,就符合了LangChain所定义的这套规范。那么在这方面不仅有这个prompt,大家看到一些其他的概念,比如说chain比如说这个Data Augmented Generation,比如说Agents,比如说Memory,还有一个beta版本的Evaluation。所以我们回头过来看,这个LangChain其实想做的一件事情就是:我把你在AI开发之中会用到的相关的技术全部抽象成一个小的元素,你只要用这些元素,你就可以不用重复的去造轮子,不用去想从架构上我应该怎么样去管理这个关键词,我应该怎么样去管理这个节点,或者说这个agent;我只需要把这些东西像积木一样的给拼起来;我说这个地方需要有一个关键词管理,下面需要有一个处理单元,最后需要有个评价单元;我把它们连起来,它就是一个AI。具体这个关键词的处理单元是怎么处理的,agent它是怎么生成的,然后是怎么评价的;它在里面都给你提供了你可能能用到的各种各样的东西;你只需要在它的这个例子上去选;生成我要用openAI的服务;评价我要用另外一个公司的服务,关键词管理的数据库我是从AWS里面来的,还是从微软语音里面来的,这些它所有东西都给你提供好了;所以从这个方面我们就可以知道;LangChain其实是为了提升AI开发效率形成的一种约定俗成的架构;所以这个就是LangChain,简单来说它就是做了一个标准化的事情。
其实我们在去用这个和AI相关的服务,用的最多的可能还是OpenAI的API;在用OpenAI的API的时候我们会发现各种各样的问题。举个例子,比如说我们之前说的:
所以我们可以知道像这样的一个单独的软件,单独的API它肯定是有这样或者那样的问题的;那更不用说数据安全的问题了,我有些数据库我不想暴露出去,那么怎么样能够更好地保证我的安全。这都是现实生活中我们会面临的问题。这样的问题其实体现出来的一个劣势就是在于我们不希望我们的AI程序是完全依赖于单独一个OpenAI公司的,我希望OpenAI的这个API,它只是我程序里面的一个模块一个部分,它是任何时间都可以被取代的。
到底解决了是一个实际上面的哪些问题
然后其他的大型语言模型和OpenAI做的工作都是类似的,都是一样的;就是我也是用关键词去生成相关的东西。但能不能就是我去掉这些限制,去掉专门针对OpenAI的这种限制,我把它变得更通用化而已。所以这个就是LangChain它最大最大的优势。
首先你如果去看它这个Quickstart,这个里面就是教你怎么样去安装这些,乱七八糟的东西,大家可以简单的看一看就行了。我们要去读懂LangChain,其实最核心的部分是在这个Modules地方 其实是把语言模型中你会用到的东西分成了这样几个大类,比如说prompt关键词,它在这个地方就会教你我应该怎么样去用LangChain做关键词的管理

官方地址:https://github.com/hwchase17/langchain#-what-can-this-help-with
之前有说过,不再赘述,相信即使不说大家也知道这是什么。
可以把它理解成当我和这个OpenAI的ChatGPT对话的时候,我一问、它一答这个东西就是一步操作,它不涉及到任何chain(就是链式操作)。但是在我们真正去调用一些复杂的工作的时候,它可能不是这种一步操作,它可能是一步操作到两步操作、或者说一步操作到多步操作。就比如说:我说你帮我去算一下1加1等于多少?那ChatGPT它没有办法很精准的给出答案,当然它有可能能够给出很精准的答案,但是数学计算并不是它擅长的,那么这个时候最合理的让AI帮助你解决这个问题的方法是什么呢?是我问它你能不能帮我算1加1等于多少。然后它可能把它拆成两步:
通过这样的方式,能够让AI帮助你得出一个精准的结果,那这个地方就涉及到一个链式的操作,这就是一个chain。让自然语言的模型去完成自然语言擅长的事情,然后根据自然语言的输出然后去做一些另别的操作,所以这个是chain最核心的一个点。
其实它主要的还是API Core,就是我们现在的Data Generation主要用的是OpenAI的服务,那未来会不会有其他的服务。比如说谷歌的服务、比如说像Amazon的服务、比如说其他服务上的服务,现在我们只能用OpenAI,那未来我想用我自己的一个大型语言模型,它也是可以的。总结来讲可以把它理解成就是一个AI生成器。
Agents你可以把它理解成一个更高维度的执行器,其实可以把它看成是一个更高维度的一个统筹,写作的这样的一个节点,这个节点是负责监督这些task的。
可以理解成一个长期记忆,prompt可以理解成短期记忆。可以把Memory理解成是已经在模型内部的已知的知识,而不是通过输入给到它的。举个很简单的例子:有点像这个计算机里面的内存和这个外存;那我这个内存我重启机器以后内存就清空了,也就是短期记忆就清空了(prompt也就是短期记忆)。像我的SSD或者说我这个HDD,我即使重启了这个机器,它里面还是保存这些资料的,这就可以理解为Memory。如果说这个memory是以这个vector的方式,或者是embedding的方式,以数据的方式存在了一个地方,然后每一次我运行这个大群语言模型的时候,我就从那个地方给读取出来,我就可以认为它是一个长期的记忆。或者说是我已经把这个数据fineturing到我的模型里面了,我这个模型里面的每个节点的权重,每个节点的weight已经知道了这个相关的信息,那这个也可以理解成一个长期的记忆。所以说是这个数据已经是模型的一部分,或者说是在模型开始的时候就已经读取到它了,就可以把它理解成是一个长期的记忆。
是对最终的模型进行一个判断,进行一个标记,有一个tag的作用在这个地方,现在还是在beta的状态。
其实是有的,我们拿到LangChain以后我们知道,LangChain最核心的价值是在于标准化。对开源社区来说,标准化的力量是非常强大的,它极大的提升了这样的一个效率,而且LangChain这样的一个东西出来以后,大家只需要针对LangChain去做自己的这个应用的优化就行了。而且会发现做应用会做得非常快,为什么呢?因为LangChain这个标准确定了。未来基于LangChain的图形化的模块,非python版本的这个LangChain,然后这种docker的LangChain全部都会马上出来。那么对于开发者来说,你有可能你原来觉得做起来好难,我要花一个月的时间去配置,去建立数据库,这东西现在发现都不需要了,以后可能未来的开发模式是我一有个非常好的点子,我只需要在网站上去拖动拖动拖动拖动。把这几个模块一搭,搭完了以后,一个基于大型原模型的API就做好了,你基于这个API你可以做任何的事情,就会让开发的流程变得非常简单。
机会在于比如说:
这属于底层的架构 第二个就是基于LangChain的APP。LangChain现在就像一个标准在这个地方,像一个HUB一样,那么我就做一些基于LangChain的APP,我去快速的占领LangChain这个市场,也有可能能够形成一个用户习惯。最后来说一下LangChain未来的前景。像我之前所说的那样,它最后会变成一个比较方便易用的。一个大型语言模型的开发系统,不管是图形化的界面也好,还是那种一键生成后段服务的功能也好;未来一定会有,在不久的将来我们肯定会看到,然后开发者会更简单的针对具体的垂直类的用场景开发很多很多小的APP,大的公司就去做LangChain这个里面特定的服务,比如说像这方面的generation就是openAI在做,那么其他的大的公司也在做,像chain会有更多的工具,像memory会有传统的企业,比如说AWS,比如说微软云,传统的云服务的企业去做,然后关键词当然也会有相对应的,这种关键词搜索的公司去做。所以每一个东西展开都是有它特定的领域,以及有特定的创业机会在这的。
最后这些模块化的积木会变成一个人们可以看到的一个一个的AI应用,然后这些AI应用会在人们的生活中充斥着,所以AI的开发未来会变得非常的简单,不会是一个非常难的事情,但是标准化的这一步一定是一件非常伟大的事情,所以十分推荐你如果是做AI相关的开发的,去读一下LangChain。
之后也会介绍一到两个和LangChain相关的项目,然后我们自己去跑一跑玩一玩看一下它怎么样去使用。感兴趣的小伙伴可以关注一下。