createAgent
在 LangChain 中构建代理的新标准方式,用更简洁、更强大的 API 替换了 LangGraph 中的
createReactAgent。标准内容块
一个新的
contentBlocks 属性,提供对所有提供商的现代 LLM 功能的统一访问。精简的包
langchain 包已经精简,专注于代理的基本构建块,并将旧功能移至 @langchain/classic。createAgent
createAgent 是 LangChain 1.0 中构建代理的标准方式。它提供了比 LangGraph 导出的预构建 createReactAgent 更简单的接口,同时通过使用中间件提供了更大的定制潜力。
createAgent 构建在基本的代理循环之上——调用模型,让它选择要执行的工具,然后在它不再调用工具时完成

中间件
中间件是createAgent 的定义性功能。它使 createAgent 具有高度可定制性,提高了您可以构建的上限。 优秀的代理需要上下文工程:在正确的时间向模型提供正确的信息。中间件通过可组合的抽象帮助您控制动态提示、对话摘要、选择性工具访问、状态管理和防护机制。预构建中间件
LangChain 为常见模式提供了一些预构建中间件,包括summarizationMiddleware:当对话历史过长时,将其浓缩humanInTheLoopMiddleware:对敏感工具调用需要批准piiRedactionMiddleware:在发送给模型之前编辑敏感信息
自定义中间件
您还可以构建自定义中间件以满足您的特定需求。 通过使用createMiddleware 函数实现以下任何钩子来构建自定义中间件:| 钩子 | 何时运行 | 用例 |
|---|---|---|
beforeAgent | 调用代理之前 | 加载内存,验证输入 |
beforeModel | 每次 LLM 调用之前 | 更新提示,修剪消息 |
wrapModelCall | 每次 LLM 调用前后 | 拦截和修改请求/响应 |
wrapToolCall | 每次工具调用前后 | 拦截和修改工具执行 |
afterModel | 每次 LLM 响应之后 | 验证输出,应用防护机制 |
afterAgent | 代理完成后 | 保存结果,清理 |

基于 LangGraph 构建
由于createAgent 构建在 LangGraph 之上,您可以通过以下方式自动获得对长期运行和可靠代理的内置支持
持久化
通过内置检查点,对话会自动跨会话持久化
流式处理
实时流式传输令牌、工具调用和推理轨迹
人工干预
在敏感操作之前暂停代理执行以进行人工批准
时间旅行
将对话回溯到任何时间点并探索备选路径和提示
结构化输出
createAgent 改进了结构化输出生成
- 主循环集成:结构化输出现在在主循环中生成,而不需要额外的 LLM 调用
- 结构化输出策略:模型可以在调用工具或使用提供商侧的结构化输出生成之间进行选择
- 成本降低:消除了额外 LLM 调用带来的额外开销
ToolStrategy 的 handleErrors 参数控制错误处理
- 解析错误:模型生成的数据与所需结构不匹配
- 多次工具调用:模型为结构化输出模式生成 2 个以上的工具调用
标准内容块
大多数包都提供了 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
报告问题
请使用'v1' 标签在 GitHub 上报告 1.0 版本中发现的任何问题。
附加资源
另请参见
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。