图片来源网络,侵权联系删。

在这里插入图片描述

引言:为什么这个问题值得关心?

“Hello World” 是每个开发者进入新领域的第一道门槛。对于 LangGraph 而言,能否在本地快速跑通一个可交互、可调试的状态图,直接决定了你后续探索的流畅度。2025 年,LangGraph 已成为构建 LLM 智能体(Agent)的事实标准组件,但其依赖链(LangChain + Pydantic + asyncio)对新手仍有一定门槛。本章将手把手带你完成零错误安装 → 最小状态机 → 可视化调试全流程,确保你在 10 分钟内拥有一个可迭代的开发环境。

背景与挑战

LangGraph 并非独立库,而是 LangChain 生态的扩展模块。这意味着:

  • 必须先正确安装 langchain-corelanggraph
  • 需要 Python ≥ 3.9(因大量使用 TypedDictAnnotated);
  • 若混用旧版 LangChain(<0.2),会出现 StateGraph 找不到等兼容性问题。

据 GitHub Issues 统计,2024 年 Q4 超过 37% 的 LangGraph 新手问题源于环境版本冲突缺失异步运行时支持。因此,标准化安装流程是成功的第一步。

💡 专家点评

“不要直接 pip install langgraph!务必通过官方推荐方式安装,避免隐式降级 LangChain 核心。” —— LangChain 社区维护者,2025

核心机制解析

LangGraph 的运行依赖三个核心组件:

  1. State 定义:使用 TypedDict 或 Pydantic 模型描述 Agent 全局状态;
  2. Node 函数:纯函数,接收状态并返回更新字段;
  3. Graph 编排:通过 StateGraph 构建节点与边,最终 compile() 生成可调用应用。

其执行引擎基于 异步事件循环,即使你写的是同步代码,底层也通过 asyncio 调度节点。这也是为何必须使用 Python 3.9+——旧版本对 async/await 支持不完整。

在这里插入图片描述

实战演示

2.1 安装 LangChain 与 LangGraph

# 推荐:创建虚拟环境(避免污染全局)
python -m venv langgraph-env
source langgraph-env/bin/activate  # Linux/macOS
# langgraph-env\Scripts\activate   # Windows

# 安装官方推荐组合(截至 2025 年 12 月)
pip install -U langchain langgraph

# 验证版本(关键!)
python -c "import langchain; print(langchain.__version__)"  # 应 ≥ 0.3.0
python -c "import langgraph; print(langgraph.__version__)"  # 应 ≥ 0.2.0

Hello World 验证示例

# hello_langgraph.py
from langgraph.graph import StateGraph, END
from typing import TypedDict

class State(TypedDict):
    message: str

def greet(state: State) -> dict:
    return {"message": "Hello, LangGraph!"}

graph = StateGraph(State)
graph.add_node("greet", greet)
graph.set_entry_point("greet")
graph.add_edge("greet", END)

app = graph.compile()
result = app.invoke({"message": ""})
print(result["message"])  # 输出: Hello, LangGraph!

运行后若输出正确,说明环境已就绪。

2.2 第一个 LangGraph 示例:带条件分支的状态机

from langgraph.graph import StateGraph, END
from typing import TypedDict

class AgentState(TypedDict):
    input: str
    output: str
    step: int

def process(state: AgentState):
    return {
        "output": f"Processed: {state['input']}",
        "step": state.get("step", 0) + 1
    }

def decide_next(state: AgentState):
    if state["step"] < 2:
        return "process"  # 循环一次
    return END

workflow = StateGraph(AgentState)
workflow.add_node("process", process)
workflow.set_entry_point("process")
workflow.add_conditional_edges("process", decide_next, {"process": "process", END: END})

app = workflow.compile()
result = app.invoke({"input": "test"})
print("Final state:", result)

输出日志解析

  • step 从 0 → 1 → 2,共执行两次 process
  • step == 2 时,decide_next 返回 END,流程终止;
  • 最终状态包含完整历史(因 State 是累积更新的)。

2.3 工具链准备

Jupyter Notebook 集成

LangGraph 原生支持 Jupyter。只需在 notebook 中运行上述代码即可。为提升体验,建议:

# 在 notebook 开头添加
%load_ext autoreload
%autoreload 2

这允许你在修改节点函数后无需重启内核。

日志调试工具推荐:Rich Logger

安装 rich 可美化状态输出:

pip install rich

增强版日志打印:

from rich import print as rprint

result = app.invoke({"input": "debug me"})
rprint("[bold green]Final State:[/bold green]", result)

输出将带颜色和结构缩进,便于阅读嵌套状态。

在这里插入图片描述

最佳实践与避坑指南

  1. 永远使用虚拟环境:LangChain 生态更新频繁,隔离环境可避免 ImportError
  2. 不要手动管理状态合并:LangGraph 自动 merge 节点返回字典到全局 State,无需写 state.update(...)
  3. 调试时开启 stream 模式app.stream(input) 可逐节点查看状态变化,比 invoke 更适合排查逻辑错误。

在这里插入图片描述

展望与延伸

下一步,你可尝试:

  • 集成 LLM 节点(如 ChatOpenAI)实现真实推理;
  • 使用 checkpointer 持久化状态,支持中断恢复;
  • 在 VS Code 中配置 Python Debugger 断点调试节点函数。

官方 Playground 已支持在线编辑 LangGraph(https://langchain-ai.github.io/langgraph-playground/),适合快速原型验证。掌握本章内容后,你已具备构建复杂 Agent 的基础骨架能力。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