LangChain v1 是一个专注、可用于生产环境的智能体构建基础框架。 我们围绕三项核心改进精简了框架:

createAgent

在 LangChain 中构建智能体的全新标准方式,用更简洁、更强大的 API 替代 LangGraph 中的 createReactAgent

标准内容块

新增 contentBlocks 属性,为跨所有提供商的现代 LLM 功能提供统一访问。

精简的包

langchain 包已精简,专注于智能体的核心构建块,遗留功能已移至 @langchain/classic
升级方式:
npm install langchain @langchain/core
关于完整的变更列表,请参阅 迁移指南

createAgent

createAgent 是 LangChain 1.0 中构建智能体的标准方式。它提供了比 LangGraph 导出的预置 createReactAgent 更简单的接口,同时通过中间件提供了更大的自定义潜力。
import { createAgent } from "langchain";

const agent = createAgent({
  model: "claude-sonnet-4-6",
  tools: [getWeather],
  systemPrompt: "You are a helpful assistant.",
});

const result = await agent.invoke({
  messages: [
    { role: "user", content: "What is the weather in Tokyo?" },
  ],
});

console.log(result.content);
在底层,createAgent 构建于基础的智能体循环之上——调用模型,让其选择要执行的工具,当不再调用工具时结束:
Core agent loop diagram
更多信息,请参阅 智能体

中间件

中间件是 createAgent 的标志性特性。它使 createAgent 具有高度可定制性,提升了你构建能力的上限。 优秀的智能体需要 上下文工程:在正确的时间将正确的信息传递给模型。中间件帮助你通过可组合的抽象,控制动态提示、对话摘要、选择性工具访问、状态管理和护栏。

预置中间件

LangChain 提供了一些适用于常见模式的 预置中间件,包括:
  • summarizationMiddleware:当对话历史过长时压缩它
  • humanInTheLoopMiddleware:对敏感的工具调用要求审批
  • piiRedactionMiddleware:在发送给模型之前,对敏感信息进行脱敏
import {
  createAgent,
  summarizationMiddleware,
  humanInTheLoopMiddleware,
  piiRedactionMiddleware,
} from "langchain";

const agent = createAgent({
  model: "claude-sonnet-4-6",
  tools: [readEmail, sendEmail],
  middleware: [
    piiRedactionMiddleware({ patterns: ["email", "phone", "ssn"] }),
    summarizationMiddleware({
      model: "claude-sonnet-4-6",
      trigger: { tokens: 500 },
    }),
    humanInTheLoopMiddleware({
      interruptOn: {
        sendEmail: {
          allowedDecisions: ["approve", "edit", "reject"],
        },
      },
    }),
  ],
});

自定义中间件

你也可以构建自定义中间件来满足特定需求。 通过使用 createMiddleware 函数实现以下任一钩子来构建自定义中间件:
钩子何时运行用例
beforeAgent调用智能体之前加载记忆,验证输入
beforeModel每次 LLM 调用之前更新提示,修剪消息
wrapModelCall每次 LLM 调用前后拦截并修改请求/响应
wrapToolCall每次工具调用前后拦截并修改工具执行
afterModel每次 LLM 响应之后验证输出,应用护栏
afterAgent智能体完成后保存结果,清理
Middleware flow diagram
自定义中间件示例:
import { createMiddleware } from "langchain";

const contextSchema = z.object({
  userExpertise: z.enum(["beginner", "expert"]).default("beginner"),
})

const expertiseBasedToolMiddleware = createMiddleware({
  wrapModelCall: async (request, handler) => {
    const userLevel = request.runtime.context.userExpertise;
    if (userLevel === "expert") {
      const tools = [advancedSearch, dataAnalysis];
      return handler(
        request.replace("openai:gpt-5.4", tools)
      );
    }
    const tools = [simpleSearch, basicCalculator];
    return handler(
      request.replace("openai:gpt-5-nano", tools)
    );
  },
});

const agent = createAgent({
  model: "claude-sonnet-4-6",
  tools: [simpleSearch, advancedSearch, basicCalculator, dataAnalysis],
  middleware: [expertiseBasedToolMiddleware],
  contextSchema,
});
更多信息,请参阅 完整的中间件指南

基于 LangGraph 构建

由于 createAgent 构建在 LangGraph 之上,你自动获得了对长时间运行且可靠的智能体的内建支持,具体包括:

持久化

通过内建的检查点机制,对话自动跨会话持久化

流式传输

实时流出令牌、工具调用和推理轨迹

人机协同

在执行敏感操作之前,暂停智能体等待人工批准

时间旅行

将对话回退到任意时间点,并探索替代路径和提示
你无需学习 LangGraph 即可使用这些特性——它们开箱即用。

结构化输出

createAgent 改进了结构化输出的生成:
  • 主循环集成:结构化输出现在在主循环中生成,无需额外的 LLM 调用
  • 结构化输出策略:模型可以在调用工具和使用提供商侧的结构化输出生成之间进行选择
  • 成本降低:消除了额外 LLM 调用带来的额外开销
import { createAgent } from "langchain";
import * as z from "zod";

const weatherSchema = z.object({
  temperature: z.number(),
  condition: z.string(),
});

const agent = createAgent({
  model: "gpt-5.4-mini",
  tools: [getWeather],
  responseFormat: weatherSchema,
});

const result = await agent.invoke({
  messages: [
    { role: "user", content: "What is the weather in Tokyo?" },
  ],
});

console.log(result.structuredResponse);
错误处理:通过 ToolStrategyhandleErrors 参数控制错误处理:
  • 解析错误:模型生成的数据与期望结构不匹配
  • 多重工具调用:模型为结构化输出模式生成了两个或更多的工具调用

标准内容块

大多数包的 1.0 版本已可用。目前只有以下包支持新的内容块:
  • langchain
  • @langchain/core
  • @langchain/anthropic
  • @langchain/openai
更广泛的内容块支持正在计划中。

优势

  • 与提供商无关:无论使用哪个提供商,都可以使用相同的 API 访问推理轨迹、引用、内建工具(网页搜索、代码解释器等)和其他功能
  • 类型安全:为所有内容块类型提供完整的类型提示
  • 向后兼容:标准内容可以 延迟加载,因此没有相关的破坏性变更
更多信息,请参阅我们的 内容块指南

精简的包

LangChain v1 精简了 langchain 包的命名空间,专注于智能体的核心构建块。该包只暴露最有用和相关的功能: 其中大部分为了方便从 @langchain/core 重新导出,为你构建智能体提供了一个聚焦的 API 面。

@langchain/classic

遗留功能已移至 @langchain/classic,以保持核心包的轻量和专注。

@langchain/classic 中包含什么

  • 传统的链和链实现
  • 检索器
  • 索引 API
  • @langchain/community 的导出
  • 其他已弃用的功能
如果你使用了这些功能中的任何一个,请安装 @langchain/classic
npm install @langchain/classic
然后更新你的导入:
import { ... } from "langchain";
import { ... } from "@langchain/classic";

import { ... } from "langchain/chains";
import { ... } from "@langchain/classic/chains";

报告问题

如果你在使用 1.0 时发现任何问题,请在 GitHub 上使用 'v1' 标签 进行报告。

额外资源

LangChain 1.0

阅读公告

中间件指南

深入了解中间件

智能体文档

完整的智能体文档

消息内容

新的内容块 API

迁移指南

如何迁移到 LangChain v1

GitHub

报告问题或贡献代码

另请参阅