一、LangChain 是什么?

1.1 核心概念

LangChain 是一款专为构建基于大语言模型(LLM)的应用程序而设计的开源框架。你可以把它理解为「大模型应用开发工具箱」—— 它把和大模型交互、处理数据、连接外部工具的各种能力封装成模块化组件,开发者无需从零写所有代码,借助 LangChain 就能快速搭建复杂的 AI 应用。

它提供了预构建的代理架构和模型集成,能无缝将 LLM 融入智能体或大模型应用中。借助 LangChain,你甚至可以用不到 10 行代码,就连接并使用 OpenAI、Anthropic、Google 等主流大语言模型。

1.2 核心价值:打破 LLM 的能力边界

原生大语言模型(LLM)只能完成简单的问答、生成任务,而 LangChain 通过模块化设计可组合性,让开发者轻松整合 LLM 与外部数据、工具、知识库,构建具备复杂逻辑、上下文感知、多步推理能力的 AI 应用,例如:

  • 智能客服、代码生成助手
  • 企业知识库问答系统
  • 自主智能体(AI Agent)

如果把 LLM 比作汽车的发动机,那么 LangChain 就是完整的汽车底盘 + 传动系统 + 控制系统 —— 它让 “发动机” 能适配不同的 “车身”(应用场景),实现更复杂的 “行驶功能”(业务逻辑)。

1.3 开发语言与应用场景

LangChain 支持 PythonJavaScript/TypeScript 双语言开发,生态丰富,兼容主流大语言模型(OpenAI、Anthropic、Google Gemini、开源的 Llama/GLM 等),是当前 LLM 应用开发的主流框架之一。

常见应用场景:

二、LangChain 核心组件全景解析

LangChain 框架的架构遵循 “模块化设计”,每个模块解决特定场景的问题,且模块间可灵活组合。其核心组件分为以下几类:

2.1 基础框架层:LangChain(核心内核)

作为智能体系统的 “操作系统内核”,LangChain 提供统一模型接口与模块化开发基础,包含以下关键能力:

  • 模型抽象:用统一接口连接 OpenAI、Anthropic 等 100 + 模型供应商,屏蔽底层差异。
  • 提示词工程:模板化管理与优化,提升输出质量。
  • 工具集成:支持 API、数据库、向量存储等数百种外部服务。
  • 记忆管理:提供多种记忆策略,解决 LLM 无状态性问题。

文档地址:https://docs.langchain.com/oss/python/langchain/overview

2.2 多智能体编排:LangGraph

LangGraph 是运行时编排引擎,用于实现复杂状态管理与任务流控制:

  • 图结构建模:用有向图表示智能体系统,支持条件分支、循环和状态持久化。
  • 多智能体协作:让多个 Agent 协同完成复杂任务(如 “研究→分析→报告” 流程)。
  • 可视化调试:直观呈现执行路径,便于问题定位。

文档地址:https://docs.langchain.com/oss/python/langgraph/overview

2.3 智能体外骨骼:Deep Agents

专注长周期复杂任务处理:

  • 任务规划:将长任务分解为子目标,制定执行策略。
  • 虚拟文件系统:高效管理大输出,减少 token 消耗。
  • 子智能体委托:动态创建子 Agent 处理专项任务,提升效率。

文档地址:https://docs.langchain.com/oss/python/deepagents/overview

2.4 部署服务:LangServe

将智能体转化为生产级 REST/gRPC API 的部署平台:

  • 支持流式输出、批处理和异步调用。
  • 兼容 FastAPI 生态,便于扩展。
  • 一键部署,自动生成 Swagger/OpenAPI 文档。

文档地址:https://github.com/langchain-ai/langserve

2.5 监控平台:LangSmith

统一的可观测性与质量评估中心:

  • 全链路追踪:可视化 LLM 调用、工具使用和状态变化。
  • 评估与测试:提供自动和人工评测机制。
  • 性能监控:分析响应时间、token 使用和错误率。

文档地址:https://docs.langchain.com/langsmith/home

三、LangChain 核心模块详解

3.1 模型输入 / 输出(Models)

Models 是 LangChain 的核心层,负责与各类 LLM / 嵌入模型(Embedding Model)交互,包含以下子模块:

3.1.1 LLMs 与 Chat Models
  • LLMs:对接大语言模型的基础接口,统一不同厂商的 API 调用方式。
  • Chat Models:针对对话式 LLM(如 GPT-3.5/4 Turbo、Claude Chat)的专用接口,支持结构化对话消息(用户消息、助手消息、系统消息)。
3.1.2 Embeddings

对接文本嵌入模型(如 OpenAI Embedding、BERT、智谱 AI 嵌入模型),将文本转换为向量表示,是知识库问答、文本检索的基础。

3.1.3 实战示例:对接阿里云百炼 API

下面是 LangChain 封装阿里云百炼大模型(qwen-plus)的完整代码示例:

from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage
import os
from dotenv import load_dotenv

# 加载环境变量(从 .env 文件读取 API Key)
load_dotenv()

# 1. 初始化对话模型(对接阿里云百炼)
chat_model = ChatOpenAI(
    model="qwen-plus",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    temperature=0.7  # 生成随机性(0-1之间,值越大越随机)
)

