Featured image of post 三年磨一剑:LangChain 正式发布 v1.0

三年磨一剑:LangChain 正式发布 v1.0

2025年10月,LangChain 正式发布 v1.0 稳定版,标志着其核心 API 进入稳定期。本文深度解析 v1.0 的核心革新,包括统一的 create_agent 接口、强大的中间件机制,并对比 LlamaIndex,助您选择最适合的 LLM 开发框架

三年磨一剑:LangChain 正式发布 v1.0

2025年10月,人工智能与大语言模型(LLM)应用开发领域迎来一个重要节点:LangChain 项目在历经近三年的快速演进后,正式推出其 v1.0 版本。这不仅标志着 LangChain 从一个实验性质的开源项目走向成熟与稳定,也为全球数以万计的开发者提供了一个真正可用于生产环境的可靠工具。

从个人项目到行业标杆:LangChain 的成长轨迹

LangChain 的故事始于 2022 年,由 Harrison Chase 发起的一个个人实验。最初,它只是一个几百行代码的 Python 包,目标是简化 LLM 应用的构建流程。然而,随着 ChatGPT 的横空出世,生成式 AI 迅速成为技术焦点,开发者们迫切需要一个能将 LLM 与外部数据、工具和业务逻辑无缝集成的框架——LangChain 恰好填补了这一空白。

此后,凭借其模块化设计和高度可组合的架构,LangChain 迅速赢得社区青睐。它不再只是一个单一库,而是逐步演化为一个完整的生态系统,包括:

  • LangChain:核心框架,用于构建链式逻辑与智能代理;
  • LangSmith:提供可观测性、调试与评估能力;
  • LangGraph:支持构建有状态、可控制的多智能体系统。

无数开发者借助这一生态,从简单的文档问答、聊天机器人,到复杂的自主代理(Agent),构建出形态各异的 AI 应用。

v1.0 的发布,是 LangChain 对社区长期承诺的兑现。它意味着核心 API 将进入稳定期,开发者可以更安心地将其部署到生产环境中,而无需担忧频繁的破坏性变更。

v1.0 的核心革新:聚焦“生产就绪的代理”

LangChain v1.0 围绕一个明确目标展开:“为构建生产级智能代理提供专注、可靠的基础”。为此,团队在架构、API 和工程实践上进行了多项关键升级。

统一代理构建接口:create_agent

新版本引入了 create_agent 作为构建代理的标准方法。该接口底层基于 LangGraph 实现,天然支持:

  • 持久化状态:代理可在长时间运行中保持上下文;
  • 流式响应:实时返回中间结果;
  • 人机协同(Human-in-the-loop):支持人工干预关键决策;
  • “时间旅行”调试:回溯代理执行路径,精准定位问题。

官方 demo 代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
from langchain.agents import create_agent

agent = create_agent(
    model="anthropic:claude-sonnet-4-5", # 统一模型标识符(Unified Model Identifier)
    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"}
    ]
})

统一模型标识符(Unified Model Identifier) 的格式,其含义如下:

  • anthropic:表示模型提供商(provider),即 Anthropic 公司;
  • claude-sonnet-4-5:是该提供商旗下的具体模型名称,这里指 Claude Sonnet 4.5 版本。

这些能力让构建长期运行、高可靠性的智能代理变得前所未有的简单。

强大的中间件(Middleware)机制

create_agent 的一大亮点是其灵活的中间件架构。开发者可在代理执行的关键节点(如模型调用前、工具执行后)插入自定义逻辑,实现对行为的精细控制。

LangChain 已内置多个实用中间件,例如:

  • PIIMiddleware:自动识别并脱敏敏感信息;
  • SummarizationMiddleware:动态压缩对话历史,避免上下文过载。

官方 demo 代码

核心目标:构建一个能自动处理邮件(读取和发送)的 AI 代理,同时在安全性、上下文管理和人工干预方面做了精细配置。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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("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="anthropic:claude-sonnet-4-5",
            max_tokens_before_summary=500
        ),
        HumanInTheLoopMiddleware(
            interrupt_on={
                "send_email": {
                    "allowed_decisions": ["approve", "edit", "reject"]
                }
            }
        ),
    ]
)

具体做了四件事

  1. 指定模型与工具 使用 Anthropic 的 claude-sonnet-4-5 模型,并赋予代理两个工具:read_email(读邮件)和 send_email(发邮件)。
  2. 添加隐私保护(PII 脱敏/拦截)
    • 自动识别并脱敏邮件内容中的“email”字段(如将邮箱替换为 [EMAIL REDACTED]);
    • 使用正则表达式检测电话号码,并在发现时直接阻止(block)相关操作,防止敏感信息泄露。
  3. 自动摘要对话历史 当对话上下文超过 500 个 token 时,自动调用 Claude 模型对历史进行摘要,避免上下文过长影响性能或超出模型限制。
  4. 引入人工审核机制 在代理尝试执行 send_email 操作时,强制暂停并等待人工干预,允许用户选择“批准”、“编辑”或“拒绝”该操作,确保关键动作受控。

同时,开发者也可轻松编写自定义中间件,满足特定业务需求。这种设计极大提升了框架的可扩展性与适应性。

