总结一下LangChain+LangGraph这套体系
由于没过完整个课程
总结一下总结一下LangChain+LangGraph这套体系
但是其实已经有一些概念了
之前一直误导了一些概念
1.gpt是什么,
2.chatgpt是什么
3.agent是什么
4.传统工程化编程与agent各自的优缺点
5.搭建一个demo来使用LangChain+LangGraph这个技术栈
6.LangChain+LangGraph这个技术栈提供了什么机制
💡 先厘清几个基础概念
在深入技术栈之前,我们先得把几个基础但容易混淆的概念搞清楚。
-
GPT是什么?
GPT (Generative Pre-trained Transformer) 是一个具体的、由OpenAI开发的大语言模型(LLM)。可以把它理解为一个能力强大的“超级大脑”,它的核心能力是理解和生成人类语言。市面上还有Google的Gemini、Anthropic的Claude等,它们都是不同厂商的“大脑”。 -
ChatGPT是什么?
ChatGPT 是OpenAI公司基于GPT模型构建的一个具体的产品(应用)。它是一个聊天界面,背后由GPT这个“大脑”驱动。 -
Agent(智能体)是什么?
如果说GPT是“大脑”,ChatGPT是“会说话的脑子”,那么Agent就是一个“会行动、会协作、会学习的数字员工”。它不只是被动地回答问题,而是被赋予一个目标后,能自主地进行任务拆解、规划、调用工具(如搜索、查天气)和反思。其核心机制是一个 “思考-行动-观察” 的循环,它能根据环境反馈不断调整策略,直到达成目标。
⚖️ 传统工程化编程 vs. Agent:优缺点对比
理解了Agent是什么,它与我们熟悉的传统编程有何不同?简单来说,这是一个从**“确定性执行”到“自主性决策”**的转变。
| 维度 | 传统工程化编程 | Agent (智能体) |
|---|---|---|
| 决策者 | 人(开发者) | AI(模型本身) |
| 核心逻辑 | 预先定义:所有规则、流程和异常处理都需提前写好。 | 动态规划:根据目标自主拆解任务,决定调用什么工具、按什么顺序执行。 |
| 流程控制 | 确定性:代码按预定的A→B→C路径执行,结果可预测。 | 不确定性:执行路径取决于模型每一步的“思考”和外部环境的反馈。 |
| 适用场景 | 业务逻辑明确、稳定、对准确性和可控性要求极高的场景(如金融交易、底层基础设施)。 | 任务复杂、开放、需要处理非结构化信息并自主决策的场景(如智能客服、个人助理)。 |
| 优点 | 精确可控、稳定可靠、易于调试。每一行代码的逻辑都是确定的。 | 灵活智能、能处理复杂任务。可以解决传统编程难以定义规则的问题。 |
| 缺点 | 缺乏灵活性。遇到未预定义的情况就会失败,维护成本随规则复杂度上升。 | 不可预测、调试困难、成本较高。可能产生“幻觉”或做出错误决策。 |
🏗️ LangChain + LangGraph 技术栈剖析
现在,我们把目光投向这个技术栈本身。
1. 如何搭建与配置?它的“栖息地”在哪里?
- LangChain:它主要是一个Python和JavaScript的代码库(Library)。你的“栖息地”就是你的代码工程。你需要通过包管理器(如
pip install langchain)将它安装到你的项目中,然后在代码里通过import来使用它。 - LangGraph:它同样是一个代码库(
pip install -U langgraph),可以独立使用,但更常见的是与LangChain结合。它的“栖息地”同样在你的代码工程中。
2. 它解决什么领域的问题?
- LangChain:解决的是如何“用积木搭建房子”的问题。它提供了大量标准化的“积木”(Components),比如和各种大模型、外部数据、工具交互的模板,让开发者能高效、灵活地组装出各种LLM应用。
- LangGraph:解决的是如何“为复杂的智能体项目绘制精确的施工流程图”的问题。它专注于构建有状态的、多步骤的、需要复杂决策的AI智能体(Agent)。
3. 完整的业务链路是什么?
- 输入方(生产者):通常是最终用户或上游系统,它们提出一个复杂的目标或问题。
- 处理过程(黑盒):
- LangChain 负责**“组织”:它将用户的请求、外部数据、工具调用等编排成一个线性的步骤序列**,一步步地喂给大模型处理。
- LangGraph 负责**“调度”:它把整个处理过程建模成一个图(Graph)**。
状态(State)在节点(Node)(代表一个处理步骤,如“调用模型”、“执行工具”)之间流动,流程可以根据条件在节点间跳转(Edge)、循环甚至暂停。
- 输出方(消费者):处理完成后,结果返回给用户或下游系统。
4. 它提供了什么核心机制供我使用?(API与抽象)
- LangChain:核心是**“组件化”与“线性编排”**。
- 组件(Components):提供各种标准化零件,如
PromptTemplate(提示词模板)、DocumentLoader(文档加载器)、OutputParser(输出解析器)等。 - LCEL (LangChain Expression Language):一种声明式语法,能用简洁的
|管道符将组件串联成链。
- 组件(Components):提供各种标准化零件,如
- LangGraph:核心是**“图状态机(Graph-based State Machine)”**。
State(状态):一个在整个工作流中传递和共享的全局对象。Node(节点):工作流中的一个步骤,通常是一个函数,接收State并返回更新后的State。Edge(边):连接节点,定义了执行的流向,可以是确定性的,也可以是带条件的(Conditional Edge),根据State的值决定下一步走向哪个节点。
5. 如何在代码中“激活”它?(落地配置)
我们来看一个极简的“Hello World”级别的例子:
LangChain 示例 (使用 LCEL):
# 1. 安装: pip install langchain langchain-openai
# 2. 配置: 设置环境变量 OPENAI_API_KEY
from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
# 3. 初始化模型和提示词模板 (使用组件)
model = ChatOpenAI(model="gpt-3.5-turbo")
prompt = ChatPromptTemplate.from_template("讲一个关于 {topic} 的笑话")
# 4. 用 LCEL 的 | 管道符将它们串联成“链” (线性编排)
chain = prompt | model
# 5. 调用链,传入输入
response = chain.invoke({"topic": "程序员"})
print(response.content)
这个例子展示了LangChain如何用组件和LCEL快速构建一个线性流程。
LangGraph 示例 (使用 StateGraph):
# 1. 安装: pip install langgraph
# 2. 配置: 无需额外配置
from typing import TypedDict
from langgraph.graph import StateGraph, END
# 3. 定义状态(State)
class MyState(TypedDict):
topic: str
joke: str
# 4. 定义节点(Node)函数
def generate_joke(state: MyState):
# 这里通常会调用LLM,为简化,直接返回
return {"joke": f"这是一个关于 {state['topic']} 的笑话"}
# 5. 构建图 (Graph-based State Machine)
graph = StateGraph(MyState)
graph.add_node("generate", generate_joke) # 添加节点
graph.set_entry_point("generate") # 设置入口
graph.add_edge("generate", END) # 添加边,指向结束
# 6. 编译并运行
app = graph.compile()
result = app.invoke({"topic": "人工智能"})
print(result["joke"])
这个例子展示了LangGraph如何通过定义State、Node和Edge来构建一个可执行的工作流。
💎 总结:一张图看懂两者的关系
- GPT/LLM:是“大脑”,负责思考和生成。
- ChatGPT:是“产品”,一个具体的聊天应用。
- Agent:是“数字员工”,能自主使用工具达成目标。
- 传统编程 vs. Agent:是“精确执行指令”与“自主决策达成目标”的区别。
- LangChain:是“工具包和积木”,提供各种零件和简单的线性组装方式(A→B→C)。
- LangGraph:是“智能流程图绘制与执行引擎”,用于构建能循环、分支、决策的复杂状态机。
它们并非竞争关系,而是互补的。LangChain提供了丰富的“积木”(工具和组件),而LangGraph则提供了一种更强大的“搭建方式”(图状态机编排)。在实际开发中,你完全可以在LangGraph的图节点内部,使用LangChain的组件来完成任务。
更多推荐




所有评论(0)