大模型开发框架之LangChain/LangGraph解析:从零开始构建AI应用
1. 引言:为什么需要LangChain/LangGraph?
想象一下,你有一台性能超强的智能机器人(大模型),但它只会说"你好"——因为你不知道如何教它完成复杂任务。这时候,LangChain和LangGraph就像给机器人装上了"大脑操作系统":LangChain帮你连接各种工具(比如计算器、数据库、搜索引擎),LangGraph则让机器人能像人一样一步步思考、记住中间结果,甚至和其他机器人协作。
今天,我们就用"说人话"的方式,带你玩转这两个AI开发神器!无论你是产品经理、运营还是刚入门的开发者,读完这篇文章,你都能明白如何用它们快速搭建实用的AI应用。
2. 核心概念快速入门
2.1 LangChain:AI应用的"万能连接器"
LangChain的核心思想很简单:把大模型和各种外部资源"粘"在一起,让它们协同工作。就像乐高积木,提供了标准化的接口,你可以轻松组合出不同的AI应用。
举个例子:你想做一个"股票分析助手",需要:
- 调用搜索引擎获取最新股票数据
- 用大模型分析数据
- 把结果存入Excel表格
- 生成自然语言报告
没有LangChain,你需要写大量代码来连接这些步骤;有了LangChain,只需几行代码就能搞定!
2.2 LangGraph:让AI像人一样"思考"的流程图引擎
如果说LangChain是"零件库",那LangGraph就是"流程图设计器"。它允许你定义:
- 步骤(节点):比如"获取数据"、“分析数据”、“生成报告”
- 流程(边):步骤之间的顺序和条件(比如"如果数据不足,返回重新获取")
- 记忆(状态):保存中间结果(比如分析过程中的临时结论)
最适合处理多步骤、需要决策、有状态的复杂任务,比如智能客服、自动化办公流程等。
2.3 关键术语通俗解释
| 术语 | 通俗解释 | 生活类比 |
|---|---|---|
| PromptTemplate | 预先定义的问题模板,只需填入变量 | 填空题试卷 |
| Chain | 多个操作步骤的串联 | 工厂流水线 |
| Agent | 能自主决策调用工具的智能体 | 会自己找工具的助理 |
| Memory | 保存对话历史的组件 | 聊天记录本 |
| Tool | 可调用的外部功能(如搜索、计算) | 瑞士军刀的不同工具 |
| Graph | 定义任务流程的有向图 | 流程图 |
| Node | 流程中的单个步骤 | 流程图中的方框 |
| State | 保存流程中所有数据的对象 | 工作备忘录 |
3. LangChain实战:30行代码构建智能工具
3.1 环境准备与安装
首先安装必要的库(确保你的Python环境已就绪):
# 安装LangChain核心库
pip install langchain
# 安装OpenAI模型支持(以OpenAI为例,也可替换为其他模型)
pip install openai
# 安装LangGraph(后续进阶部分使用)
pip install langgraph
3.2 基础组件上手
3.2.1 PromptTemplate:填空题模板
from langchain.prompts import PromptTemplate
# 定义一个旅游景点推荐模板
prompt = PromptTemplate(
input_variables=["destination", "interest"], # 需要填入的变量
template="我要去{destination}旅游,喜欢{interest},请推荐3个必去景点,每个景点配一句话理由。"
)
# 使用模板生成具体问题
question = prompt.format(destination="成都", interest="美食和历史")
print(question)
# 输出:我要去成都旅游,喜欢美食和历史,请推荐3个必去景点,每个景点配一句话理由。
3.2.2 Chain:任务流水线
最简单的LLMChain能把模板和大模型串起来:
from langchain.llms import OpenAI
from langchain.chains import LLMChain
# 初始化大模型(请替换为你的API密钥)
# 注意:实际使用时需要注册OpenAI账号并获取API密钥
llm = OpenAI(api_key="your_api_key_here")
# 创建Chain(模板+模型)
chain = LLMChain(llm=llm, prompt=prompt)
# 运行Chain
result = chain.run(destination="成都", interest="美食和历史")
print(result.strip())
预期输出:
1. 宽窄巷子:明清建筑风格的古街,汇集了成都特色小吃和手工艺品,能同时体验美食与历史文化。
2. 武侯祠:中国唯一的君臣合祀祠庙,纪念三国时期蜀汉丞相诸葛亮,感受三国文化的深厚底蕴。
3. 锦里古街:紧邻武侯祠的仿古商业街,晚上灯笼亮起时格外有情调,可品尝三大炮、糖油果子等传统美食。
图1:LLMChain工作流程图

3.2.3 Memory:对话记忆本
让AI记住之前的对话内容:
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
# 创建记忆组件(就像聊天记录本)
memory = ConversationBufferMemory()
# 创建带记忆的对话Chain
chatbot = ConversationChain(
llm=llm,
memory=memory,
verbose=True # 显示思考过程(调试用)
)
# 第一次对话
response1 = chatbot.run("你好,我叫小明,计划去成都旅游3天。")
print(f"AI: {response1}")
# 第二次对话(AI应该记得小明的名字和行程)
response2 = chatbot.run("我需要一份每天的行程安排,以美食为主。")
print(f"AI: {response2}")
图2:对话记忆工作时序图

