跳到主要内容
LangChain v1 是一个专注的、生产就绪的代理构建基础。 我们围绕三个核心改进精简了框架 要升级,
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-5-20250929",
    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-5-20250929",
    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-5-20250929",
            max_tokens_before_summary=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]

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

agent = create_agent(
    model="claude-sonnet-4-5-20250929",
    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-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')`
错误处理:通过 ToolStrategyhandle_errors 参数控制错误处理
  • 解析错误:模型生成的数据与所需结构不匹配
  • 多个工具调用:模型为结构化输出模式生成 2 个或更多工具调用

标准内容块

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

model = ChatAnthropic(model="claude-sonnet-4-5-20250929")
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@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 版本中发现的任何问题。

附加资源

另请参见


以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。
© . This site is unofficial and not affiliated with LangChain, Inc.