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 版本中发现的任何问题。
附加资源
另请参见
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。