3.2.4 Tools:连接外部世界的触手
LangChain支持调用各种工具,比如计算器、搜索引擎、数据库等。以SerpAPI(搜索引擎)为例:
from langchain.agents import initialize_agent, Tool
from langchain.agents import AgentType
from langchain.tools import SerpAPIWrapper
# 初始化搜索引擎工具(需要注册SerpAPI获取密钥)
search = SerpAPIWrapper(serpapi_api_key="your_serpapi_key_here")
# 定义工具列表
tools = [
Tool(
name="Search",
func=search.run,
description="当你需要获取实时信息(如天气、新闻、当前事件)时使用"
)
]
# 创建Agent(会自己决定是否使用工具)
agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True # 显示思考过程
)
# 提问需要实时信息的问题
result = agent.run("成都明天的天气如何?适合旅游吗?")
print(result)
Agent思考过程(verbose=True时显示):
I need to check the weather in Chengdu tomorrow.
Action: Search
Action Input: 成都明天天气
Observation: 成都明天晴,气温20-28℃,微风。
Thought: I now know the weather.
Final Answer: 成都明天晴,气温20-28℃,微风,非常适合旅游。建议携带防晒用品,穿舒适的鞋子。
3.3 实战案例:旅游攻略生成器
下面我们用SequentialChain串联多个步骤,自动生成完整的旅游攻略:
from langchain.chains import SequentialChain
# 步骤1:推荐景点
prompt_attractions = PromptTemplate(
input_variables=["destination", "days", "interest"],
template="用户计划去{destination}旅游{days}天,喜欢{interest}。请推荐5个必去景点,用逗号分隔。"
)
chain_attractions = LLMChain(
llm=llm,
prompt=prompt_attractions,
output_key="attractions" # 输出变量名,供下一个Chain使用
)
# 步骤2:生成行程
prompt_itinerary = PromptTemplate(
input_variables=["destination", "days", "attractions"],
template="为{destination}的{days}天行程设计详细计划,包含{attractions}等景点,每天推荐1家当地餐厅。"
)
chain_itinerary = LLMChain(
llm=llm,
prompt=prompt_itinerary,
output_key="itinerary" # 最终输出变量
)
# 串联两个Chain
overall_chain = SequentialChain(
chains=[chain_attractions, chain_itinerary],
input_variables=["destination", "days", "interest"],
output_variables=["itinerary"],
verbose=True
)
# 运行完整流程
result = overall_chain.run(
destination="成都",
days=3,
interest="美食和历史"
)
# 打印结果
print("===== 成都3天旅游攻略 =====")
print(result)
图3:旅游攻略生成流程图

关键点:SequentialChain适合"流水线"式的任务,前一个步骤的输出作为后一个步骤的输入,无需人工干预。
4. LangGraph进阶:构建多步骤智能工作流
4.1 为什么需要状态管理?
想象一个电商退货流程:
- 用户提交退货申请
- 系统查询订单状态(是否已发货)
- 如果已发货:生成退货标签
- 如果未发货:直接取消订单并退款
- 通知用户结果
这个流程有条件分支(已发货/未发货)和状态传递(订单信息),用普通Chain很难实现,而LangGraph擅长处理这类场景。
4.2 核心概念:图、节点、状态
- Graph:整个工作流的蓝图,定义了步骤和流向
- Node:流程中的单个任务(函数),如"查询订单"、“生成标签”
- Edge:节点之间的连接,表示流程走向
- State:保存整个流程中的数据(如订单号、状态、用户信息)
4.3 实战案例:电商退货处理助手
下面用LangGraph实现上述退货流程:
from langgraph.graph import StateGraph, END
from typing import TypedDict
# 1. 定义状态(流程中需要传递的数据)
class ReturnState(TypedDict):
order_id: str # 订单号
is_shipped: bool # 是否已发货(默认None,查询后填充)
return_label: str # 退货标签(生成后填充)
user_notification: str # 给用户的通知(最终结果)
# 2. 定义节点函数(每个步骤做什么)
def check_order(state: ReturnState) -> ReturnState:
"""查询订单状态(模拟)"""
print(f"查询订单 {state['order_id']} 状态...")
# 模拟查询结果:假设订单号为偶数的已发货,奇数的未发货
state["is_shipped"] = int(state["order_id"]) % 2 == 0
return state
def generate_return_label(state: ReturnState) -> ReturnState:
"""生成退货标签(模拟)"""
print("生成退货标签...")
state["return_label"] = f"RETURN-{state['order_id']}-{state['is_shipped']}"
state["user_notification"] = (
f"订单 {state['order_id']} 已发货,请使用退货标签 {state['return_label']} "
"寄回商品,退款将在收到退货后3个工作日内处理。"
)
return state
def cancel_order(state: ReturnState) -> ReturnState:
"""取消订单并退款(模拟)"""
print("取消订单并退款...")
state["user_notification"] = (
f"订单 {state['order_id']} 尚未发货,已为您取消订单并安排退款,"
"退款将在1-2个工作日内到账。"
)
return state
# 3. 定义条件分支(根据状态决定下一步)
def should_generate_label(state: ReturnState) -> str:
"""如果已发货,生成标签;否则取消订单"""
return "generate_label" if state["is_shipped"] else "cancel_order"
# 4. 构建图(定义流程)
workflow = StateGraph(ReturnState)
# 添加节点
workflow.add_node("check_order", check_order) # 查询订单节点
workflow.add_node("generate_label", generate_return_label) # 生成标签节点
workflow.add_node("cancel_order", cancel_order) # 取消订单节点
# 定义流程走向
workflow.set_entry_point("check_order") # 入口:先查询订单
workflow.add_conditional_edges(
"check_order", # 从查询订单节点出发
should_generate_label, # 根据条件函数决定走向
{
"generate_label": "generate_label", # 条件1:走向生成标签节点
"cancel_order": "cancel_order" # 条件2:走向取消订单节点
}
)
workflow.add_edge("generate_label", END) # 生成标签后结束
workflow.add_edge("cancel_order", END) # 取消订单后结束
# 5. 编译并运行
app = workflow.compile()
# 测试已发货订单(偶数ID)
print("===== 测试已发货订单 =====")
result = app.invoke({"order_id": "20231004"})
print(result["user_notification"])
# 测试未发货订单(奇数ID)
print("\n===== 测试未发货订单 =====")
result = app.invoke({"order_id": "20231005"})
print(result["user_notification"])
图4:退货处理工作流状态图

