« 上一篇

LangChain简介

大型语言模型(LLMs)作为一项具有变革性的技术正在兴起,使得开发者能够构建之前无法实现的应用程序。LLMs就像人类的大脑,但是光有大脑也没用,还需要身体,手,脚等各个组成部分一起才能构建一个真正强大的应用程序。Python下的LangChain开发框架就是这样一个强大的工具,它通过模块化的设计将各种类型的LLMs(大脑)与其他各种计算组件和知识来源相结合,共同构建出各种实用的应用程序。举个例子,比如通过LangChain开发框架构建一个简单的商品价格查询程序,那么你只需要向程序输入一段人类自然语言:“当前最便宜的XXX产品是多少钱?”,那么LangChain会首先将这段话交给指定的LLM解析,然后LLM可以通过对输入文本的分析自动生成相关的API调用接口参数等,接下来LangChain通过接口参数调用真正的商品查询接口获取结果返回给用户,整个过程中用户全程都是通过人类自然语言与程序进行交互。

从某种意义来讲LLMs就像是C++的编译器,Python的解释器一样:
语言类型
执行原理
C++语言
C++语言 --> 编译器/链接器 --> 既定任务
Java语言
Java语言 --> 编译器/虚拟机 --> 既定任务
Python语言
Python语言 --> 解释器 --> 既定任务
人类自然语言
人类自然语言 --> LLMs --> 各种后端组件 --> 既定任务

LangChain项目当前一直在快速迭代中,目前主要大模块包括以下六大组成部分:
Models, Prompts, Indexes, Memory, Chains, Agents

1.Models
主要包含了LangChain支持的各种各样的LLMs

2.Prompts
外部需要通过Prompt与各种LLMs进行交互, 本部分主要负责Prompt管理、Prompt优化和Prompt格式化输入等,以及LLMs输出内容的格式化管理等

3.Indexes
如果想构建自己的知识库,并且针对自己的知识库构建智能问答机器人,那么就需要本部分的帮助。本部分主要包括各种类型文档的加载,转换,长文本切割分段,文本向量计算,向量索引存储查询等

4.Memory
Memory涉及在用户与LLMs进行交互的整个过程中保持状态的概念。可以简单理解为对聊天消息的管理

5.Chains
Chains是LangChain中最重要的概念,顾名思义其可以将各个组件组合构成一个链条,成为一个完成某个特定任务的应用程序。例如,我们可以创建一个链,它接收用户输入,使用Prompts相关组件格式化输入,然后将格式化后的结果传递给LLM,然后将LLM的输出传递给后端组件或者其他链。我们也可以通过将多个链组合在一起,或将链与其他组件组合来构建更复杂的链。LangChain已经默认为我们实现了很多有用的链,比如用于对文章进行总结的Summarization链,用于对指定文本进行问答的Question Answering/Question Answering with Sources链,用于对指定知识库问答的Retrieval Question Answering/Retrieval Question Answering with Sources链,用于获取并解析网页的LLMRequestsChain链,用于操作关系型数据库的SQLDatabaseChain链等。另外还有一些由第三方实现的链,比如用于从文本提取结构化信息的create_extraction_chain链,其项目地址为:

6.Agents
虽然Chains已经很强大,但是开发者为了让LangChain更灵活更强大还进一步提出了Agents(代理)的概念,每个Agents都具有一套Tools(工具),
通过LLMs的强力加持,Agents可以根据用户输入内容自动决定调用所持有工具集中的与用户意图最匹配的一个工具。工具可以是一个函数,也可以是一个组件,甚至是一个链。

LangChain开发框架项目地址:
帮助文档地址: