纲要

  • LangChain 是什么
    • 定义与定位:大模型与AI应用的“粘合剂”
    • 核心设计理念:React(Reason + Action)
    • 发展历程与版本现状(v0.1 到 v0.3 的演变)
  • LangChain 能做什么
    • 统一的多模型调用接口
    • 提示词管理与优化
    • 链式调用(Chains)
    • 检索增强生成(RAG)
    • Agent 与工具调用
    • Memory 持久化状态
    • 评估与质量保障
  • 核心组件速览
    • 模型 I/O:Prompt、LLM、Output Parser
    • Chains:端到端流程封装
    • RAG 与外部知识库
    • Agent 智能体
  • 优劣势分析
    • 优势:多模型无缝切换、轻量级SDK、多模态与推理模型支持、生态丰富
    • 劣势:学习曲线陡峭、文档与版本变化问题
  • 开发环境搭建与第一个示例
    • 项目目录结构
    • 环境准备与依赖安装
    • 最小可运行链:翻译助手
  • 总结与展望

LangChain 是什么

想象一下,大型语言模型(LLM)像一个能力超群但缺乏手脚的大脑。你直接通过 Web 界面与它对话只能得到文本回复,想把它的能力整合进自动化流程、串联多个模型或工具就非常困难。LangChain 正是为了给这个“大脑”装上四肢与工具链而生的开源框架。

LangChain 的目标是简化使用大语言模型构建端到端应用程序的过程。它被定义为一款大模型与AI应用的粘合剂:将提示词、模型调用、结果解析、外部工具、知识库等组件像搭积木一样组合起来,从而构建出可复用、可维护的智能应用。

它的核心理念源自 React(Reason + Action) 范式。Reason 代表推理——让 AI 系统进行逻辑思考;Action 代表行动——基于推理结果执行具体操作(例如调用搜索引擎、查询数据库、运行代码)。这种“思考-行动-观察-再思考”的循环,模仿了人类解决问题的过程,是 LangChain 中 Agent 智能体工作的基础。

LangChain 于 2022 年 10 月开源,迅速获得大量开发者关注,目前 GitHub Star 数量增长极快,种子轮即获千万美元融资。项目主要维护两个语言版本:PythonTypeScript,社区也涌现出 Go、Java 等第三语言实现。当前最新大版本为 0.3,但注意整个框架尚未发布 1.0 稳定版,版本更迭非常活跃。

LangChain 能做什么

LangChain 提供了从底层模型调用到上层智能体应用的完整能力栈,主要包括以下几个方面:

1. 统一的模型调用

支持几乎所有主流大模型:OpenAI、DeepSeek、Claude、Gemini、通义千问等。无论底层模型 API 差异多大,开发者都使用同一套接口进行调用,模型切换只需修改一行代码。

2. 提示词工程

将提示词模板化、参数化,支持动态构造提示,并提供提示词版本管理与优化工具。你可以把提示词看作“操作说明书”,LangChain 让它可编程、可复用。

3. 链式调用(Chains)

将“提示词 → 模型 → 输出解析”封装为一个链(Chain),并允许多个链串联或并行,形成更复杂的处理流程。例如一个翻译链可以组合“文件读取链 → 批量翻译链 → 格式转换链”。

4. 检索增强生成(RAG)

大模型的预训练数据有截止日期,无法回答私域或实时信息。RAG 模式会先到外部知识源(向量数据库、文档库等)检索相关信息,再与用户问题一同喂给模型,从而大幅降低幻觉,获得最新、领域专属的答案。

5. Agent 智能体

Agent 是更高级的封装:它能够自动拆分任务、决定调用哪些工具、观察结果并调整行动,直至完成目标。LangChain 内置了标准 Agent 开发范式,也提供了与 LangGraph(图驱动工作流)的结合路径。

6. Memory 状态记忆

为对话添加持久化的上下文记忆,支持多种存储后端(内存、数据库),让智能应用具有“记住”多轮对话的能力。

7. 评估(Evaluation)

提供自动化评估工具,可以用一个模型测评另一个模型的输出质量、正确性,方便生产环境下的持续监测。

下面用一张流程图展示 LangChain 应用中一次典型的交互过程:

外部资源

RAG/工具调用

RAG/工具调用

用户输入

Prompt 模板组装

LLM 调用

Output Parser 解析

结构化结果

向量数据库 / 搜索引擎

自定义工具

核心组件速览

LangChain 的设计高度模块化,核心组件可以按不同层级理解:

组件 作用 示例
Prompt 定义与模型的交互方式、角色和指令 你是一个专业翻译,将以下中文翻译为英文:{text}
LLM / ChatModel 调用具体大模型 ChatOpenAI(model="gpt-4")ChatDeepSeek(model="deepseek-chat")
Output Parser 将模型原始输出解析为结构化数据 解析出 JSON、Python 对象、列表等
Chain 组合上述组件形成端到端流程 翻译链、问答链、多步推理链
Retriever 从外部知识源检索相关文档 向量数据库相似度搜索
Agent 动态决策,调用工具,循环执行 自主分析任务、决定用计算器还是搜索引擎
Memory 会话上下文持久化 对话历史存储

