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 更简单的接口,同时通过使用 middleware 提供了更大的定制潜力。
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
实时流式传输令牌、工具调用和推理跟踪
Human-in-the-loop
在敏感操作之前暂停智能体执行以供人工审批
Time travel
将对话回滚到任何一点并探索替代路径和提示
结构化输出
create_agent 已改进结构化输出生成:
- 主循环集成:结构化输出现在在主循环中生成,而不是需要额外的LLM调用
- 结构化输出策略:模型可以在调用工具或使用提供方结构化输出生成之间进行选择
- 成本降低:消除了额外LLM调用带来的额外费用
handle_errors 参数控制 ToolStrategy 的错误处理:
- 解析错误:模型生成不符合期望结构的数据
- 多次工具调用:模型为结构化输出模式生成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
- 中心模块(用于程序化管理提示)
langchain-community导出- 其他已弃用的功能
langchain-classic:
迁移指南
查看我们的迁移指南以获取帮助更新您的代码到LangChain v1。报告问题
请使用'v1' 标签 在 GitHub 上报告发现 1.0 版本的任何问题。
其他资源
LangChain 1.0
阅读公告
Middleware Guide
深入了解中间件
Agents Documentation
完整智能体文档
Message Content
新内容块API
Migration guide
如何迁移到LangChain v1
GitHub
报告问题或贡献