从“乐高积木”到“建筑设计图”:LangChain与LangGraph框架初探

从"乐高积木"到"建筑设计图":LangChain与LangGraph框架初探

笔记基于easy-langent/DataWhale进行总结,详细部分可以进入阅读学习,当前笔记是针对大模型应用

欢迎给我的Agent学习仓库提出修改建议:AI-Agent-learning

整体学习路径
2026-04-14 2026-04-14 2026-04-15 2026-04-15 2026-04-16 2026-04-16 2026-04-17 2026-04-17 2026-04-18 2026-04-18 2026-04-19 理解概念 搭建环境 跑通案例 Agent 设计 第一章 后续章节 Easy-Langent 学习路径

前言

当前时代在AI-Agent的开发浪潮中。学习Agent显得格外重要。

WHY

在构建属于自己的"只能论文助手"时,我们需要处理大模型API调用,管理对话历史、集成外部工具,甚至要设计复杂的多步骤任务流程。

这样繁琐且很容易报错

而LangChain和LangGraph就是为了解决:

  1. 重复造轮子
  2. 流程管控复杂
  3. 状态维护困难

而产生

何为LangChain

我会说:虚拟的"乐高积木"

它提供了各种现成的组件(模型接口、记忆模块、工具集成),能够快速拼装出一个功能完整的应用

核心定位

  • 使用场景:文本生成、基础RAG问答、单步工具调用这些简单到中等复杂的应用
  • 降低入门门槛,提高效率

架构解析

LangChain 生态
提供接口
依赖并扩展
langchain-core

(核心抽象:Runnable, BaseTool...)
langchain

(高级组件:Chains, Memory, Agents)
langchain-openai

langchain-anthropic

langchain-community

(第三方集成)

它采用了清晰的三层架构:

  • langchain-core :地基,定义了所有组件必须遵循的核心抽象(如Runnable)。
  • langchain:标准构件,提供了高级工程组件(如Chains, Parsers, Memory)。
  • langchain-openai:门窗管线,负责与具体的第三方服务(如OpenAI, Qwen)对接。

何为LangGraph

我觉得是:"复杂应用架构师"

应用变得复杂,需要多步骤协同、多智能体交互或人机协同流程时,就需要明确的"设计图"

核心定位

  • 使用场景:多步骤工作流、需要状态管理的任务、多智能体写作
  • 提供强大的状态管理和复杂流程控制能力

核心概念

invoke(user_role)
original_advice set
simplified_advice set
Idle
Generating
Simplifying

通过以下3个核心概念构建工作流:

  • State (状态):一个共享的数据容器,用于在整个流程中传递和存储信息。
  • Node (节点):执行具体任务的函数,接收状态作为输入,并返回更新后的状态。
  • Edge (边):定义节点之间的执行顺序,构成完整的流程图。

"State 是整个工作流的'记忆体'。每个 node 都不能直接读写全局变量,而是通过 state 输入输出。这保证了流程的可预测性和可测试性------这点和函数式编程思想很像。"

两个l之间关系?

提供基础组件
LangChain
LangGraph
State Management
Complex Workflow
Multi-Agent Coordination
Simple Chains
RAG
Tool Calling

我之前以为 LangGraph 是 LangChain 的替代品,其实完全不是。它更像是在 LangChain 的'零件库'基础上,加了一个'流程控制器'。如果你只是做单次问答,用 LangChain 足够;但一旦涉及'先查再总结再确认'这种多跳逻辑,就必须上 LangGraph 了。

LangGraph是LangChain生态的进阶扩展,它依赖LangChain的基础组件,在此基础加上复杂管控能力

实践:Hello World!

实践之前建议去GitHub里看看如何配置初始环境

LangChain案例:一键生成学习建议

python 复制代码
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(api_key=API_KEY, base_url=BASE_URL, model="deepseek-chat")
response = llm.invoke("请写一段50字左右的 AI 学习建议...")
print(response.content)

核心: ChatOpenAI封装了API调用细节,invoke方法直接返回结果

LangGraph案例:两步工作流

python 复制代码
from langgraph.graph import StateGraph, START, END

# 1. 定义状态
class WorkflowState(TypedDict):
    original_advice: str
    simplified_advice: str

# 2. 定义节点
def generate_advice(state): ...
def simplify_advice(state): ...

# 3. 构建并编译工作流
workflow = StateGraph(WorkflowState)
workflow.add_edge(START, "generate")
workflow.add_edge("generate", "simplify")
workflow.add_edge("simplify", END)
app = workflow.compile()

# 4. 执行
result = app.invoke({"user_role": "高校学生"})

核心 :通过StateNodeEdge的组合,清晰地定义了"生成→精简"的流程,并自动管理了中间状态。

Q&A

Q1: 如何使用 uv 创建项目并安装 langchain 等依赖包?