优劣势分析

LangChain 能力强大,但在实际生产中也要客观看待其优劣。

优势

  • 多模型无缝切换
    一套代码适应不同模型,甚至可以实现故障自动切换(例如 OpenAI 额度耗尽自动切到 DeepSeek)。
  • 轻量级 SDK
    Python 和 TypeScript 的原生集成,学习成本相对较低,前端后端开发者均可快速上手。
  • 多模态与推理模型支持
    文字、图像、音视频统一处理接口;新近的推理型模型(如 DeepSeek-R1、OpenAI o 系列)也能直接调用。
  • 活跃的社区与生态
    大量现成模板、工具集成和第三方应用,加速开发。

劣势

  • 学习曲线较陡
    涉及提示工程、链组合、记忆管理、Agent 决策等众多概念,新手容易迷失。
  • 文档不完善且变化快
    官方文档仍在快速迭代,v0.1 和 v0.3 的 API 存在较大断裂,老代码可能需要重构。
  • 架构演化剧烈
    从单一包 langchain 到拆分为多个子包(langchain-corelangchain-community 等),又新推出 langgraph,增加了选择困难。

简单应用(单链、多步提示)推荐直接使用 langchain 基础模块;复杂工作流或生产级 Agent 推荐探索 langgraph

开发环境搭建与第一个示例

下面我们基于 Python 搭建一个最小可运行的 LangChain 应用——自动翻译链。用户输入一段中文,链自动翻译为英文并返回。

项目结构

langchain-demo/
├── main.py
└── requirements.txt

环境准备

确保 Python 版本 >= 3.9,新建虚拟环境后安装依赖。

python -m venv venv
source venv/bin/activate    # Windows 使用 venv\Scripts\activate
pip install langchain langchain-openai python-dotenv

如果你打算使用 DeepSeek 模型,可额外安装 langchain-deepseek。为方便演示,这里采用 DeepSeek 的 deepseek-chat 模型(需注册并获取 API Key,有免费额度)。在项目根目录创建 .env 文件:

DEEPSEEK_API_KEY=你的API密钥

完整代码

新建 main.py,写入以下内容:

import os
from dotenv import load_dotenv
from langchain_core.prompts import ChatPromptTemplate
from langchain_deepseek import ChatDeepSeek
from langchain_core.output_parsers import StrOutputParser

# 加载环境变量
load_dotenv()
api_key = os.getenv("DEEPSEEK_API_KEY")
if not api_key:
    raise ValueError("请在 .env 文件中设置 DEEPSEEK_API_KEY")

# 初始化模型
llm = ChatDeepSeek(
    model="deepseek-chat",
    temperature=0.3,          # 控制生成随机性,越低越确定
    api_key=api_key
)

# 构造提示词模板:翻译任务
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个专业的翻译助手,请将用户输入的中文准确翻译为英文。"),
    ("human", "{text}")
])

# 输出解析器:直接取出字符串
output_parser = StrOutputParser()

# 构建链:prompt -> llm -> output_parser
chain = prompt | llm | output_parser

# 测试运行
if __name__ == "__main__":
    chinese_text = "人工智能正在改变我们的工作和生活方式。"
    print("原文:", chinese_text)
    result = chain.invoke({"text": chinese_text})
    print("翻译:", result)

运行

python main.py

预期输出类似:

原文: 人工智能正在改变我们的工作和生活方式。
翻译: Artificial intelligence is changing the way we work and live.

代码解析

  • ChatDeepSeek:封装了对 DeepSeek 聊天模型的调用,也可替换为 ChatOpenAI 等。
  • ChatPromptTemplate:通过 systemhuman 消息定义对话角色和占位符。
  • StrOutputParser:将模型的 AIMessage 对象直接转为字符串。
  • 链式操作符 |:LangChain 使用 LCEL(LangChain Expression Language)构建链,清晰表达数据流向。

这个例子虽简单,但完整展示了 LangChain 的基本骨架。你可以轻松扩展链,比如在翻译前先做语言检测,或翻译后调用 TTS 服务朗读结果。

总结

本文从 LangChain 的诞生背景、核心能力、组件构成到实际编码,完整梳理了一个 AI Agent 开发工程师需要掌握的基础知识。虽然 LangChain 的学习曲线和版本变化带来一定挑战,但其多模型统一调用、组件化设计、丰富的工具生态,仍然使其成为当前构建大模型应用的主流选择。

建议初学者从简单的链开始,逐步增加记忆、RAG、Agent 等高级功能,稳扎稳打地进入 AI 应用开发的世界。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