本文较长,建议点赞收藏,以免遗失。更多AI大模型开发 学习视频/籽料/面试题 都在这>>Github<<
一、为什么要了解LangChain?
近两年来,大语言模型(如ChatGPT、DeepSeek、Claude)持续火爆,从写文案、AI绘图,到写代码、AI智能客服,几乎"无所不能"。并且大语言模型的调用成本越来越低,作为程序员的你可能已经开始尝试用OpenAI、DeepSeek的API做些小应用,但是很快可能就会遇到一些问题:
- 提示词(Prompt)无法复用,而且内容过长不易管理。
- 每个大模型都有自己的API,想用多个模型切换很困难,代码耦合很严重。
- 想自己实现复杂功能,比如多轮对话、工具调用、知识库等功能,导致逻辑混乱。
- 不同的Prompt、大模型、工具的使用没有统一规范。
因此,LangChain 就出现了,它可以帮助开发者把模型调用、提示词管理、记忆模块、外部工具调用等等模块标准化,不同的模块可自由组合。
二、LangChain是什么?
LangChain 是一个基于Python语言的大语言模型应用开源框架,LangChain可以帮你快速搭好项目架构,下图为LangChain技术体系的示意图。

LangChain技术体系主要包括以下模块:
langchain-core
: 封装好的基础聊天模型和其他组件。
integrations
:LangChain集成包,目前LangChain会将一些重要的集成包单独拆分出来(例如 langchain-openai
, langchain-anthropic
等),让集成包更轻量级,这些包将会由LangChain团队和集成包的开发者共同维护。
langchain
: 构成AI应用的链、AI agent和检索器。
langchain-community
: 社区维护的第三方集成包。
langgraph
: LangGraph 专门用于构建能处理 复杂任务流程的 AI 应用 。它的核心思想是用 "图"(Graph) 来管理任务流程,就像画一张路线图,让 AI 知道何时该执行什么操作、何时需要循环或分支判断,还能自动记住执行到哪一步了。
langsmith
:LangSmith 是 LLM 应用的全生命周期管理平台,覆盖开发→测试→部署→监控全流程,可以观察到AI应用运行的每一个步骤,它与 LangChain深度集成,但它不仅适用于 LangChain,也可以用于监控任何使用 LLM 的应用。
LangChain 目前支持两个主要版本:
- Python 版(最成熟,社区最大)
- JavaScript/TypeScript 版(适合前端和Node.js应用)
三、LangChain核心模块简介
在学习LangChain,先了解一些在LangChain框架中,甚至AI应用开发中一些核心的概念和模块,一定要首先清楚地知道是什么,之后再研究怎么做,下图展示了一个LangChain框架开发的应用的核心运行流程。