# 2. 构造对话消息并调用模型
messages = [
    SystemMessage(content="你是一个专业的Python编程助手,回答简洁易懂;"),
    HumanMessage(content="请解释什么是装饰器?")
]
response = chat_model.invoke(messages)
print("模型回复:", response.content)

# 3. 嵌入模型示例(需替换为百炼支持的嵌入模型)
# from langchain_openai import OpenAIEmbeddings
# embeddings = OpenAIEmbeddings(
#     api_key=os.getenv("DASHSCOPE_API_KEY"),
#     base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
# )
# text = "LangChain是LLM应用开发框架"
# vector = embeddings.embed_query(text)
# print(f"向量长度:{len(vector)}")

说明:

参考文档:https://docs.langchain.com/oss/python/langchain/models

3.2 提示词模板(Prompts)

提示词是 LLM 应用的核心,但手写提示词易出错、难复用。LangChain 的 Prompts 模块提供以下功能:

  • Prompt Templates:提示词模板,支持参数化填充(例如定义 “代码解释模板”,只需替换 “代码片段” 参数即可复用)。
  • Chat Prompt Templates:针对对话模型的提示词模板,适配多轮对话场景。
  • Output Parsers:将 LLM 的文本输出解析为结构化数据(如 JSON、字典、类对象),解决 “LLM 输出不可控” 的问题。

参考文档:

3.3 索引(Indexes)

当 LLM 需要处理外部文档(如 PDF、Word、知识库)时,Indexes 模块负责将文档转换为 “可检索” 的格式,核心流程是:

  1. 加载文档(Load):通过 DocumentLoaders 加载 PDF、TXT、网页、Excel 等格式文件。
  2. 分割文本(Split):将长文档分割为短文本块(避免超出 LLM 上下文窗口)。
  3. 嵌入文本(Embed):将文本块转换为向量。
  4. 存储向量(Store):将文本向量存入向量数据库(如 Chroma、Pinecone、Milvus)。
  5. 检索文本(Retrieve):根据用户问题检索相关文本块。

3.4 链(Chains)

Chains 是 LangChain 的 “灵魂”,它允许将多个组件(LLM、Prompt、检索器等)组合成一个可执行的流程,解决 “单步操作无法完成复杂任务” 的问题。常见的 Chain 类型:

  • LLMChain:最基础的链,将 Prompt Template + LLM 组合,实现 “输入参数→生成提示词→调用 LLM→输出结果”。
  • RetrievalQAChain:检索增强生成(RAG)的核心链,组合 “检索器 + LLM”,实现 “用户提问→检索相关文档→将文档和问题传入 LLM→生成基于文档的回答”。
  • SequentialChain:串行链,将多个 Chain 按顺序执行,前一个 Chain 的输出作为后一个的输入。

3.5 记忆(Memory)

原生 LLM 没有 “记忆”,无法记住多轮对话的上下文。Memory 模块解决这个问题,核心类型如下:

  • ConversationBufferMemory:简单缓存所有对话历史。
  • ConversationSummaryMemory:对对话历史进行总结,避免上下文过长。
  • ConversationTokenBufferMemory:按 Token 数限制缓存对话历史,适配 LLM 的上下文窗口。

参考文档:https://docs.langchain.com/oss/python/concepts/memory

3.6 代理(Agents)

Agents 是 LangChain 的高阶能力,让 LLM 能 “自主决策”—— 根据用户问题选择调用哪些工具(如计算器、搜索引擎、代码解释器),完成多步推理任务:

  • Agent:决策核心,负责判断 “该调用哪个工具”“是否需要继续调用工具”。
  • Tool:工具接口,LangChain 内置多种工具(Calculator、SerpAPI、PythonREPL 等),也支持自定义工具。
  • Executor:执行器,负责执行 Agent 的决策,调用工具并返回结果。

参考文档:https://docs.langchain.com/oss/python/langchain/agents

3.7 工具(Tools)

Tools 模块是 Agents 的基础,提供与外部系统交互的接口,LangChain 内置工具包括:

  • 计算类:CalculatorPythonREPL
  • 检索类:SerpAPI(谷歌搜索)、DuckDuckGoSearch
  • 文件类:FileBrowserCSVLoader
  • API 类:RequestsTool(调用 HTTP 接口)

开发者也可通过 @tool 装饰器快速自定义工具:

from langchain.tools import tool

@tool
def calculator(expression: str) -> str:
    """计算数学表达式,例如:"2 + 3 * 4" """
    try:
        return str(eval(expression))
    except Exception as e:
        return f"计算错误:{str(e)}"

3.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

3.9 评估(Evaluation)

LLM 应用的效果难以量化,Evaluation 模块提供评估工具,支持:

  • 手动评估:人工打分
  • 自动评估:用 LLM 自身评估回答质量
  • 基准测试:对比不同模型 / 链的效果

参考文档:https://docs.langchain.com/langsmith/evaluation-quickstart#evaluation-quickstart


四、LangChain 学习路径建议

4.1 入门阶段

先掌握 Models、Prompts、LLMChain 三个核心模块,实现简单的文本生成、问答功能。

4.2 进阶阶段

学习 Indexes、Memory、RetrievalQAChain,搭建基础的 RAG 知识库问答系统。

4.3 高阶阶段

学习 Agents、Tools,构建具备自主决策能力的 AI Agent。

4.4 工程化阶段

结合 LangSmith 调试、LangServe 部署,实现生产级应用。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