createAgent
在 v1 中,React agent 预构建功能已移入 langchain 包。下表概述了功能变更:
| 部分 | 变更 |
|---|---|
| 导入路径 | 包从 @langchain/langgraph/prebuilts 移动到 langchain |
| 提示(Prompts) | 参数重命名为 systemPrompt,动态提示使用 middleware |
| 模型前钩子 | 被带有 beforeModel 方法的 middleware 取代 |
| 模型后钩子 | 被带有 afterModel 方法的 middleware 取代 |
| 自定义状态 | 在 middleware 中定义,仅支持 zod 对象 |
| 模型选择 | 通过 middleware 动态选择,不再支持预绑定模型 |
| 工具(Tools) | 工具错误处理移到实现 wrapToolCall 的 middleware |
| 结构化输出 | 移除基于 prompt 的生成,使用 toolStrategy/providerStrategy |
| 流节点名称 | 节点名从 "agent" 改为 "model" |
| 运行时上下文 | 使用 context 属性替代 config.configurable |
| 命名空间 | 精简包以专注代理构建块,遗留代码移至 @langchain/classic |
导入路径
React agent 预构建的导入路径已从@langchain/langgraph/prebuilts 更改为 langchain,函数名也从 createReactAgent 改为 createAgent:
提示(Prompts)
静态提示重命名
prompt 参数现在重命名为 systemPrompt:
SystemMessage
如果在系统提示中使用 SystemMessage 对象,v1 中现在直接使用字符串内容。
动态提示
动态提示是上下文工程的重要模式 —— 它根据当前对话状态动态调整发送给模型的信息。请使用dynamicSystemPromptMiddleware 实现此功能(示例见原文)。
模型前钩子
模型前钩子现在作为具有beforeModel 方法的 middleware 实现。该模式更具扩展性,允许在模型调用前运行多个中间件并在代理间复用。
常见用例包括:摘要会话历史、裁剪消息、输入保护(如 PII 屏蔽)。v1 包含内置的摘要中间件示例。
模型后钩子
模型后钩子现在作为具有afterModel 方法的 middleware 实现,可用于组合多个模型响应后的处理器。常见用例包括人工介入审批与输出保护。v1 包含内置的人机环节中间件示例。
自定义状态
自定义状态现在在 middleware 中通过stateSchema 属性定义,请使用 Zod 来声明在代理运行期间携带的额外状态字段。
模型
动态模型选择现在通过 middleware 实现。使用wrapModelCall 可根据状态或运行时代码替换模型(以及工具)。预绑定模型(带工具的模型实例)在使用结构化输出时不建议使用。
工具(Tools)
createAgent 的 tools 参数接受用 tool 创建的函数、LangChain 工具实例或代表内置提供者工具的对象。工具的错误处理现在建议通过实现 wrapToolCall 的 middleware 来配置。
结构化输出
结构化输出不再作为单独节点生成,而是在主循环中生成(无需额外 LLM 调用),从而降低成本与延迟。v1 支持两种策略:toolStrategy:使用人工工具调用生成结构化输出providerStrategy:使用提供者原生结构化输出生成
responseFormat 中的提示来生成结构化输出的做法。
流节点名称重命名
在从代理流式传输事件时,节点名称已从"agent" 更改为 "model",以更准确地反映节点目的。
运行时上下文
调用代理时,请通过context 配置参数传入只读配置(例如 userId)。config.configurable 的老模式仍然兼容,但建议新应用或迁移应用使用 context 参数。
标准内容
在 v1 中,消息获得了与提供者无关的标准内容块(standard content blocks),可以通过message.contentBlocks 访问以获得一致的、类型化的视图。现有的 message.content 字段仍然保留用于字符串或提供者原生结构。
变更内容
- 新增
contentBlocks属性用于标准化内容 - 新的 TypeScript 类型
ContentBlock提供强类型支持 - 可选通过环境变量或
outputVersion: "v1"将标准块序列化到content
创建多模态消息示例
(示例见原文)精简包
langchain 包命名空间被精简以专注于构建代理的基础构件。遗留功能已移至 @langchain/classic。
导出
v1 包含的模块示例:Agents、Messages、Tools、Chat models 等(详见原文)。@langchain/classic
若使用遗留链、索引 API 或 @langchain/community 导出的功能,请安装 @langchain/classic 并更新导入路径(示例见原文)。
重大变更
放弃 Node 18 支持
所有 LangChain 包现在要求 Node.js 20 或更高版本。Node.js 18 已在 2025 年 3 月达到生命周期终点。新的构建输出
所有包的构建现在采用打包器生成,而非直接输出原始 TypeScript 文件;如曾直接从dist/ 导入文件,请更新到新的模块系统。
遗留代码移至 @langchain/classic
遗留功能已移至 @langchain/classic 包(详情见上文)。