3.1 LLM接口
LangChain 封装了不同模型的调用方式,它统一了各种模型的接口,切换变得轻松。如下示例,创建了一个gpt-3.5-turbo的LLM模型。
ini
from langchain_community.chat_models import ChatOpenAI
# 创建大语言模型
llm = ChatOpenAI(model="gpt-3.5-turbo")
3.2 PromptTemplate提示词模板
大模型的输出质量在很大程度上取决于提示词(Prompt) 的设计,在LangChain 把提示词封装成模板,支持变量动态替换,管理起来更清晰,能灵活控制 Prompt 内容,避免硬编码。
如下示例,一个模板中包含了两条消息,分别是人类消息和系统消息,并且设置了name和question两个动态变量,使用invoke方法进行动态替换,这里invoke之后返回的是渲染后Prompt的内容。
css
from langchain_core.prompts import ChatPromptTemplate
system_chat_prompt = ChatPromptTemplate.from_messages([ ("system", "你是一个AI大模型,我是{name}"),])
human_chat_prompt = ChatPromptTemplate.from_messages([ ("human", "{question}")])
chat_prompt = system_chat_prompt + human_chat_prompt
print(chat_prompt.invoke({"name": "alice",
"question": "你好,请问你是?"}))
3.3 Chain链
Chain链是 LangChain 的核心思想之一,一个 Chain 就是将多个模块串起来完成一系列操作,Chain链可以将上一步操作的结果交给下一步进行执行,比如用提示词模板生成 Prompt,将渲染后的提示词交给大模型生成回答,再将大模型的回答将结果输出到控制台,Chain和Linux中的管道符十分类似,每一步的输出自动作为下一步输入,实现模块串联。
如下是Chain链的基本实例,它将提示词模板、LLM、输出解析器连接在一起。
ini
prompt = ChatPromptTemplate.from_template("{question}")
llm = ChatOpenAI(model="gpt-3.5-turbo")
parser = StrOutputParser()
chain = prompt | llm | parser
print(chain.invoke({"question": "要把大象装冰箱总共分几步"}))
3.4 RAG检索
在一些LLM的使用场景,需要使用一些特定的文档让LLM根据这些文档的内容进行回复,而这些特定的文档通常不在LLM的训练数据中,此时RAG检索就有用武之地。
在LangChain中,可以读取文档使用知识库,来进行大模型的增强搜索,LangChain封装各种类型的文档读取器,可以将读取文档得到的数据,通过LangChain文档分割器对文档进行分割,通过文本嵌入模型对文本进行向量化,将文本的向量信息保存到向量数据库。
当用户向AI发起提问时,在向量数据库中检索出与提问相关的文档,然后与用户问题一起发送给大模型,这个过程就叫做RAG(检索增强生成,Retrieval-Augmented Generation) ,RAG 能让大模型回答特定领域的问答变得更加精准、实时,避免出现幻觉。
下面代码示例,展示了LangChain中提供了文档读取相关加载类,对知识库中的文档进行读取。
ini
from langchain_community.document_loaders import TextLoader
textLoader = TextLoader("./项目API文档.txt", encoding="utf-8")
# 加载文档
documents = textLoader.load()
3.5. Memory记忆
在和大模型对话时,大模型本身并不具备有记忆历史对话的功能,但是在ChatGPT、DeepSeek等大模型时,发现它们在同一个会话内有"上下文记忆"的能力,这样能使对话更加连贯。
LangChain 也提供了类似的记忆功能。通过 memory,可以把用户的历史对话保存下来,使大模型拥有历史记忆的能力,如下示例,每一轮对话会从ConversationSummaryBufferMemory中读取历史对话,渲染到Prompt供大模型使用。
对话结束之后,会将对话内容保存到ConversationSummaryBufferMemory,如果历史记忆超过一定大小,为了节省和大模型之间调用的token消耗,会对历史记忆进行摘要提取、压缩之后再保存,这样大模型拥有了记忆功能。
ini
prompt = ChatPromptTemplate.from_messages([
('system', "你是OpenAI开发的AI机器人"),
MessagesPlaceholder("history_chat"),
("human", "{question}")
])
memory = ConversationSummaryBufferMemory(max_token_limit=400,return_messages=True,
input_key="question",llm=ChatOpenAI())
llm = ChatOpenAI()
chain = RunnablePassthrough.assign(
history_chat=RunnableLambda(memory.load_memory_variables) | itemgetter("history_chat")
) | prompt | llm | StrOutputParser()
# 循环进行对话
while True:
...
3.6 Tool工具调用
大语言模型本身是一种基于大量数据训练而成的人工智能,它本身是基于大量的数据为基础对结果进行预测,因此,大模型可能会出现给出1+1=3这种情况,大模型本身是不会"上网", 也不会算数的,因此可以给大模型接入各种各样的工具如Google搜索、高德地图定位信息查询、图像生成等等。
那么大模型是怎么使用工具的呢?在现如今,很多的大模型都支持了工具调用,也就是将可用的工具信息列表在调用大模型时传递过去,这些信息包括工具的用途、参数说明等等,大模型会根据这些工具的作用确定调用哪些工具,并且根据参数的描述,来返回调用工具的参数。
最终将工具调用结果返回给大模型,完成用户交给的任务,整个过程中,大模型会根据任务判断是否调用工具,并组织执行,这个自动决策执行的过程,就是由 agent 完成的。
agent 会自己思考、分步骤执行,非常适合复杂任务处理,后续我们也会深入介绍如何通过 LangChain 创建一个完整的 agent,自动协调多个工具完成复杂任务。
对于那些不支持工具调用的大模型,也可以根据提示词将可选的工具和调用方法传递给大模型,但是大模型的预测有很强的不确定性,返回结果的准确率会显著下降。
四、总结
LangChain 是一个强大又灵活的大模型开发框架,它将 LLM 的调用和创建、提示词管理、记忆、知识库、RAG检索、工具调用等模块化,通过LangChain快速构建 AI 应用。
如果你被各种不同厂商的LLM提供的API写出很多不好维护的代码,那么LangChain就是你最好的选择,本文主要介绍了LangChain框架是什么以及它的核心模块,接下来我们将深入介绍 LangChain 中的每个模块,逐步构建你自己的智能应用,敬请期待下一篇《LangChain框架入门 02:PromptTemplate 提示词模板用法》。
原文地址:https://www.cnblogs.com/fengyun2019/p/19014296