运行结果:
===== 测试已发货订单 =====
查询订单 20231004 状态...
生成退货标签...
订单 20231004 已发货,请使用退货标签 RETURN-20231004-True 寄回商品,退款将在收到退货后3个工作日内处理。
===== 测试未发货订单 =====
查询订单 20231005 状态...
取消订单并退款...
订单 20231005 尚未发货,已为您取消订单并安排退款,退款将在1-2个工作日内到账。
关键点:LangGraph通过StateGraph和条件分支,实现了复杂业务流程的自动化,且状态数据在整个流程中自动传递。
5. 综合对比与选型指南
| 特性 | LangChain | LangGraph |
|---|---|---|
| 核心定位 | 组件集成与工具调用 | 状态管理与流程控制 |
| 数据传递 | 简单链式传递(前→后) | 全局状态对象(所有节点可访问) |
| 流程控制 | 线性流程为主 | 支持条件分支、循环、并行 |
| 适用场景 | • 简单问答 • 单步骤工具调用 • 对话机器人 | • 多步骤工作流 • 复杂决策流程 • 多智能体协作 |
| 学习曲线 | 较低(基础功能) | 中等(需理解图论概念) |
| 典型案例 | • 客服问答机器人 • 文档摘要工具 • 实时信息查询 | • 自动化办公流程 • 多步骤数据分析 • 智能决策系统 |
选型建议:
- 如果你需要快速搭建简单的AI应用(如问答、摘要),用LangChain足够
- 如果你需要处理复杂流程(多步骤、条件判断、状态保存),用LangChain+LangGraph组合
6. 常见问题解答(FAQ)
Q1:LangChain只能用OpenAI的模型吗?
A:不是!LangChain支持几乎所有主流大模型,包括国内的百度文心一言、阿里通义千问、智谱AI等,只需更换对应的LLM类即可。
Q2:没有编程基础能学LangChain吗?
A:可以!LangChain的设计理念就是简化AI应用开发,基础功能只需掌握Python基础语法就能上手。推荐先从简单的Chain和PromptTemplate开始学。
Q3:LangGraph和普通的流程图工具(如BPMN)有什么区别?
A:最大区别是与AI深度集成。LangGraph的节点可以直接调用大模型和工具,状态数据可以被AI分析和决策,而普通流程图工具主要用于流程可视化,不具备执行能力。
Q4:如何部署用LangChain/LangGraph开发的应用?
A:可以部署为Web服务(用FastAPI/Flask)、桌面应用或云函数。LangChain提供了langserve工具,专门用于部署Chain和Graph为API服务。
Q5:学习资源推荐
- 官方文档:LangChain Docs、LangGraph Docs(最权威)
- 中文教程:LangChain中文网、B站"LangChain实战"系列视频
- 社区:LangChain Discord(英文)、知乎"LangChain"话题(中文)
总结
LangChain和LangGraph就像给大模型装上了"手脚"和"大脑":LangChain让AI能"做事"(调用工具、处理数据),LangGraph让AI能"思考"(规划步骤、记住状态)。无论你是想提升工作效率,还是开发创新AI产品,这两个工具都能帮你快速实现想法。
现在就动手试试吧!用LangChain/LangGraph开发你的第一个AI应用,体验大模型开发的乐趣~
更多推荐


所有评论(0)