随着大语言模型(LLM)从简单的“单轮问答”演进到具备自主思考、工具调用能力的“智能体(Agent)”,传统的开发模式已经有些捉襟见肘。在这个背景下,LangChain(大模型应用编排框架)与 LangGraph(专注于构建复杂、有状态、循环多 Agent 系统的框架)成为了当今 AI 开发者手中的倚天剑与屠龙刀。

但是在你满怀热情准备新建项目时,第一个拦路虎往往是: “我该用 Python 还是 TypeScript (Node.js)?”
本文将带你快速入门 LangChain + LangGraph,并重点帮你拆解如何选择最适合你的语言堆栈。
在动手之前,我们先用一张图理清这两者的定位与合作方式:
LangChain 团队非常重视多语言生态,因此 Python 和 JS/TS 版本几乎是并驾齐驱的。选择哪门语言,决定了你整个项目的工程架构和后续的维护成本。
| 维度 | Python 堆栈 (langchain + langgraph) | TypeScript/JS 堆栈 (@langchain/core + langgraph) |
|---|---|---|
| 主要应用场景 | 数据科学、模型微调、复杂 AI 算法实验、企业级大模型后端。 | 全栈 Web 应用、Serverless/Edge 部署、前端无缝集成。 |
| 生态成熟度 | 绝对霸主。最新的论文实现、小众向量数据库、冷门工具集成,100% 优先支持 Python。 | 高度成熟。核心功能完全同步,但某些冷门第三方工具需要自己手写封装。 |
| 并发与异步 | 依赖 asyncio。处理高并发 I/O 时需要小心编写异步代码。 | 天生优势。Node.js 的事件循环和异步 I/O 在处理多用户高并发、流式传输(Streaming)时非常丝滑。 |
| 部署与运行 | 需要配置 Python 虚拟环境,容器化(Docker)较重,不适合边缘计算。 | 极轻量。完美适配 Vercel, Cloudflare Workers, Supabase Functions 等边缘/Serverless 架构。 |
无论你选择哪种语言,LangGraph 的核心思想——状态(State)、节点(Nodes)和边(Edges)都是相通的。
在 Python 中,建议采用现代的 src 布局,并使用 uv 或 poetry 管理依赖。
复制代码# 安装核心依赖
pip install langchain-core langgraph langchain-openai
最小可行性代码示例:
复制代码from typing import Annotated
from typing_extensions import TypedDict
from langgraph.graph import StateGraph, START, END# 1. 定义图的状态(State)
class State(TypedDict):
input: str
output: str# 2. 定义节点(Node)逻辑
def agent_node(state: State):
return {"output": f"AI 思考了: {state['input']}"}# 3. 构建图
builder = StateGraph(State)
builder.add_node("agent", agent_node)
builder.add_edge(START, "agent")
builder.add_edge("agent", END)graph = builder.compile()
print(graph.invoke({"input": "你好!"}))
如果你使用的是 Node.js 环境,配置非常直接。
复制代码# 安装核心依赖
npm install @langchain/core @langchain/langgraph @langchain/openai
最小可行性代码示例:
复制代码import { StateGraph, START, END } from "@langchain/langgraph";// 1. 定义图的状态结构
const GraphState = {
input: { value: (x: string, y: string) => y, default: () => "" },
output: { value: (x: string, y: string) => y, default: () => "" },
};// 2. 定义节点
const agentNode = (state: typeof GraphState) => {
return { output: `AI 思考了: ${state.input}` };
};// 3. 构建图
const workflow = new StateGraph({ channels: GraphState })
.addNode("agent", agentNode)
.addEdge(START, "agent")
.addEdge("agent", END);const graph = workflow.compile();
const result = await graph.invoke({ input: "你好!" });
console.log(result);
技术栈没有好坏,只有合适与否。
针对个人而言,倾向于选择Python, 后续我会持续推出更多由浅入深的例子详细介绍智能体自开发的过程。