Skip to main content
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="You are a helpful research assistant."
)

result = agent.invoke({
    "messages": [
        {"role": "user", "content": "Research AI safety trends"}
    ]
})
在底层,create_agent 基于基本的智能体循环构建——调用模型,让其选择要执行的工具,然后在不再调用工具时结束:
Core agent loop diagram
更多信息,请参阅智能体

中间件

中间件是 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"]
                }
            }
        ),
    ]
)

自定义中间件

您还可以构建自定义中间件以满足您的需求。中间件在智能体执行的每个步骤暴露钩子:
Middleware flow diagram
通过在 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":
            # More powerful model
            model = ChatOpenAI(model="gpt-5")
            tools = [advanced_search, data_analysis]
        else:
            # Less powerful model
            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 构建的,您会自动获得对长期运行和可靠智能体的内置支持,通过:

持久化

对话会自动在会话间持久化,并具有内置检查点

流式处理

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

人机协同

在敏感操作之前暂停智能体执行以获取人工批准

时间旅行

将对话回退到任意点并探索替代路径和提示
您无需学习 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:
    """Get the weather for a city."""
    return f"it's sunny and 70 degrees in {city}"

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

result = agent.invoke({
    "messages": [{"role": "user", "content": "What's the weather in SF?"}]
})

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

标准内容块

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

model = ChatAnthropic(model="claude-sonnet-4-6")
response = model.invoke("What's the capital of France?")

# Unified access to content blocks
for block in response.content_blocks:
    if block["type"] == "reasoning":
        print(f"Model reasoning: {block['reasoning']}")
    elif block["type"] == "text":
        print(f"Response: {block['text']}")
    elif block["type"] == "tool_call":
        print(f"Tool call: {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 表面。
# Agent building
from langchain.agents import create_agent

# Messages and content
from langchain.messages import AIMessage, HumanMessage

# Tools
from langchain.tools import tool

# Model initialization
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 的帮助。

报告问题

请在 GitHub 上使用 'v1' 标签 报告在 1.0 中发现的任何问题。

其他资源

LangChain 1.0

阅读公告

中间件指南

深入了解中间件

智能体文档

完整的智能体文档

消息内容

新的内容块 API

迁移指南

如何迁移到 LangChain v1

GitHub

报告问题或贡献

另请参阅