LangChain v1 是一个专注且可用于生产环境的智能体构建基础框架。 我们围绕三项核心改进精简了该框架:

create_agent

在 LangChain 中构建智能体的新标准,取代 langgraph.prebuilt.create_react_agent

标准内容块

新增 content_blocks 属性,可跨不同提供商统一访问现代 LLM 功能。

简化命名空间

langchain 命名空间已被精简,专注于智能体的核心构建模块,旧版功能已迁移到 langchain-classic
如需升级,
pip install -U langchain
如需查看完整变更列表,请参阅迁移指南

create_agent

create_agent 是在 LangChain 1.0 中构建智能体的标准方式。相比 langgraph.prebuilt.create_react_agent,它提供了更简单的接口,同时通过使用中间件提供了更强的自定义能力。
from langchain.agents import create_agent

agent = create_agent(
    model="claude-sonnet-4-6",
    tools=[search_web, analyze_data, send_email],
    system_prompt="你是一个乐于助人的研究助手。"
)

result = agent.invoke({
    "messages": [
        {"role": "user", "content": "研究 AI 安全趋势"}
    ]
})
在底层,create_agent 基于基本的智能体循环构建——调用模型,让模型选择要执行的工具,然后在模型不再调用工具时结束:
核心智能体循环图
如需了解更多信息,请参阅智能体

中间件

中间件是 create_agent 的标志性功能。它提供了高度可自定义的入口点,提升了你可以构建内容的上限。 优秀的智能体需要上下文工程:在正确的时间把正确的信息提供给模型。中间件通过一种可组合的抽象,帮助你控制动态提示、对话摘要、选择性工具访问、状态管理和护栏。

预构建中间件

LangChain 为常见模式提供了一些预构建中间件,包括:
from langchain.agents import create_agent
from langchain.agents.middleware import (
    PIIMiddleware,
    SummarizationMiddleware,
    HumanInTheLoopMiddleware
)


agent = create_agent(
    model="claude-sonnet-4-6",
    tools=[read_email, send_email],
    middleware=[
        PIIMiddleware("email", strategy="redact", apply_to_input=True),
        PIIMiddleware(
            "phone_number",
            detector=(
                r"(?:\+?\d{1,3}[\s.-]?)?"
                r"(?:\(?\d{2,4}\)?[\s.-]?)?"
                r"\d{3,4}[\s.-]?\d{4}"
			),
			strategy="block"
        ),
        SummarizationMiddleware(
            model="claude-sonnet-4-6",
            trigger={"tokens": 500}
        ),
        HumanInTheLoopMiddleware(
            interrupt_on={
                "send_email": {
                    "allowed_decisions": ["approve", "edit", "reject"]
                }
            }
        ),
    ]
)

自定义中间件

你也可以构建自定义中间件来满足自己的需求。中间件会在智能体执行的每个步骤暴露钩子:
中间件流程图
通过在 AgentMiddleware 类的子类中实现以下任意钩子来构建自定义中间件:
钩子运行时机使用场景
before_agent调用智能体之前加载记忆、验证输入
before_model每次 LLM 调用之前更新提示、裁剪消息
wrap_model_call包裹每次 LLM 调用拦截并修改请求/响应
wrap_tool_call包裹每次工具调用拦截并修改工具执行
after_model每次 LLM 响应之后验证输出、应用护栏
after_agent智能体完成之后保存结果、清理
自定义中间件示例:
from dataclasses import dataclass
from typing import Callable

from langchain_openai import ChatOpenAI

from langchain.agents.middleware import (
    AgentMiddleware,
    ModelRequest
)
from langchain.agents.middleware.types import ModelResponse

@dataclass
class Context:
    user_expertise: str = "beginner"

class ExpertiseBasedToolMiddleware(AgentMiddleware):
    def wrap_model_call(
        self,
        request: ModelRequest,
        handler: Callable[[ModelRequest], ModelResponse]
    ) -> ModelResponse:
        user_level = request.runtime.context.user_expertise

        if user_level == "expert":
            # 更强大的模型
            model = ChatOpenAI(model="gpt-5.4")
            tools = [advanced_search, data_analysis]
        else:
            # 较弱的模型
            model = ChatOpenAI(model="gpt-5-nano")
            tools = [simple_search, basic_calculator]

        return handler(request.override(model=model, tools=tools))

agent = create_agent(
    model="claude-sonnet-4-6",
    tools=[
        simple_search,
        advanced_search,
        basic_calculator,
        data_analysis
    ],
    middleware=[ExpertiseBasedToolMiddleware()],
    context_schema=Context
)
如需了解更多信息,请参阅完整的中间件指南

基于 LangGraph 构建

由于 create_agent 基于 LangGraph 构建,你会自动获得对长时间运行且可靠的智能体的内置支持,包括:

持久化

通过内置检查点机制,对话可自动跨会话持久保存

