随着大语言模型(LLM)从简单的"单轮问答"演进到具备自主思考、工具调用能力的"智能体(Agent)",传统的开发模式已经有些捉襟见肘。在这个背景下,LangChain (大模型应用编排框架)与 LangGraph(专注于构建复杂、有状态、循环多 Agent 系统的框架)成为了当今 AI 开发者手中的倚天剑与屠龙刀。
但是在你满怀热情准备新建项目时,第一个拦路虎往往是: "我该用 Python 还是 TypeScript (Node.js)?"
本文将带你快速入门 LangChain + LangGraph,并重点帮你拆解如何选择最适合你的语言堆栈。
💡 快速理清关系:LangChain vs LangGraph
在动手之前,我们先用一张图理清这两者的定位与合作方式:
- LangChain: 提供了标准化的组件(Models, Prompts, Tools, Memory),就像是乐高积木。
- LangGraph: 将这些积木组装成图结构(Graphs) 。它最大的突破是支持循环(Cyclic)结构,允许 Agent 思考、调用工具、检查结果,如果不满意,还可以"倒回去"重新思考和重试,这是传统的线性链式结构(Chains)做不到的。
⚖️ 核心对决:Python vs TypeScript,怎么选?
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 架构。 |
🔍 场景抉择指南:对号入座
方案 A:坚定选择 Python,如果:
- 你是 AI 研究员、数据科学家或算法工程师: 你需要频繁用到 PyTorch, Pandas, NumPy 或 Hugging Face 上的模型。
- 你的 Agent 需要做复杂的数据处理: 比如清洗数百万行 Excel、运行复杂的数学计算。
- 你需要使用前沿的最流行工具: 许多学术界新出的 Prompt 工程或 Agent 策略,往往只提供 Python 源码。
方案 B:坚定选择 TypeScript,如果:
- 你是前端或全栈工程师: 你的核心技术栈是 React, Next.js, Vue 或 Node.js,不想为了 AI 功能引入一套复杂的 Python 后端架构。
- 你追求极低的冷启动时间和 Serverless 部署: 你希望把 Agent 部署在 Next.js 的 Route Handlers 或者 Cloudflare Workers 里,享受按量付费和毫秒级冷启动。
- 高并发与极致的实时流(Streaming)是刚需: 你的应用有大量并发用户,且需要极其流畅的打字机(Stream)效果输出。
🛠️ 两大语言堆栈的入门脚手架
无论你选择哪种语言,LangGraph 的核心思想------状态(State)、节点(Nodes)和边(Edges)都是相通的。
1. Python 入门起步
在 Python 中,建议采用现代的 src 布局,并使用 uv 或 poetry 管理依赖。
Bash
# 安装核心依赖
pip install langchain-core langgraph langchain-openai
最小可行性代码示例:
Python
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": "你好!"}))
2. TypeScript 入门起步
如果你使用的是 Node.js 环境,配置非常直接。
Bash
# 安装核心依赖
npm install @langchain/core @langchain/langgraph @langchain/openai
最小可行性代码示例:
TypeScript
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,它丰富的 AI 生态能让你少走很多弯路。
- 如果你要做的是一个注重用户体验、强调高并发交互、想快速推向市场的 Web 产品(如 SaaS 应用) ,不要犹豫,直接上 TypeScript,全栈一把梭的效率会让你飞起来。
针对个人而言,倾向于选择Python, 后续我会持续推出更多由浅入深的例子详细介绍智能体自开发的过程。