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 构建的,您会自动获得对长期运行和可靠智能体的内置支持,通过:
持久化
对话会自动在会话间持久化,并具有内置检查点
流式处理
实时流式传输令牌、工具调用和推理轨迹
人机协同
在敏感操作之前暂停智能体执行以获取人工批准
时间旅行
将对话回退到任意点并探索替代路径和提示
结构化输出
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 上使用'v1' 标签 报告在 1.0 中发现的任何问题。
其他资源
LangChain 1.0
阅读公告
中间件指南
深入了解中间件
智能体文档
完整的智能体文档
消息内容
新的内容块 API
迁移指南
如何迁移到 LangChain v1
GitHub
报告问题或贡献

