当开发者构建LLM应用时,可能会遇到很多API接口、数据格式、工具等,特别是一个非AI领域的开发者,要研究入门总觉得有很大的负担。LangChain 就是为了让你跨越这道门槛,让LLM应该的开发更加简单。

01

为什么需要 LangChain ?

1、LangChain 是什么?

LangChain 是一个用于开发由大型语言模型 (LLMs) 驱动的应用程序的框架。它为开发者提供了一系列的工具和组件,开发者只需要写几行代码,就能运行一个大型LLM程序,甚至快速构建一个响应式的机器人。

2、两个关键概念

LangChain 的两个关键概念是 “组件” 和 “链”。

1️⃣ “组件”:在 LangChain 中,组件不是代码的拼凑,是一个具有明确功能的单元。

2️⃣ “链”:在 LangChain 中,链是将各种组件连接在一起的纽带,它能够确保组件之间的无缝集成和在程序运行环境中的高效调用。

3、三个常用场景

LangChain 的三个常用场景是 “问答系统” 、 “数据处理与管理” 和 “自动问答与客服机器人”。

➡️ 场景一:“问答系统”:问答系统已经成为大多数 LLM 应用不可或缺的一部分,基于 LangChain 可以轻松的与外部数据交互,迅速提取关键信息,然后执行生成操作,生成准确的回答。

➡️ 场景二:“数据处理与管理”:在数据的驱动下,RAG 成为一个非常热门的落地方向,RAG 结合了检索和生成两个阶段,可以提供更为精准的回答。在 LangChain 中,采用了 LEDVR 工作流来实现 RAG。

LEDVR,其中L代表加载器(Loader),E代表嵌入模型(Embedding Model),D代表文档转化器(Document Transformers),V代表向量存储(VectorStore),R代表检索器(Retriever)。

➡️ 场景三:“自动问答与客服机器人”:目前在很多平台(比如淘宝、京东等电商平台)已经上线了客服机器人,客服机器人已经慢慢成为了用户与公司的首要交互点。使用 LangChain 的 Agent 功能,可以快速构建实时响应的客服机器人。

02

LangChain 的6大模块

1、模型 I/O(Model IO)

LangChain 提供了与任何LLM适配的模型包装器,分为LLM包装器、聊天模型(Chat Model)包装器。

2、数据增强(Data Connection)

市面上的 LLM 通常是通用型大模型,而确实特定企业(或用户)的数据。LangChain 提供了加载、转换、存储和查询数据的构建模块。

3、链(Chain)

LangChain 提供了链式封装,可以将 LLM 以及各种组件进行链式连接。

4、记忆(Memory)

主要用能够引用对话中的信息。LangChain 提供了多种记忆模块,可以独立使用,也可以集成到链中使用。

5、Agent

核心思想是利用 LLM 选择操作序列,在链中,操作序列是硬编码的,而在 Agent 代理中,LLM 作为推理引擎,确定执行哪些操作和执行顺序。

6、回调处理器(Callback)

LangChain提供了一个回调系统,开发者可以在 LLM 应用的各个阶段对状态进行干预。

03

LangChain 的开发流程

1、密钥管理

LangChain 是一个集成框架,在开发 LLM 应用时,需要使用第三方平台的模型或者工具,此时一般都需要使用密钥(key)。

一般有如下方法:

(1)硬编码,写在代码里

OPENAI_API_KEY=xxxxxx
或者写在os环境变量.env文件
import os
os.environ.get('API_KEY')

(2)使用环境变量,将环境变量

可以在本地环境或者服务器上设置环境变量,将密钥保存为环境变量。

export OPENAI_API_KEY=xxxxxx

当你使用 Python 代码初始化 OpenAI 时,LangChain 会自动从环境变量中检测并获取密钥。

(3)使用getpass

这种方式是让用户主动输入密钥。

import os
import getpass

from langchain.llms import OpenAI

os.environ['OPENAI_API_KEY'] = getpass.getpass('OpenAI API Key:')

llm = OpenAI()

2、安装 Python 包

pip install openai langchain

3、编写第一个聊天机器人

(1)创建模型(调用的本地 Ollama 服务的 Deepseek 模型)

from langchain_community.llms.ollama import Ollama

llm = Ollama(model='deepseek-r1:14b')

(2)创建提示词模版

首先在 LangChain 的 schema 中定义了 AIMessage、HumanMessage以及SystemMessage三种角色的消息。

其次,封装了SystemMessagePromptTemplate、HumanMessagePromptTemplate、ChatPromptTemplate等模版类,便于创建提示词模板。

(3)创建链及运行

from langchain.chains import LLMChain
# 使用 LLMChain 连接聊天模型和提示词
chain = LLMChain(llm=llm, prompt=chat_prompt)
# 运行链
res = chain.invoke({
"role": "旅游",
"text": "到上海旅游应该如何计划"
})
print(res)

(4)Agent

from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
# 加载工具,这里加载的 serpapi 是网络搜索工具,llm-math 是数学计算工具
tools = load_tools(["serpapi", "llm-math"], llm=llm)
# 初始化链
agent = initialize_agent(tools,llm=llm, agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
# 运行
agent.run("上海未来一周的天气怎么样?")

(5)记忆组件

以上实现的聊天机器人已经可以运行了,但它是无状态的,在对话中无法跟踪与用户的交互信息,此时就需要 LangChain 提供的“记忆”组件了。

记忆组件具有两个基本操作:读取和写入。​​​​​​​

from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
# 创建内置的记忆组件
memory = ConversationBufferMemory(return_messages=True)
# 创建一个会话链
conversation = ConversationChain(memory=memory, prompt=chat_prompt, llm=llm)
# 运行
conversation.predict(input="你好,我是jack")

祝贺大家,到这里,你基本掌握了 LangChain 的重要概念以及基本的使用方法,同时也完成了第一个聊天机器人,一起动起手来吧!


 接下来,我也为读者朋友们准备了一份 “完整版” 大模型资源,里面包含了论文、书籍、面试题、项目源码和课程等。如果你想快速学会大模型,只需在GONGZHONGHAO【小灰熊大模型】后台对我发出接头暗号:【111】 ,我就会把完整资料包发送给你。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