Skip to main content
LangChain v1 是构建智能体的一个专注的、可用于生产的基石。 我们围绕三个核心改进对框架进行了优化:

create_agent

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

Standard content blocks

一个新的content_blocks属性,提供对现代LLM功能的统一访问。

Simplified namespace

langchain命名空间已被精简,专注于智能体的基本构建块,并将旧功能移动到langchain-classic
升级,
pip install -U langchain
关于更改的完整列表,请参阅迁移指南

create_agent

create_agent 是在 LangChain 1.0 中构建智能体的标准方法。它提供了一个比 langgraph.prebuilt.create_react_agent 更简单的接口,同时通过使用 middleware 提供了更大的定制潜力。
from langchain.agents import create_agent


agent = create_agent(
    model="anthropic:claude-sonnet-4-5",
    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 基于基本的智能体循环构建——调用模型,让它选择执行工具,然后在没有更多工具被调用时完成:
核心智能体循环图
有关更多信息,请参阅智能体

中间件

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

预构建中间件

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


agent = create_agent(
    model="anthropic:claude-sonnet-4-5",
    tools=[read_email, send_email],
    middleware=[
        PIIMiddleware(patterns=["email", "phone", "ssn"]),
        SummarizationMiddleware(
            model="anthropic:claude-sonnet-4-5",
            max_tokens_before_summary=500
        ),
        HumanInTheLoopMiddleware(
            interrupt_on={
                "send_email": {
                    "allowed_decisions": ["approve", "edit", "reject"]
                }
            }
        ),
    ]
)

自定义中间件

您还可以构建自定义中间件以满足您的需求。中间件在每个智能体执行步骤中暴露钩子:
Middleware流程图
通过在 AgentMiddleware 类的子类上实现以下任何一个钩子来构建自定义中间件:
钩子运行时用例
before_agent在调用智能体之前加载内存,验证输入
before_model在每次调用 LLM 之前更新提示,裁剪消息
wrap_model_call在每次 LLM 调用周围截获并修改请求/响应
wrap_tool_call在每次工具调用周围截获并修改工具执行
after_model在每次 LLM 响应之后验证输出,应用限制
after_agent在智能体完成后保存结果,清理
示例自定义中间件:
from dataclasses import dataclass

from langchain.agents.middleware import (
    AgentMiddleware,
    ModelRequest,
    ModelRequestHandler
)
from langchain.messages import AIMessage

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

class ExpertiseBasedToolMiddleware(Middleware):
    def wrap_model_call(
        self,
        request: ModelRequest,
        handler: ModelRequestHandler
    ) -> AIMessage:
        user_level = request.runtime.context.user_expertise

        if user_level == "expert":
            # More powerful model
            model = "openai:gpt-5"
            tools = [advanced_search, data_analysis]
        else:
            # Less powerful model
            model = "openai:gpt-5-nano"
            tools = [simple_search, basic_calculator]

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

agent = create_agent(
    model="anthropic:claude-sonnet-4-5",
    tools=[
        simple_search,
        advanced_search,
        basic_calculator,
        data_analysis
    ],
    middleware=[ExpertiseBasedToolMiddleware()],
    context_schema=Context
)
有关更多信息,请参阅完整的中间件指南

基于 LangGraph

因为 create_agent 是基于 LangGraph 构建的,您将自动获得通过以下方式提供的长期运行和可靠的智能体内置支持:

Persistence

会话自动跨会话持久化,内置检查点功能

Streaming

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

Human-in-the-loop

在敏感操作之前暂停智能体执行以供人工审批

Time travel

将对话回滚到任何一点并探索替代路径和提示
您无需学习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(
    "openai:gpt-4o-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')`
错误处理:通过 handle_errors 参数控制 ToolStrategy 的错误处理:
  • 解析错误:模型生成不符合期望结构的数据
  • 多次工具调用:模型为结构化输出模式生成2+次工具调用

标准内容块

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

model = ChatAnthropic(model="claude-sonnet-4-5")
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_messages从 @[langchain-core] 导出
langchain.tools@toolBaseTool,注入助手从 @[langchain-core] 导出
langchain.chat_modelsinit_chat_modelBaseChatModel统一模型初始化
langchain.embeddingsEmbeddingsinit_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
  • 中心模块(用于程序化管理提示)
  • 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。

报告问题

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

其他资源

LangChain 1.0

阅读公告

Middleware Guide

深入了解中间件

Agents Documentation

完整智能体文档

Message Content

新内容块API

Migration guide

如何迁移到LangChain v1

GitHub

报告问题或贡献

参见