A: 首先需要在项目目录中运行 uv init 初始化项目,然后使用 uv add langchain langchain-openai langgraph langchain-community ipykernel 安装所需的依赖包。

Q2: 使用 pip 安装包时出现 "ProxyError" 错误怎么办?

A: 这是代理配置问题导致的。解决方案包括:

  1. 清除代理环境变量:$env:HTTP_PROXY=$null$env:HTTPS_PROXY=$null
  2. 使用国内镜像源:pip install langchain -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn
  3. 检查并修复系统代理配置

Q3: 虚拟环境中没有 pip 模块怎么办?

A: 需要重新创建虚拟环境:

  1. 退出当前虚拟环境:deactivate
  2. 删除旧的虚拟环境目录:Remove-Item -Recurse -Force .venv
  3. 创建新的虚拟环境:python -m venv .venv
  4. 激活虚拟环境:.\.venv\Scripts\Activate.ps1
  5. 升级 pip:python -m pip install --upgrade pip

Q4: 如何验证 langchain、langgraph 和 openai 是否安装成功?

A: 在 Python 交互环境中执行以下代码:

python 复制代码
import langchain
import langgraph
import openai
import importlib
from dotenv import load_dotenv
load_dotenv()
print("LangChain版本:", langchain.__version__)
print("LangGraph版本:", importlib.metadata.version("langgraph"))
print("OpenAI版本:", openai.__version__)

Q5: load_dotenv() 返回 False 是什么意思?

A: load_dotenv() 返回 False 表示没有找到 .env 文件。需要创建 .env 文件并将其放在与主程序相同的目录中,或者使用 load_dotenv(dotenv_path='path/to/your/.env') 指定路径。

Q6: 如何安全地存储 API 密钥?

A: 最佳实践包括:

  1. 将 API 密钥存储在 .env 文件中,而不是硬编码在代码中
  2. 将 .env 文件添加到 .gitignore 中,防止被提交到版本控制系统
  3. 在生产环境中使用密钥管理服务(如 AWS Secrets Manager、Azure Key Vault)
  4. 定期轮换 API 密钥

Q7: 使用阿里云通义千问 API 时如何配置 .env 文件?

A: .env 文件应包含:

python 复制代码
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1

其中 OPENAI_API_KEY 应替换为您的实际阿里云 DashScope API Key。

Q8: 使用阿里云通义千问 API 时出现 "model_not_found" 错误怎么办?

A: 这是因为模型名称不正确。阿里云通义千问 API 支持的模型名称包括:

  • qwen-turbo
  • qwen-plus
  • qwen-max
  • qwen-max-longcontext

Q9: 如何退出 Python 虚拟环境?

A: 在 Windows PowerShell 中使用 deactivate 命令,这将恢复虚拟环境激活之前的环境变量状态。

Q10: 使用 LangGraph 工作流时出现 KeyError 是什么原因?

A: KeyError 通常是因为:

  1. 工作流节点名称与函数名不匹配
  2. 工作流边配置不正确(例如一个节点有两个出口)
  3. WorkflowState 类中没有定义相应的字段
    解决方法包括统一命名、正确配置工作流边和在状态类中添加必要字段。

小结

  • LangChain是你的瑞士军刀,适合快速搭建原型和简单应用。
  • LangGraph是你的工程蓝图,专为构建健壮、可控的复杂系统而设计。
  • 最佳实践 :在实际项目中,通常会结合使用两者------用LangChain构建基础能力模块,再用LangGraph将这些模块编织成复杂的智能工作流。

"LangGraph 并非独立框架,而是构建在 LangChain 之上的流程编排层------没有 LangChain 的'积木',LangGraph 的'图纸'就无从落地。"

学习笔记难免有错,如有错,麻烦指正🙏

相关推荐
chaors7 小时前
LangGraph 入门到精通0x02:基础 API (二)
langchain·llm·agent
杨艺韬12 小时前
LangGraph设计与实现-第15章-Store 与长期记忆
langchain·agent
杨艺韬12 小时前
LangGraph设计与实现-第17章-多 Agent 模式实战
langchain·agent
杨艺韬12 小时前
LangGraph设计与实现-第13章-流式输出与调试
langchain·agent
杨艺韬12 小时前
LangGraph设计与实现-第14章-Runtime 与 Context
langchain·agent
杨艺韬12 小时前
LangGraph设计与实现-第18章-设计模式与架构决策
langchain·agent
杨艺韬12 小时前
LangGraph设计与实现-第11章-子图与嵌套
langchain·agent
杨艺韬12 小时前
LangGraph设计与实现-第16章-预构建 Agent 组件
langchain·agent
杨艺韬12 小时前
LangGraph设计与实现-第5章-图编译:从 StateGraph 到 CompiledStateGraph
langchain·agent