流式传输

实时流式传输 token、工具调用和推理轨迹

人在回路

在执行敏感操作前暂停智能体执行,以等待人工批准

时间旅行

将对话回退到任意时间点,并探索替代路径和提示
你不需要学习 LangGraph 就能使用这些功能——它们开箱即用。

结构化输出

create_agent 改进了结构化输出生成:
  • 主循环集成:结构化输出现在在主循环中生成,不再需要额外的 LLM 调用
  • 结构化输出策略:模型可以在调用工具和使用提供商侧结构化输出生成之间进行选择
  • 成本降低:消除了额外 LLM 调用带来的额外开销
from langchain.agents import create_agent
from langchain.agents.structured_output import ToolStrategy
from pydantic import BaseModel


class Weather(BaseModel):
    temperature: float
    condition: str

def weather_tool(city: str) -> str:
    """获取某个城市的天气。"""
    return f"{city} 天气晴朗,气温 70 度"

agent = create_agent(
    "gpt-5.4-mini",
    tools=[weather_tool],
    response_format=ToolStrategy(Weather)
)

result = agent.invoke({
    "messages": [{"role": "user", "content": "旧金山天气怎么样?"}]
})

print(repr(result["structured_response"]))
# 结果为 `Weather(temperature=70.0, condition='sunny')`
错误处理:通过 ToolStrategyhandle_errors 参数控制错误处理:
  • 解析错误:模型生成的数据不符合期望的结构
  • 多个工具调用:模型为结构化输出 schema 生成 2 个或更多工具调用

标准内容块

内容块支持目前仅适用于以下集成:对内容块的更广泛支持将逐步推广到更多提供商。
新的 content_blocks 属性引入了一种标准的消息内容表示形式,可跨提供商使用:
from langchain_anthropic import ChatAnthropic

model = ChatAnthropic(model="claude-sonnet-4-6")
response = model.invoke("法国的首都是哪里?")

# 统一访问内容块
for block in response.content_blocks:
    if block["type"] == "reasoning":
        print(f"模型推理:{block['reasoning']}")
    elif block["type"] == "text":
        print(f"响应:{block['text']}")
    elif block["type"] == "tool_call":
        print(f"工具调用:{block['name']}({block['args']})")

优势

  • 与提供商无关:无论使用哪个提供商,都可以通过同一个 API 访问推理轨迹、引用、内置工具(网页搜索、代码解释器等)以及其他功能
  • 类型安全:为所有内容块类型提供完整的类型提示
  • 向后兼容:标准内容可以惰性加载,因此不会带来相关的破坏性变更
如需了解更多信息,请参阅我们的内容块指南。

简化后的包

LangChain v1 精简了 langchain 包命名空间,使其专注于智能体的核心构建模块。优化后的命名空间暴露了最有用、最相关的功能:

命名空间

模块可用内容备注
langchain.agentscreate_agent, AgentState核心智能体创建功能
langchain.messages消息类型、内容块trim_messageslangchain-core 重新导出
langchain.tools@tool, BaseTool, 注入辅助工具langchain-core 重新导出
langchain.chat_modelsinit_chat_model, BaseChatModel统一的模型初始化
langchain.embeddingsEmbeddings, init_embeddings嵌入模型
其中大多数都是为了方便使用而从 langchain-core 重新导出的,这为构建智能体提供了一个专注的 API 表面。
# 智能体构建
from langchain.agents import create_agent

# 消息和内容
from langchain.messages import AIMessage, HumanMessage

# 工具
from langchain.tools import tool

# 模型初始化
from langchain.chat_models import init_chat_model
from langchain.embeddings import init_embeddings

langchain-classic

旧版功能已迁移到 langchain-classic,以保持核心包轻量且聚焦。 langchain-classic 中包含的内容:
  • 旧版链和链实现
  • 检索器(例如 MultiQueryRetriever,或之前 langchain.retrievers 模块中的任何内容)
  • 索引 API
  • hub 模块(用于以编程方式管理提示)
  • langchain-community 导出
  • 其他已弃用功能
如果你使用了这些功能,请安装 langchain-classic
pip install langchain-classic
然后更新你的导入:
from langchain import ...  
from langchain_classic import ...  

from langchain.chains import ...  
from langchain_classic.chains import ...  

from langchain.retrievers import ...  
from langchain_classic.retrievers import ...  

from langchain import hub  
from langchain_classic import hub  

迁移指南

请参阅我们的迁移指南,获取将代码更新到 LangChain v1 的帮助。

报告问题

如果发现 1.0 中存在任何问题,请在 GitHub 上使用 'v1' 标签进行报告。

其他资源

LangChain 1.0

阅读公告

中间件指南

深入了解中间件

智能体文档

完整的智能体文档

消息内容

新的内容块 API

迁移指南

如何迁移到 LangChain v1

GitHub

报告问题或参与贡献

另请参阅