一、LangChain 简介
1、LangChain 概念
LangChain 是一款专为构建基于大语言模型 (LLM) 的应用程序而设计的开源框架。
LangChain 可以理解为'大模型应用开发工具箱',把和大模型交互、处理数据、连接外部工具的各种能力封装成模块化的组件。大模型应用开发者不用从零开始写所有代码,借助 LangChain 开发框架就能快速搭建复杂的 AI 应用。
LangChain 提供了预构建的代理架构和模型集成,可以快速启动,并无缝地将 LLM 融入智能体或大模型应用程序。借助 LangChain 可以使用不到 10 行代码,就可以连接并使用 OpenAI、Anthropic、Google 等大语言模型。
每次提问,都要将历史对话数据 + 本地 RAG 知识库的数据输出到提示词模板中,然后再将拼接好的提示词输入到 LLM 大语言模型中,得到最终的结果。
LangChain 就是将上述内容封装起来,开发者只需要提前配置好大模型和 RAG 知识库,即可使用很少的代码,实现上述功能。
2、LangChain 定位
LangChain 框架的核心价值在于打破单个 LLM 的能力边界。原生 LLM(大语言模型)只能完成简单的问答、生成任务,而 LangChain 通过'模块化'和'可组合性',让开发者能够轻松整合 LLM 与外部数据、工具、知识库,构建出具备复杂逻辑、上下文感知、多步推理能力的 AI 应用,如:智能客服、代码生成助手、知识库问答系统、自主智能体等。
如果把大语言模型 (LLM, Large Language Model) 比作汽车的发动机,那么 LangChain 就是完整的汽车底盘 + 传动系统 + 控制系统。LangChain 让'发动机'能适配不同的'车身'(应用场景),实现更复杂的'行驶功能'(业务逻辑)。
3、LangChain 开发语言与应用场景
LangChain 支持 Python 和 JavaScript / TypeScript 双语言开发,生态丰富,兼容主流大语言模型 LLM(OpenAI、Anthropic、Google Gemini、开源的 Llama/GLM 等),是当前 LLM 应用开发的主流框架之一。
LangChain 有如下应用场景:
- **知识库问答 (RAG):**企业内部文档问答、产品手册问答、法律条文检索,核心是"Indexes + RetrievalQAChain";
- **智能对话机器人:**多轮上下文对话、个性化推荐,核心是"Memory + ConversationChain";
- **自主智能体 (AI Agent):**自动写代码、数据分析、科研辅助(如调用 PubMed API 检索论文 + 总结),核心是"Agents + Tools";
- **文本生成与摘要:**长文档总结、多文档对比总结、个性化文案生成,核心是"LLMChain + Prompt Templates";
- **代码辅助工具:**代码解释、bug 修复、自动化测试,核心是"Agents + PythonREPL Tool"。
4、LangChain 核心组件
**LangChain 核心组件:**LangChain 框架有五大核心组件分别是 LangChain(基础框架)、LangGraph(多智能体编排)、Deep Agents(智能体外骨骼)、LangSmith(监控平台)。
- **LangChain(基础框架):**智能体系统的'操作系统内核',提供统一模型接口与模块化开发基础。
- **LangGraph(多智能体编排):**运行时编排引擎,实现复杂状态管理与任务流控制。
- **Deep Agents(智能体外骨骼):**该组件专注长周期复杂任务处理。
- **LangServe(部署服务):**将智能体转化为生产级 REST/gRPC API 的部署平台,支持流式输出、批处理和异步调用,兼容 FastAPI 生态便于扩展,一键部署,自动生成文档(Swagger/OpenAPI)。
- **LangSmith(监控平台):**统一的可观测性与质量评估中心。
5、LangChain 学习路径
LangChain 学习路径:
- **入门阶段:**先掌握 Models、Prompts、LLMChain 三个核心模块,实现简单的文本生成、问答;
- **进阶阶段:**学习 Indexes、Memory、RetrievalQAChain,搭建基础的 RAG 知识库问答系统;
- **高阶阶段:**学习 Agents、Tools,构建具备自主决策能力的 AI Agent;
- **工程化阶段:**结合 LangSmith 调试、LangServe 部署,实现生产级应用。
二、LangChain 模块
LangChain 框架的架构遵循'模块化设计',每个模块解决特定场景的问题,且模块间可灵活组合。
LangChain 框架的核心价值是模块化组合"LLM 大语言模型与外部资源",解决原生 LLM 大语言模型'无记忆、无工具、无外部数据'的问题。
在下面介绍的核心模块中,Models 是基础,Chains 是核心组合方式,Agents 是高阶能力,Indexes 是 RAG 的关键。
1、模型输入 / 输出 (Models)
**模型输入 / 输出 (Models):**是 LangChain 的核心层,负责与各类 LLM / 嵌入模型 (Embedding Model) 交互,不包括如下子模块:
- **LLMs:**对接大语言模型的基础接口,统一不同厂商(OpenAI、Anthropic、百度文心等)的 API 调用方式。例如,用 ChatOpenAI 调用 GPT-4,用 ChatAnthropic 调用 Claude,开发者无需修改核心逻辑,只需要修改配置即可切换模型;
- **Chat Models:**针对对话式 LLM(如 GPT-3.5/4 Turbo、Claude Chat)的专用接口,支持结构化的对话消息(用户消息、助手消息、系统消息);
- **Embeddings:**对接文本嵌入模型(如 OpenAI Embedding、BERT、智谱 AI 嵌入模型),将文本转换为向量表示,是知识库问答、文本检索的基础;
- 参考文档:https://docs.langchain.com/oss/python/langchain/models
下面是 LangChain 最基本的封装 OpenAI 大模型的代码示例:
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_core.messages import HumanMessage, SystemMessage
chat_model = ChatOpenAI(
model="gpt-3.5-turbo",
api_key="你的 OpenAI API 密钥",
temperature=0.7
)
messages = [
SystemMessage(content="你是一个专业的 Python 编程助手,回答简洁易懂;"),
HumanMessage(content="请解释什么是装饰器?")
]
response = chat_model.invoke(messages)
print(response.content)
embeddings = OpenAIEmbeddings(api_key="你的 OpenAI API 密钥")
text = "LangChain 是 LLM 应用开发框架"
vector = embeddings.embed_query(text)
print(f"向量长度:{len(vector)}")
2、提示词模板 (Prompts)
**提示词模板 (Prompts):**提示词是 LLM 应用的核心,但手写提示词易出错、难复用。LangChain 的 Prompts 模块提供如下功能:
- **Prompt Templates:**提示词模板,支持参数化填充。例如,定义一个'代码解释模板',只需替换'代码片段'参数即可复用;
- **Chat Prompt Templates:**针对对话模型的提示词模板,适配多轮对话场景;
- **Output Parsers:**将 LLM 的文本输出解析为结构化数据(如 JSON、字典、类对象),解决"LLM 输出不可控'的问题;
提示工程 Prompt engineering 参考文档:https://docs.langchain.com/langsmith/prompt-engineering
3、索引 (Indexes)
**索引 (Indexes):**当 LLM 需要处理外部文档(如 PDF、Word、知识库)时,Indexes 模块负责将文档转换为'可检索'的格式,核心流程是:
- **加载文档 (Load):**通过 DocumentLoaders 加载 PDF、TXT、网页、Excel 等格式的文件;
- **分割文本 (Split):**将长文档分割为短文本块(避免超出 LLM 上下文窗口);
- **嵌入文本 (Embed):**将文本块转换为向量;
- **存储向量 (Store):**将文本向量存入向量数据库(如 Chroma、Pinecone、Milvus);
- **检索文本 (Retrieve):**根据用户问题检索相关文本块。
4、链 (Chains)
Chains 是 LangChain 的'灵魂',该模块允许将多个组件(LLM、Prompt、检索器等)组合成一个可执行的流程,解决'单步操作无法完成复杂任务'的问题。
常见的 Chain 类型:
- **LLMChain:**最基础的链,将 Prompt Template + LLM 组合,实现'输入参数 -> 生成提示词 -> 调用 LLM -> 输出结果';
- **RetrievalQAChain:**检索增强生成 (RAG) 的核心链,组合'检索器 + LLM',实现'用户提问 -> 检索相关文档 -> 将文档和问题传入 LLM -> 生成基于文档的回答';
- **SequentialChain:**串行链,将多个 Chain 按顺序执行,前一个 Chain 的输出作为后一个的输入。
5、记忆 (Memory)
**记忆 (Memory):**原生 LLM 没有'记忆',无法记住多轮对话的上下文。Memory 模块解决这个问题,核心模块类型如下:
- **ConversationBufferMemory:**简单缓存所有对话历史;
- **ConversationSummaryMemory:**对对话历史进行总结,避免上下文过长;
- **ConversationTokenBufferMemory:**按 Token 数限制缓存对话历史,适配 LLM 的上下文窗口。
参考文档:https://docs.langchain.com/oss/python/concepts/memory
6、代理 (Agents)
**代理 (Agents):**Agents 是 LangChain 的高阶能力,让 LLM 大语言模型能'自主决策',根据用户问题,选择调用哪些工具(如:计算器、搜索引擎、代码解释器),完成多步推理任务。
- **Agent:**决策核心,负责判断'该调用哪个工具'、'是否需要继续调用工具';
- **Tool:**工具接口,LangChain 内置多种工具(Calculator、SerpAPI(搜索引擎)、PythonREPL(代码执行)),也支持自定义工具;
- **Executor:**执行器,负责执行 Agent 的决策,调用工具并返回结果。
参考文档:https://docs.langchain.com/oss/python/langchain/agents
7、工具 (Tools)
**工具 (Tools):**该模块是 Agents 的基础,提供与外部系统交互的接口。LangChain 内置工具包括:
- **计算类:**Calculator、PythonREPL;
- **检索类:**SerpAPI(谷歌搜索)、DuckDuckGoSearch;
- **文件类:**FileBrowser、CSVLoader;
- **API 类:**RequestsTool(调用 HTTP 接口)。
开发者也可通过 Tool 类自定义工具,只需实现 func(工具逻辑)和 description(工具描述,供 Agent 判断是否调用)。
参考文档:https://docs.langchain.com/oss/python/langchain/agents
8、文档加载器 (Document Loaders)
负责加载外部文档,支持几乎所有主流格式:
- **文本类:**TXT、Markdown、JSON;
- **办公类:**PDF、Word、Excel、PPT;
- **网页类:**URL、HTML、Sitemap;
- **数据库类:**MySQL、PostgreSQL、MongoDB;
- **其他:**Notion、Confluence、GitHub。
文档加载参考文档:https://docs.langchain.com/oss/python/langchain/knowledge-base#1-documents-and-document-loaders
适配第三方文档加载模型集成包参考文档:https://docs.langchain.com/oss/javascript/integrations/providers/all_providers#file-loaders
9、评估 (Evaluation)
LLM 应用的效果难以量化,Evaluation 模块提供评估工具,支持:
- **手动评估:**人工打分;
- **自动评估:**用 LLM 自身评估回答质量;
- **基准测试:**对比不同模型 / 链的效果。
LangSmith 评估参考文档:https://docs.langchain.com/langsmith/evaluation-quickstart#evaluation-quickstart
LangSmith 部署参考文档:https://docs.langchain.com/langsmith/deployments
三、LangChain 文档
1、LangChain 功能模块文档
LangChain 功能模块文档:https://docs.langchain.com/oss/python/langchain/overview,该文档是 LangChain 框架 Python 语言的总览文档,左侧章节标题可以跳转到:
等文档。
2、LangChain API 参考文档
**LangChain API 参考文档:**这是 LangChain 开发具体对应的 Python / JavaScript / TypeScript 语言对应的 API 文档,主要介绍 LangChain 和 LangGraph 构建大模型应用程序用到的核心接口,每个部分涵盖 LangChain 生态系统中的不同方面,使用顶部或左侧的导航栏查看 LangChain 特定模块的文档。
JavaScript / TypeScript 语言 API 文档:https://reference.langchain.com/javascript/index.html
下面是 LangChain 框架的 Agents 开发文档:https://reference.langchain.com/python/langchain/agents/
3、LangChain 适配第三方模型集成包
LangChain 框架提供了丰富的适配第三方模型的集成包,涉及到大语言模型 (LLMs)、聊天模型、检索器、向量数据库、文档加载器等多个类型的 AI 模型。
集成包指的是 LangChain Python 生态中专门对接不同 AI 模型服务商的程序模块,其核心作用是让开发者不用自己写复杂的 API 调用、参数适配代码,只需几行简单代码就能在 LangChain 框架中调用对应服务商的大语言模型 (LLMs)、聊天模型 (Chat Models) 等能力。
LangChain 框架集成包文档:https://docs.langchain.com/oss/python/integrations/providers/overview
下面给出一个集成包示例,langchain-openai 集成包是 LangChain 官方提供的、专门对接适配 OpenAI 生态(包括 OpenAI 官方、Azure OpenAI)的集成包:
- 快速调用 OpenAI 的 GPT-3.5/4/4o 等聊天模型、Embedding 嵌入模型;
- 封装了 OpenAI API 的参数(如温度、最大令牌数、上下文窗口),适配 LangChain 的统一接口;
- 支持流式输出、函数调用 (Function Calling) 等 OpenAI 核心特性,无需手动处理 API 交互细节。
langchain-openai 集成包文档地址:https://reference.langchain.com/python/integrations/langchain_openai/
langchain-google-vertexai 集成包是 LangChain 官方适配对接 Google Cloud Vertex AI 平台的集成包(Vertex AI 是 Google 云的一站式 AI 开发平台)。文档地址:https://reference.langchain.com/python/integrations/langchain_google_vertexai/
langchain-ollama 集成包是 LangChain 官方适配对接 Ollama 工具的集成包(Ollama 是一款轻量级本地大模型运行工具,可一键部署 Llama 3、Phi 3、Mistral 等开源模型)。文档地址:https://reference.langchain.com/python/integrations/langchain_ollama/
4、LangChain 教程指南
LangChain 教程指南文档:https://docs.langchain.com/oss/python/learn,在该文档中提供了一系列教程、概念概述及补充资源,借助 LangChain 和 LangGraph 构建功能强大的大模型应用程序。