create_agent
构建 LangChain 代理的新标准,取代
langgraph.prebuilt.create_react_agent。Standard content blocks
新的
content_blocks 属性,提供跨提供商对现代 LLM 功能的统一访问。Simplified namespace
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 构建,您可以自动获得对长时间运行和可靠代理的内置支持,包括:
Persistence
通过内置检查点,对话可以跨会话自动持久化
Streaming
实时流式传输 token、工具调用和推理追踪
Human-in-the-loop
在敏感操作前暂停代理执行以获得人工审批
Time travel
将对话回退到任意时间点,探索替代路径和提示
结构化输出
create_agent 改进了结构化输出生成:
- 主循环集成:结构化输出现在在主循环中生成,无需额外的 LLM 调用
- 结构化输出策略:模型可以在调用工具或使用提供商端结构化输出生成之间选择
- 降低成本:消除了额外 LLM 调用带来的费用
ToolStrategy 的 handle_errors 参数控制错误处理:
- 解析错误:模型生成的数据与期望结构不匹配
- 多次工具调用:模型为结构化输出 schema 生成 2 个或更多工具调用
标准内容块
内容块支持目前仅适用于以下集成:内容块的更广泛支持将在更多提供商中逐步推出。
content_blocks 属性引入了一种跨提供商通用的消息内容标准表示:
优势
- 提供商无关:无论使用哪个提供商,都可以使用相同的 API 访问推理追踪、引用、内置工具(网络搜索、代码解释器等)和其他功能
- 类型安全:所有内容块类型都有完整的类型提示
- 向后兼容:标准内容可以延迟加载,因此不存在相关的破坏性变更
简化包
LangChain v1 精简了langchain 包命名空间,专注于代理的核心构建块。精简后的命名空间公开了最有用和最相关的功能:
命名空间
| Module | What’s available | Notes |
|---|---|---|
langchain.agents | create_agent, AgentState | Core agent creation functionality |
langchain.messages | Message types, content blocks, trim_messages | Re-exported from langchain-core |
langchain.tools | @tool, BaseTool, injection helpers | Re-exported from langchain-core |
langchain.chat_models | init_chat_model, BaseChatModel | Unified model initialization |
langchain.embeddings | Embeddings, init_embeddings | Embedding models |
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
阅读公告
Middleware guide
深入了解中间件
Agents Documentation
完整的代理文档
Message Content
新内容块 API
Migration guide
如何迁移到 LangChain v1
GitHub
报告问题或贡献代码
另请参阅
通过 MCP 将这些文档连接到 Claude、VSCode 等,获取实时答案。

