create_agent
在 LangChain 中构建智能体的新标准,取代了
langgraph.prebuilt.create_react_agent。标准内容块
新的
content_blocks 属性,提供了跨提供商统一访问现代 LLM 功能的途径。简化的命名空间
langchain 命名空间已精简,专注于智能体的核心构建模块,旧版功能已移至 langchain-classic。create_agent
create_agent 是 LangChain 1.0 中构建智能体的标准方式。它提供了比 langgraph.prebuilt.create_react_agent 更简单的接口,同时通过使用 中间件 提供了更大的自定义潜力。
create_agent 构建于基础的智能体循环之上 —— 调用模型,让其选择要执行的工具,然后在它不再调用工具时结束:

中间件
中间件是create_agent 的标志性特性。它提供了一个高度可定制的入口点,提升了您可以构建的功能上限。
优秀的智能体需要 上下文工程:在正确的时间将正确的信息传递给模型。中间件通过可组合的抽象,帮助您控制动态提示、对话摘要、选择性工具访问、状态管理和防护栏。
预构建中间件
LangChain 为常见模式提供了一些 预构建中间件,包括:PIIMiddleware: 在发送给模型之前编辑敏感信息SummarizationMiddleware: 在对话历史过长时进行压缩摘要HumanInTheLoopMiddleware: 对敏感工具调用需要人工批准
自定义中间件
您也可以构建自定义中间件以满足您的需求。中间件在智能体执行的每个步骤都暴露了钩子函数:
AgentMiddleware 类的子类上实现以下任意钩子来构建自定义中间件:
| 钩子 | 何时运行 | 用例 |
|---|---|---|
before_agent | 在调用智能体之前 | 加载记忆,验证输入 |
before_model | 在每次 LLM 调用之前 | 更新提示,修剪消息 |
wrap_model_call | 围绕每次 LLM 调用 | 拦截和修改请求/响应 |
wrap_tool_call | 围绕每次工具调用 | 拦截和修改工具执行 |
after_model | 在每次 LLM 响应之后 | 验证输出,应用防护栏 |
after_agent | 在智能体完成之后 | 保存结果,清理 |
基于 LangGraph 构建
因为create_agent 构建于 LangGraph 之上,您自动获得了对长期运行和可靠智能体的内置支持,通过:
持久化
通过内置检查点,对话自动跨会话持久化
流式传输
实时流式传输 token、工具调用和推理轨迹
人在回路
在敏感操作之前暂停智能体执行以等待人工批准
时间旅行
将会话回退到任意时间点,并探索替代路径和提示
结构化输出
create_agent 改进了结构化输出生成:
- 主循环集成:结构化输出现在在主循环中生成,而不是需要额外的 LLM 调用
- 结构化输出策略:模型可以在调用工具和使用提供商端结构化输出生成之间选择
- 成本降低:消除了额外 LLM 调用带来的额外开销
ToolStrategy 的 handle_errors 参数控制错误处理:
- 解析错误:模型生成的数据与所需结构不匹配
- 多个工具调用:模型为结构化输出模式生成了 2 个或更多工具调用
标准内容块
内容块支持目前仅适用于以下集成:对内容块的更广泛支持将逐步推广到更多提供商。
content_blocks 属性引入了一种适用于不同提供商的消息内容标准表示:
优势
- 提供商无关:使用相同的 API 访问推理轨迹、引用、内置工具(网络搜索、代码解释器等)以及其他功能,无论提供商是谁
- 类型安全:所有内容块类型都有完整的类型提示
- 向后兼容:标准内容可以 延迟加载,因此没有相关的破坏性更改
简化的包
LangChain v1 精简了langchain 包的命名空间,专注于智能体的核心构建模块。精炼后的命名空间暴露了最有用和最相关的功能:
命名空间
| 模块 | 可用的内容 | 备注 |
|---|---|---|
langchain.agents | create_agent, AgentState | 核心智能体创建功能 |
langchain.messages | 消息类型, 内容块, trim_messages | 从 @[langchain-core] 重新导出 |
langchain.tools | @tool, BaseTool, 注入助手 | 从 @[langchain-core] 重新导出 |
langchain.chat_models | init_chat_model, BaseChatModel | 统一的模型初始化 |
langchain.embeddings | Embeddings, init_embeddings | 嵌入模型 |
langchain-core 重新导出的,为了方便起见,这为您提供了构建智能体的专注 API 界面。
langchain-classic
旧版功能已移至 langchain-classic,以保持核心包的轻量和专注。
langchain-classic 包含的内容:
- 旧版链和链实现
- 检索器 (例如
MultiQueryRetriever或之前langchain.retrievers模块中的任何内容) - 索引 API
- Hub 模块 (用于以编程方式管理提示)
langchain-community导出- 其他已弃用的功能
langchain-classic:
迁移指南
请参阅我们的 迁移指南 以获取帮助,将您的代码更新到 LangChain v1。报告问题
请在 GitHub 上报告发现的任何 1.0 版本的问题,并使用'v1' 标签。