带你了解爆火的 AI 框架 -LangChain
前言
众所周知,现在很火的 ChatGPT3.5 是无法联网的,所以如果想使用自己的功能实现联网搜索并给出回答,总结 PDF、基于某个视频进行问答等功能是无法实现的。
也有人会说现在 Chat GPT4.0 是可以,但是它也是收费的呀,并且价格不菲,由于众所周知的原因充值也很麻烦。
也有人可能会说,AutoGPT 自己可以去产生新想法的;它们其实都是一个自动化 AI agent 的一个概念。这个 agent 的概念就是它作为一个节点,能够自主的去根据你所定义的这个任务去生发出一些新的任务,然后完成它。那么,在这个应用的背后啊,必然隐藏了一个很重要的技术。本篇文章就来为你揭秘。他就是LangChain
,通过了解它,我们便可以使用自己的功能实现联网搜索并给出回答,总结 PDF、基于某个视频进行问答等功能的。
了解 LangChain
官方文档地址:https://python.langchain.com/docs/get_started/introduction.html
我个人认为它是你学习 AI 或者说是你想要成为一个 AI 开发人员,现阶段必须要学习的一个架构,或者说一个协议虽然呢,它现在在一个不起眼的角落,但是它在未来有非常非常大的潜力。那么今天呢,我们就来详细的介绍一下LangChain
到底是什么。
首先来说一下这个库目前非常活跃,每天都在迭代,已经有 50.2k 的 star,更新速度飞快。
LangChain 是一个用于开发由语言模型驱动的应用程序的框架。他主要拥有 2 个能力:
1.可以将 LLM 模型与外部数据源进行连接
2.允许与 LLM 模型进行交互
那么我们应该如何更加通俗易懂的去了解体会 LangChain 到底是什么呢。
LangChain 其实是为了提升你构建一个和大型语言模型相关的软件的这种效率,也就是可以利用 LangChain 从而可以使你更快的去构建一个 AI 软件。
简单讲 LangChain 可以理解成一种标准、或者一层协议,这层协议构建了你构建大型语言模型可能会用到的哪些东西,然后 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 的时候我们会发现各种各样的问题。举个例子,比如说我们之前说的:
它的数据库直到 2021 年
它只是适用于自然语言处理
它没有办法去针对事实做判断
它的 Token 数量有限
它只能接受 4096 个 Token 或者是 8192 个 Token;它没有办法接受更多的文字字符了
它的这个没有办法形成一个长期的记忆,你需要一直的给它去有一个预设在,它才能可能根据这个预设这种短期的记忆生成你想生成的东西
所以我们可以知道像这样的一个单独的软件,单独的 API 它肯定是有这样或者那样的问题的;那更不用说数据安全的问题了,我有些数据库我不想暴露出去,那么怎么样能够更好地保证我的安全。这都是现实生活中我们会面临的问题。这样的问题其实体现出来的一个劣势就是在于我们不希望我们的 AI 程序是完全依赖于单独一个 OpenAI 公司的,我希望 OpenAI 的这个 API,它只是我程序里面的一个模块一个部分,它是任何时间都可以被取代的。
优势所在
到底解决了是一个实际上面的哪些问题
然后其他的大型语言模型和 OpenAI 做的工作都是类似的,都是一样的;就是我也是用关键词去生成相关的东西。但能不能就是我去掉这些限制,去掉专门针对 OpenAI 的这种限制,我把它变得更通用化而已。所以这个就是 LangChain 它最大最大的优势。
如何快速上手 LangChain
首先你如果去看它这个 Quickstart,这个里面就是教你怎么样去安装这些,乱七八糟的东西,大家可以简单的看一看就行了。我们要去读懂 LangChain,其实最核心的部分是在这个Modules
地方
其实是把语言模型中你会用到的东西分成了这样几个大类,比如说 prompt 关键词,它在这个地方就会教你我应该怎么样去用 LangChain 做关键词的管理
介绍 LangChain
官方地址:https://github.com/hwchase17/langchain#-what-can-this-help-with
Prompt
之前有说过,不再赘述,相信即使不说大家也知道这是什么。
Chains:
可以把它理解成当我和这个 OpenAI 的 ChatGPT 对话的时候,我一问、它一答这个东西就是一步操作,它不涉及到任何 chain(就是链式操作)。但是在我们真正去调用一些复杂的工作的时候,它可能不是这种一步操作,它可能是一步操作到两步操作、或者说一步操作到多步操作。就比如说:我说你帮我去算一下 1 加 1 等于多少?那 ChatGPT 它没有办法很精准的给出答案,当然它有可能能够给出很精准的答案,但是数学计算并不是它擅长的,那么这个时候最合理的让 AI 帮助你解决这个问题的方法是什么呢?是我问它你能不能帮我算 1 加 1 等于多少。然后它可能把它拆成两步:
第一步是我把 1 加 1 等于多少这个人说出来的话转成一个 1 加 1 等于多少的 Python 代码这是它擅长的,理解人的语言把人的语言进行改写 扩写或者总结。这方面它就做了一个将人的语言改写成 Python 代码
第二步它把 Python 代码跑一遍,就得出来了一个结果 2,然后它把 2 返回给人,说我帮你算出来了这个东西,它是等于 2 的。
通过这样的方式,能够让 AI 帮助你得出一个精准的结果,那这个地方就涉及到一个链式的操作,这就是一个 chain。让自然语言的模型去完成自然语言擅长的事情,然后根据自然语言的输出然后去做一些另别的操作,所以这个是 chain 最核心的一个点。
Data Augmented Generation
其实它主要的还是 API Core,就是我们现在的 Data Generation 主要用的是 OpenAI 的服务,那未来会不会有其他的服务。比如说谷歌的服务、比如说像 Amazon 的服务、比如说其他服务上的服务,现在我们只能用 OpenAI,那未来我想用我自己的一个大型语言模型,它也是可以的。总结来讲可以把它理解成就是一个 AI 生成器。
Agents
Agents 你可以把它理解成一个更高维度的执行器,其实可以把它看成是一个更高维度的一个统筹,写作的这样的一个节点,这个节点是负责监督这些 task 的。
Memory
可以理解成一个长期记忆,prompt 可以理解成短期记忆。可以把 Memory 理解成是已经在模型内部的已知的知识,而不是通过输入给到它的。
举个很简单的例子:
有点像这个计算机里面的内存和这个外存;那我这个内存我重启机器以后内存就清空了,也就是短期记忆就清空了(prompt 也就是短期记忆)。像我的 SSD 或者说我这个 HDD,我即使重启了这个机器,它里面还是保存这些资料的,这就可以理解为 Memory。
如果说这个 memory 是以这个 vector 的方式,或者是 embedding 的方式,以数据的方式存在了一个地方,然后每一次我运行这个大群语言模型的时候,我就从那个地方给读取出来,我就可以认为它是一个长期的记忆。或者说是我已经把这个数据 fineturing 到我的模型里面了,我这个模型里面的每个节点的权重,每个节点的 weight 已经知道了这个相关的信息,那这个也可以理解成一个长期的记忆。所以说是这个数据已经是模型的一部分,或者说是在模型开始的时候就已经读取到它了,就可以把它理解成是一个长期的记忆。
Evaluation
是对最终的模型进行一个判断,进行一个标记,有一个 tag 的作用在这个地方,现在还是在 beta 的状态。
作为开发者来说有什么机会/挑战吗
其实是有的,我们拿到 LangChain 以后我们知道,LangChain 最核心的价值是在于标准化。对开源社区来说,标准化的力量是非常强大的,它极大的提升了这样的一个效率,而且 LangChain 这样的一个东西出来以后,大家只需要针对 LangChain 去做自己的这个应用的优化就行了。而且会发现做应用会做得非常快,为什么呢?因为 LangChain 这个标准确定了。
未来基于 LangChain 的图形化的模块,非 python 版本的这个 LangChain,然后这种 docker 的 LangChain 全部都会马上出来。
那么对于开发者来说,你有可能你原来觉得做起来好难,我要花一个月的时间去配置,去建立数据库,这东西现在发现都不需要了,以后可能未来的开发模式是我一有个非常好的点子,我只需要在网站上去拖动拖动拖动拖动。把这几个模块一搭,搭完了以后,一个基于大型原模型的 API 就做好了,你基于这个 API 你可以做任何的事情,就会让开发的流程变得非常简单。
那么作为现阶段的开发者机会在哪
机会在于比如说:
想做一个基础的架构
基于 LangChain 的一些底层的架构是还有空间让你去做的
比如说这个我刚刚说的图形化的界面
比如说从 Python 转 JavaScript
Python 转 Rust
和服务器相关的东西
这属于底层的架构
第二个就是基于 LangChain 的 APP。LangChain 现在就像一个标准在这个地方,像一个 HUB 一样,那么我就做一些基于 LangChain 的 APP,我去快速的占领 LangChain 这个市场,也有可能能够形成一个用户习惯。最后来说一下 LangChain 未来的前景。像我之前所说的那样,它最后会变成一个比较方便易用的。一个大型语言模型的开发系统,不管是图形化的界面也好,还是那种一键生成后段服务的功能也好;未来一定会有,在不久的将来我们肯定会看到,然后开发者会更简单的针对具体的垂直类的用场景开发很多很多小的 APP,大的公司就去做 LangChain 这个里面特定的服务,比如说像这方面的 generation 就是 openAI 在做,那么其他的大的公司也在做,像 chain 会有更多的工具,像 memory 会有传统的企业,比如说 AWS,比如说微软云,传统的云服务的企业去做,然后关键词当然也会有相对应的,这种关键词搜索的公司去做。所以每一个东西展开都是有它特定的领域,以及有特定的创业机会在这的。
最后这些模块化的积木会变成一个人们可以看到的一个一个的 AI 应用,然后这些 AI 应用会在人们的生活中充斥着,所以 AI 的开发未来会变得非常的简单,不会是一个非常难的事情,但是标准化的这一步一定是一件非常伟大的事情,所以十分推荐你如果是做 AI 相关的开发的,去读一下 LangChain。
之后也会介绍一到两个和 LangChain 相关的项目,然后我们自己去跑一跑玩一玩看一下它怎么样去使用。感兴趣的小伙伴可以关注一下。
如有问题,欢迎加微信交流:w714771310,或关注微信公众号【码上遇见你】第一时间获取精彩内容。
版权声明: 本文为 InfoQ 作者【派大星】的原创文章。
原文链接:【http://xie.infoq.cn/article/6de40f4628d9ace077be11cc3】。
本文遵守【CC BY-NC-ND】协议,转载请保留原文出处及本版权声明。
评论