前言:AI 应用开发的“三驾马车”

在 LLM(大语言模型)爆火的初期,开发者只需调个 OpenAI 的 API 就能做一个简单的对话 Demo。但当我们要构建一个生产级别具备私有知识库(RAG)能够自我纠错(Agent)可监控的系统时,简单的 API 调用就显得捉襟见肘。

这时,LangChain 生态系统应运而生。今天,我们将深度探讨这个生态中的“三驾马车”:

  1. LangChain:基础组件库,AI 的“武器库”。

  2. LangGraph:循环流程调度器,AI 的“指挥部”。

  3. LangSmith:全生命周期观测平台,AI 的“监控室”。


一、 LangChain:大模型应用的基石

1. 背景:消除“适配焦虑”

早期的 AI 开发面临两大痛点:一是模型供应商接口不一(OpenAI, Anthropic, Google 各写一套);二是缺乏对数据处理、Prompt 管理的标准流程。LangChain 的出现,通过高度抽象,让开发者可以用一套逻辑切换不同模型,像搭积木一样组合功能。

2. 核心 Demo:构建一个简单的 RAG 问答链

我们来看一个最经典的使用场景:基于私有文档的问答(Chain 模式)。

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

# 1. 定义模型
model = ChatOpenAI(model="gpt-4o")

# 2. 定义 Prompt 模板
prompt = ChatPromptTemplate.from_template("请根据以下背景知识回答问题:\n背景:{context}\n问题:{question}")

# 3. 使用 LCEL (LangChain Expression Language) 组装链
chain = prompt | model | StrOutputParser()

# 4. 运行
response = chain.invoke({
    "context": "LangChain 是一个用于构建 LLM 应用的框架。",
    "question": "LangChain 是做什么的?"
})
print(response)

解析:这里使用了 LangChain 标志性的管道操作符 |,将 Prompt、模型和解析器串联起来。这种线性逻辑非常简洁。


二、 LangGraph:构建有“灵魂”的智能体(Agent)

1. 背景:跳出“线性”的诅咒

LangChain 的普通 Chain 是单向的:输入 -> A -> B -> 输出。
但在实际业务中,AI 需要循环

  • AI 搜索了信息 -> 发现信息不全 -> 返回再搜一次。

  • AI 写了代码 -> 运行报错 -> 返回修改代码再试。

这种带有“回退”和“状态保存”的复杂逻辑,普通的 Chain 很难胜任。LangGraph 引入了“状态机”和“图”的概念,完美解决了这个问题。

2. 核心 Demo:一个具备“自我修正”逻辑的 Agent

想象一个场景:AI 生成一段回答,如果长度不够,就必须重写。

from langgraph.graph import StateGraph, END
from typing import TypedDict

# 定义状态对象
class AgentState(TypedDict):
    content: str
    count: int

# 节点1:生成内容
def generator(state: AgentState):
    return {"content": "LangGraph 让 Agent 更有序。", "count": state.get("count", 0) + 1}

# 节点2:检查逻辑(判断是否需要循环)
def check_length(state: AgentState):
    if len(state["content"]) < 20:
        return "re_generate" # 长度不够,回到生成节点
    return "end"

# 构建图
workflow = StateGraph(AgentState)
workflow.add_node("generate_node", generator)

# 设置逻辑连线
workflow.set_entry_point("generate_node")
workflow.add_conditional_edges(
    "generate_node",
    check_length,
    {
        "re_generate": "generate_node", # 循环
        "end": END
    }
)

app = workflow.compile()
# 运行后,它会不断循环直到满足 check_length 的条件

解析:LangGraph 将 AI 的思考过程拆解为“节点(Node)”和“边(Edge)”,支持循环往复,是目前开发复杂 Agent 的首选。


三、 LangSmith:让 AI 不再是“黑盒”

1. 背景:解决“生产恐惧症”

AI 应用上线后,最怕用户反馈:

  • “AI 刚才胡说八道了,但我不知道 Prompt 哪里出错了。”

  • “这一条请求怎么用了 30 秒?哪个环节卡住了?”

LangSmith 就是为了解决这些问题。它不需要你写复杂的业务逻辑,而是一个调试和评估平台

2. 如何使用

你不需要修改业务代码,只需在环境变量中开启:

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY="你的key"

开启后,你的每一次 chain.invoke 都会被自动记录在 LangSmith 的网页后台。

你能看到什么?

  • Trace(追踪):清晰显示每一层调用。你可以看到原始 Prompt 发给 OpenAI 之前到底长什么样。

  • Annotation(标注):你可以给 AI 的回答打分,建立测试集。

  • Evaluation(评估):当你修改了 Prompt,LangSmith 可以自动跑 100 个案例,告诉你准确率是上升了还是下降了。


四、 深度对比:它们之间的关系

维度 LangChain (核心) LangGraph LangSmith
角色 基础砖块 架构设计图 质检与监控
逻辑流 线性 (A -> B -> C) 循环 (可回退、可跳转) N/A (记录所有流)
解决痛点 快速对接各种模型和工具 解决 Agent 逻辑混乱和循环问题 解决 AI 不可观测、难调试问题
开发阶段 原型开发阶段 复杂逻辑设计阶段 测试与生产运行阶段
比喻 各种功能的乐高零件 能够指挥乐高机器人动的程序逻辑 记录机器人运行日志的记录仪

五、 总结:如何选择?

  • 如果你只是想给自己的应用加一个简单的问答功能或 RAG,LangChain 足够了。

  • 如果你想开发一个可以自主决策、自我纠错、多步推理的 Agent(比如自动编程助手、复杂客服),那么 LangGraph 是必修课。

  • 如果你打算将应用交付给客户或上线运营,为了保证质量和排查错误,LangSmith 是必须接入的设施。

LangChain 负责“能跑”,LangGraph 负责“跑得聪明”,LangSmith 负责“跑得稳”。 掌握了这三者,你就掌握了当前大模型应用开发的全套武功秘籍。


结语

AI 的开发范式正在从“玄学”转向“工程化”。通过 LangChain 生态,我们可以像构建传统软件一样,严谨地构建、调度和优化 AI 应用。希望这篇分享能帮你理清思路,开启你的 AI 开发者之旅!


(注:代码为简化示例,实际使用需安装对应库:pip install langchain langgraph langsmith)

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