更清晰的包结构

为提升核心框架的专注度,v1.0 对包结构进行了重构:

  • langchain 包现在仅包含构建代理最核心、最常用的功能;
  • 历史遗留或非核心组件被迁移至独立的 langchain-classic 包。

此举不仅降低了新用户的学习门槛,也让依赖管理更加清晰,便于维护。

标准化内容表示与结构化输出

新版本引入 content_blocks 属性,为不同厂商的 LLM 响应提供统一、与供应商无关的抽象。无论使用 OpenAI、Anthropic 还是开源模型,开发者都能以一致方式访问推理轨迹、工具调用和文本内容。

此外,结构化输出(Structured Output)功能被深度集成到代理主循环中,避免了额外的 LLM 调用,有效降低了延迟与成本。

LangChain 与 LlamaIndex:殊途同归,各有所长

在 LLM 应用框架领域,LlamaIndex 是另一个备受关注的项目。尽管两者目标相似,但设计理念与适用场景存在显著差异。

  • LangChain:通用型“瑞士军刀”
    它提供丰富的抽象(如 Chains、Agents、Tools),支持高度定制化的复杂应用,适用于需要多工具协作、动态决策或状态管理的场景。

  • LlamaIndex:RAG 领域的专家
    专注于检索增强生成(Retrieval-Augmented Generation, RAG),在私有数据索引、高效检索与上下文注入方面做了深度优化,代码简洁,上手更快。

抽象的双刃剑:便利与代价

LangChain 的强大抽象能力既是优势,也是争议之源。

在原型开发阶段,几行代码即可搭建出功能完整的应用,极大加速创新。然而一旦进入生产环境,这种“魔法”可能反成负担:开发者常需深入框架内部调试黑盒逻辑,而非聚焦业务本身。复杂的嵌套结构(如 Agent 调用 Chain,Chain 再调用 Tool)也显著增加了代码的理解成本与维护难度。

值得肯定的是,LangChain 团队显然意识到了这一问题。v1.0 的多项改进——如拆分 langchain-core、引入显式状态管理的 LangGraph——正是对“过度抽象”与“工程实用性”之间平衡的积极探索。

如何选择?

  • 若你的项目涉及复杂逻辑链、多工具协同或需构建具备决策能力的智能代理,且团队愿意投入时间掌握其抽象模型,LangChain 是更合适的选择
  • 若你的核心需求是围绕特定数据集构建高效、精准的问答系统,追求代码简洁、透明与可维护性,LlamaIndex 往往更直接高效

代码对比:构建一个 RAG 问答机器人

为直观展示差异,我们以相同任务为例:读取本地文件 document.txt,并基于其内容回答问题。

文件内容
“LangChain v1.0版本在2025年10月发布。该版本强调了生产环境的稳定性和代理(Agent)的构建。LlamaIndex则专注于RAG应用的优化。”

LangChain 实现(模块化、显式控制)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import os
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.document_loaders import TextLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain_community.vectorstores import FAISS
from langchain.chains import create_retrieval_chain
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain_core.prompts import ChatPromptTemplate

# 1. 加载文档
loader = TextLoader("./document.txt")
documents = loader.load()

# 2. 切分文本
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_documents(documents)

# 3. 构建向量库
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(texts, embeddings)
retriever = vectorstore.as_retriever()

# 4. 组装 RAG 链
prompt = ChatPromptTemplate.from_template("""
仅根据以下上下文回答问题:
<context>
{context}
</context>

问题: {input}
""")
llm = ChatOpenAI()
document_chain = create_stuff_documents_chain(llm, prompt)
retrieval_chain = create_retrieval_chain(retriever, document_chain)

# 5. 执行查询
response = retrieval_chain.invoke({"input": "LangChain v1.0是什么时候发布的?"})
print(response["answer"])
# 输出: LangChain v1.0版本在2025年10月发布。
LlamaIndex 实现(高层抽象、开箱即用)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import os
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader

# 1. 自动加载并索引
documents = SimpleDirectoryReader(input_files=["./document.txt"]).load_data()
index = VectorStoreIndex.from_documents(documents)

# 2. 创建查询引擎
query_engine = index.as_query_engine()

# 3. 执行查询
response = query_engine.query("LangChain v1.0是什么时候发布的?")
print(response)
# 输出: LangChain v1.0版本在2025年10月发布。

对比可见

  • LlamaIndex 以更少的代码实现相同功能,适合标准 RAG 场景;
  • LangChain 虽步骤更多,但每一步均可定制,适合需要精细控制的复杂应用。

LangChain 的典型应用场景

得益于其灵活性,LangChain 已被广泛应用于多个领域:

  • 智能客服系统:集成企业知识库,提供 7×24 小时精准问答;
  • 研究助理:自动检索文献、分析数据、生成报告;
  • 代码辅助:将自然语言转化为可执行代码,或解释复杂逻辑;
  • 业务流程自动化:构建可调用 API、操作数据库的智能代理,自动处理订单、生成报表、发送通知等。
本博客所有内容无特殊标注均为大卷学长原创内容,复制请保留原文出处。
Built with Hugo
Theme Stack designed by Jimmy