微信扫码
与创始人交个朋友
我要投稿
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+中大型企业
2024-12-21
用LangChain教AI模仿你的写作风格:详细教程
2024-12-18
一站式 LLM 工程观测平台:Langfuse,让所有操作可观测
2024-12-17
LLMs开发者必看!Pydantic AI代理框架震撼登场!
2024-12-16
用LangChain实现一个Agent
2024-12-16
通过阿里云 Milvus 和 LangChain 快速构建 LLM 问答系统
2024-12-16
大模型部署调用(vLLM+LangChain)
2024-12-14
利用 LangGraph 和代理优化工作流程效率:关键功能、用例和集成...
2024-12-09
深度丨LangChain团队基于Agents用户体验设计的研究
2024-04-08
2024-08-18
2024-06-03
2024-10-10
2024-04-08
2024-04-17
2024-06-24
2024-04-11
2024-07-13
2024-04-12
2024-12-02
2024-11-25
2024-10-30
2024-10-11
2024-08-18
2024-08-16
2024-08-04
2024-07-29