AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


一文速览LangChain核心组件
发布日期:2024-04-06 08:20:56 浏览次数: 2365 来源:极客e家


LangChain速览



对于

在AI新时代,特别是在各种大模型(如ChatGPT、文心一言等)现在已经普及的背景下,LangChain作为一个连接大模型和应用的桥梁,对于快速开发AI应用具有至关重要的作用。LangChain通过简化模型集成和应用开发流程,降低了技术门槛,使更多的人能够参与到AI应用的创新中来,加速了AI技术在各个行业的应用进程。下面我们来速览一下LangChain:


什么是LangChain?

LangChain是一个面向大模型的开发框架,主要封装了一些组件、工具和API,方便开发人员可以轻松地集成和使用这些大型语言模型来开发AI Native应用,是连接大模型和应用开发的桥梁。LangChain可以使开发人员不必深入了解模型内部的工作原理,就能够利用这些模型的能力,比如文本生成、内容理解、情感分析等,来创造出各种应用,从简单的聊天机器人到复杂的自动内容生成系统。LangChain现在只支持Python和JS两种开发语言,具体可以参照官网:https://www.langchain.com


LangChain核心组件介绍


模型接口:LangChain本身并不提供大模型,但提供了与各种大模型的接口,基本上涵盖了主流所有的大模型,比如OpenAI、ChatGLM、LLama等,方便对大模型进行操作。

from langchain.llms import OpenAI
# 初始化 OpenAI LLM (Large Language Model) 类的实例# 这里假设你已经配置了 LangChain 以使用 OpenAI 的 API 密钥chatgpt = OpenAI(openai_api_key="...")
# 使用 ChatGPT 生成文本response = chatgpt.generate("Hello, world! How can I help you today?")
# 打印响应文本print(response)


-----------


向量据库操作组件:LangChain提供了各种工具可以对向量数据库进行操作,主要核心流程有下面几步,如下图所示:



1、Document Loaders(加载文档)、Document Transformer(对文档进行转换)、Text Embedding Models(将文本向量化)。

2、Query Verctor stores(将Prompt发送至向量数据库进行检索,其中也需要将文本向量化)

3、Retrieve ‘most similar’(返回类似结果)


具体可以参照官网:

https://python.langchain.com/docs/modules/data_connection/vectorstores/


-----------


Memory组件:简单可以理解成历史记录,是用来增强语言模型记忆能力的关键部分,特别是在处理长文本、复杂对话或需要累积知识和上下文信息的场景中。


上图其实很好理解,分为读和写两部分:

1、读的部分:当我们根据已有历史,再询问新问题时,我们首先会先从Memory中将历史文本读出来,在此基础之上,拼接这次要提问的问题,组成全新的Prompt,传递给大模型。

2、写的部分:大模型输出结果的同时,再将结果通过Memory进行存储。


上面两个过程如此循环,具体示例代码可以参照官网:

https://python.langchain.com/docs/modules/memory/


补充:Memory有几种形式:

  • BufferMemory:之前的对话,完全存储下来

  • BufferWindowMemory:将最近的K组对话存储下来,这样在每一轮新的对话中将这K组对话传递给LLM

  • VectorStore-backed Memory:它是将所有之前的对话通过向量的方式存储到向量数据库中,在每一轮新的对话中,会根据用户的输入信息,匹配向量数据库中最相似的K组对话

  • ConversionMemory:它是将对话进行时对对话信息进行摘要,并将当前摘要存储在内存中。然后在新一轮对话中,可以将此摘要作为短期记忆传递给LLM。这种方式对于较长的对话非常有用,因为它是相当于压缩了历史的对话信息,能够将够多的短期记忆发送给LLM


-----------


Chains组件:任务的链式调用,简单理解是一系列顺序功能的组合。可以将大型语言模型(LLM)和提示语(prompt)结合在一起, 创建多种不同功能的Chain,然后将这些chain组合在一起,对文本或其他数据执行一系列操作。官网:

https://python.langchain.com/docs/modules/chains


下面是一个简单的Demo,大家可以参考下:

from langchain.chat_models import ChatOpenAIfrom langchain.prompts import ChatPromptTemplatefrom langchain.chains import LLMChain #定义大型语言模型llm = ChatOpenAI(model='gpt-3.5-turbo', temperature=0.9) prompt = ChatPromptTemplate.from_template("这篇文章{article}主要讲了什么?") #将llm和prompt组合在一起创建一个LLMChain的实例chain = LLMChain(llm=llm, prompt=prompt) #执行chainprint(chain.run("三国演义"))

-----------


Agent组件:Agent可以理解成智能体,给定一系列复杂的任务,它能够自动完成。比如自动回答问题、生成文本、执行用户命令等。


使用流程:

1、需要定义一些工具,这里的工具是泛指的概念,可以是API、也可以是Chain、甚至是其他的Agent。

2、大模型会自动调度和选择,什么场景下用什么工具去完成什么任务。(这里要区别于传统的编程思想,传统的编程思想是我们自己需要写if else去判断每一步用什么工具去完成给定的任务)。


而Agent主要有两种模式:


一种是Action Agents,下一步的动作由上一步的输出决定(根据每个steps调用LLM和tools,每个steps根据目标问题Object->思考Thought->调用工具Action->获得Observation。一直循环直到Thought到Final Answer,即完成这个Step)。


另一种是Plan-and-execute Agents,计划好所有的步骤,然后顺序执行(计划者调用1次LLM。设计一个规划目标和拆解任务的prompt,让LLM根据任务制定计划。代理将大型任务分解为较小的、可管理的子目标,从而能够高效处理复杂任务)。


最后还有一个ReAct思维模型,融合了Reasoning和Acting的一种范式,其本质上就是规则思维化prompt提示的实现结果。这里就不详细介绍了。


关于Agent这部分的代码示例稍微复杂一些,请大家参照官网:

https://python.langchain.com/docs/modules/agents/quick_start


-----------


LangChain的出现,降低了技术门槛,大大简化了我们开发基于大模型应用的周期。而LangChain本身的版本也在不断的迭代中,现在的社区的活跃度也很高。与LangChain类似,Semantic Kernel(简称SK)也非常火,大家可以关注下。

(正文完)




53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询