LangChain:LLM 应用开发框架的行业标准
📖 简介
📝 详细介绍
LangChain:LLM 应用开发框架的行业标准
你写一个基于 GPT-4 的问答机器人,结果花了三天时间拼凑 Prompt 模板、处理 API 调用、管理上下文窗口、手动实现工具调用 — 然后发现下一个需求又要重写一半代码。LangChain 就是专门解决这个重复造轮子问题的抽象层。它把 LLM 应用开发拆解成 Prompts、Chains、Agents、Memory、RAG 等可复用模块,让你从底层胶水代码中解放出来。
GitHub 数据
| Stars | 主要语言 | 开源协议 | 最近更新 |
|---|---|---|---|
| 100k+ | Python | MIT | 2025-04-08 |
项目背景
LangChain 由 Harrison Chase 于 2022 年底创建,在 LLM 生态爆发前就已开始设计。当时主流做法是直接调用 OpenAI API,每次写死 Prompt 字符串、手动管理对话历史、用 if-else 判断是否调用工具。Chase 的目标是提供一个 “组合式” 框架,让开发者像搭积木一样连接模型、数据源和外部工具。2023 年成立 LangChain Inc. 后,生态迅速扩展到 JavaScript、Go 等语言,成为 LLM 应用事实上的参考实现。
核心功能解析
Prompt Templates — 告别字符串拼接
传统方式需要手动格式化模板:f"用户问: {user_input}
请用{language}回答"。LangChain 提供 PromptTemplate 对象,支持变量注入、output parser 和 few-shot 示例的结构化管理。
from langchain_core.prompts import PromptTemplate
template = "用户问: {question}
请用{language}回答"
prompt = PromptTemplate(input_variables=["question", "language"], template=template)
print(prompt.format(question="今天天气如何", language="中文"))
Chains — 多步流程编排
单一 LLM 调用解决不了复杂逻辑。LangChain 的 Chain 抽象允许将 多个 Prompt + LLM + 后处理 串联成管道。例如 LLMChain 是最简单的一对一组合;SequentialChain 将前一步输出作为后一步输入;RouterChain 根据输入自动选择分支。
from langchain.chains import LLMChain
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4", temperature=0)
chain = LLMChain(llm=llm, prompt=prompt)
result = chain.run(question="世界第一高楼", language="简体中文")
Agents — 让 LLM 自己决定下一步
当需要访问数据库、计算器、搜索引擎等外部工具时,Agent 模式让 LLM 自主决定调用哪个工具(ReAct 循环)。LangChain 内置了 Tool 抽象 和多种 Agent 类型(如 zero-shot-react-description、conversational-react-description)。
from langchain.agents import create_react_agent, AgentExecutor
from langchain_community.tools import WikipediaQueryRun
agent = create_react_agent(llm, tools=[wikipedia_tool], prompt=agent_prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
agent_executor.invoke({"input": "谁发现了青霉素?他的出生日期是哪天?"})
快速上手
# 安装
pip install langchain langchain-openai
# 基本使用(需要设置 OPENAI_API_KEY)
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage
llm = ChatOpenAI(model="gpt-4o-mini")
response = llm.invoke([HumanMessage(content="用一句话解释LangChain是什么")])
print(response.content)
技术亮点
LangChain 最值得关注的设计决策是 “管道 + 回调” 架构:
- 模块化管道:每个组件(Prompt、LLM、Memory、Output Parser)都实现
Runnable接口(Python 的__or__操作符重载),支持|运算符。比如prompt | llm | output_parser就是一条可执行的链。这种设计让组合变得极其自然,且每个环节都可以独立替换、测试。 - 回调系统(Callbacks):所有组件在执行前后都会触发事件。开发者可以挂载日志记录、性能追踪、流式输出(stream)甚至断点调试。这对于生产环境下的可观测性至关重要,也是 LangSmith 监控平台的基础。
- Memory 接口:抽象了对话历史管理,支持
ConversationBufferMemory(全量)、ConversationSummaryMemory(摘要)、VectorStoreRetrieverMemory(基于向量检索)。所有 Memory 都实现BaseMemory接口,可与 Chain 无缝集成。
一个容易被忽略的细节:LangChain 在 v0.3 以后全面转向 LangGraph 作为底层执行引擎,支持有环图、条件分支、持久化状态。如果你用过 v0.1 的 SequentialChain,现在推荐直接用 LangGraph 重写复杂流程。
同类对比
| 框架 | 定位 | 链支持 | 工具/Agent生态 | 学习曲线 | 适用场景 |
|---|---|---|---|---|---|
| LangChain | 通用LLM应用框架 | 强大(线性/图/条件) | 内置100+工具,社区丰富 | 中等(抽象层级多) | 复杂对话、RAG、Agent、多步工作流 |
| LlamaIndex | 数据检索增强(RAG) | 较弱(偏索引/查询) | 大量数据连接器 | 较低 | 文档问答、知识库搜索 |
| Semantic Kernel (微软) | .NET/企业集成 | 中等(基于插件) | Microsoft生态绑定 | 较高(需理解插件模式) | Azure/Office集成场景 |
| AutoGPT/AgentGPT | 自主Agent探索 | 简单(循环执行) | 有限,主要内部工具 | 低(但可控性差) | 原型验证、单步Agent |
总结
如果你正在构建一个需要长期维护、支持多模型切换、集成外部工具的 LLM 应用(无论是聊天机器人、RAG 系统还是自动化工作流),LangChain 是当前最成熟、社区最活跃的选择。它不是你最后一个框架,但很可能是你第一个认真考虑生产化的起点。一句话:用 LangChain 省掉 80% 的样板代码,把精力留给业务逻辑优化。
AI 项目推荐
智能体- 标签
- #LLM #RAG #Agent #框架
- 浏览
- 👁️ 7
- 发布日期
- 2026-07-26