LangChain 1.0 发布:agent 框架正式迈入生产级
最近在使用 NestJs 和 NextJs 在做一个协同文档 DocFlow,如果感兴趣,欢迎 star,有任何疑问,欢迎加我微信进行咨询 yunmz777
随着大型语言模型(LLM)逐渐从「实验」走向「生产可用」,越来越多开发团队意识到:模型本身已不是唯一挑战,更关键的是 agent、流程编排、工具调用、人机 in‑the‑loop 及持久状态管理等机制的落地。 在这样的背景下,开源框架 LangChain 和 LangGraph 同步迈入 v1.0 版本——这不只是版本号的更新,而是“从实验架构迈向生产级 agent 系统”的关键一步。
核心更新概览
LangChain 1.0
-
LangChain 一直定位于“与 LLM 交互 + 构建 agent” 的高层框架。它通过标准的模型抽象、预构建的 agent 模式,帮助开发者快速上线 AI 能力。
-
在过去几年里,社区反馈主要集中在:抽象过重、包的 surface area(命名空间、模块)过大、希望对 agent loop 有更多控制但又不想回归调用原始 LLM。
-
为此,1.0 版重点做了:
- 新的
create_agent(或在 JS 里createAgent)抽象 — 最快构建 agent 的方法。 - “标准内容块”(standard content blocks) — 提供跨模型/提供商的一致输出规范。
- 精简包的内容(streamlined surface area) — 将不常用或遗留功能移到
langchain‑classic(或类似)以简化主包。
- 新的
LangGraph 1.0
-
LangGraph 定位较低层,主要用于"状态持久化 + 可控流程 + 人机介入"的场景。换句话说,当 agent 不只是"输入 → 模型 → 工具 → 输出"那么简单,而是需要"多节点、可暂停、可恢复、多人协作"的复杂流程时,LangGraph 在背后支撑底层运行。
-
核心特性包括:
- 可耐久状态(durable state)– agent 执行状态自动保存、服务器中断后可恢复。
- 内置持久化机制 – 无需开发者为数据库状态管理写很多 boilerplate。
- 图(graph)执行模型 – 支持复杂流程、分支、循环,而不是简单线性流程。
-
值得注意的是:LangChain 1.0 的 agent 实际上是构建在 LangGraph 的运行时之上。这意味着从高层使用 LangChain 时,确实获得了底层更强的支持。
Node.js 示例
下面以 Node.js 演示两种场景:
- 快速构建一个天气 agent(使用 LangChain 高层抽象)
- 增强为结构化输出 + 工具调用示例
安装
npm install @langchain/langchain@latest
npm install @langchain/langgraph@latest
注:请根据实际包名/版本确认,因为官方可能更新命名空间或路径。
示例 1:快速 agent
import { createAgent } from "@langchain/langchain/agents";
async function runWeatherAgent() {
// 定义一个工具函数,假设已实现
const getWeatherTool = {
name: "getWeather",
description: "获取指定城市天气",
async call(input) {
// 这里是工具调用逻辑,例如调用天气 API
const { city } = input;
// 模拟返回
return { temperature: 26, condition: "Sunny", city };
},
};
const weatherAgent = createAgent({
model: "openai:gpt‑5", // 根据实际模型提供者调整
tools: [getWeatherTool],
systemPrompt: "Help the user by fetching the weather in their city.",
});
const result = await weatherAgent.invoke({
role: "user",
content: "What's the weather in San Francisco?",
});
console.log("Result:", result);
}
runWeatherAgent().catch(console.error);
示例 2:结构化输出 + 工具调用
import { createAgent } from "@langchain/langchain/agents";
import { ToolStrategy } from "@langchain/langchain/agents/structured_output";
// 定义结构化输出类型(用 TypeScript 更佳)
class WeatherReport {
constructor(temperature, condition) {
this.temperature = temperature;
this.condition = condition;
}
}
async function runStructuredWeatherAgent() {
const weatherTool = {
name: "weatherTool",
description: "Fetch the weather for a city",
async call({ city }) {
// 调用外部天气API
return { temperature: 20.5, condition: "Cloudy", city };
},
};
const agent = createAgent({
model: "openai:gpt‑4o‑mini",
tools: [weatherTool],
responseFormat: ToolStrategy(WeatherReport),
prompt: "Help the user by fetching the weather in their city.",
});
const output = await agent.invoke({
role: "user",
content: "What’s the weather in Tokyo today?",
});
console.log("Structured output:", output);
}
runStructuredWeatherAgent().catch(console.error);
实践注意事项
- 模型提供者(如 OpenAI、Anthropic、Azure 等)具体接入方式、身份认证、费用控制,需要在项目中自行配置。
- 工具(tools)需要自行定义:名称、描述、调用逻辑、输入/输出格式。务必做好错误处理与超时控制。
- 结构化输出(如 ToolStrategy)可提升模型结果的一致性、安全性,但需定义好对应的类/接口/类型。上面示例仅为简化版。
- 当流程更复杂(例如多步、环节审核、人机交互、长期挂起)时,建议使用 LangGraph 底层能力。
何时选用 LangChain vs LangGraph?
虽然二者紧密相关,但从实用视角来看,有以下建议:
| 场景 | 推荐框架 | 理由 |
|---|---|---|
| 快速构建、标准 agent 流程(模型 → 工具 → 响应)、不需要复杂流程控制 | LangChain 1.0 | 高层抽象快上手,已封装常用模式。 |
| 需要流程编排、状态持久化、长流程运行、人工介入、分支逻辑 | LangGraph 1.0 | 支持图执行、持久状态、人机互动,适合生产级 agent。 |
换句话说,如果你需要“快速构建一个 agent”去实验或上线 MVP,用 LangChain 足够。如果你要做“真正可用、需运维、需被监控、流程可暂停可恢复”的 agent 系统,那 LangGraph 是更合适的底层框架。官方也指出,LangChain 的 agent 是构建在 LangGraph 之上的。
总结
LangChain 1.0 标志着 agent 框架从实验阶段正式迈入生产级应用。本次更新重点解决了抽象过重、包体积过大等问题,推出了 createAgent 这一快速构建 agent 的核心 API,并引入标准内容块以实现跨模型的一致输出。更重要的是,LangChain 1.0 的 agent 运行在 LangGraph 运行时之上,为开发者提供了更强的底层支持。对于需要快速构建标准 agent 流程的场景,LangChain 1.0 提供了简洁的高层抽象;而当需求涉及复杂流程编排、状态持久化时,可以深入使用底层的 LangGraph 能力。