Skip to content

LangChain 生态学习与实战路径

面向 AI 产品经理 / FDE:不是为了背 API,而是为了把 LangChain、LangGraph、LangSmith 变成可落地的产品交付能力。

适用读者:会一点 Python 或愿意让 Codex / Claude Code 帮你写代码的人;正在做知识库问答、工作流助手、Agent 原型、企业内部 AI 工具、客户项目 PoC 的人。

核心来源:


一句话结论

LangChain 不是一个 Skill,也不是一个单独产品。它是一套 开源 AI 应用开发框架 + Agent 工程生态

你可以把它拆成三层:

名称它是什么你什么时候用
LangChainLLM 应用开发库快速接模型、工具、RAG、结构化输出、简单 Agent
LangGraph有状态 Agent / 工作流编排框架多步骤、可恢复、需要人工确认、长期运行的 Agent
LangSmith观测、调试、评测平台想知道 Agent 为什么答错、哪一步慢、哪个版本更好

一句话记住:

LangChain 负责“把 AI 应用搭起来”,LangGraph 负责“让 Agent 稳定跑完整流程”,LangSmith 负责“看见它怎么跑、怎么改进”。


先建立正确心智

1. LangChain 不是万能框架

它最适合做的是“把模型接进业务流程”:

  • 调用不同模型供应商
  • 把函数、API、数据库、搜索包装成工具
  • 给模型约束结构化输出
  • 把文档检索接进回答流程
  • 让 Agent 自己决定什么时候调用工具
  • 把每一步 trace 起来,方便调试和评测

它不适合替代所有业务代码。真实项目里,最稳的写法通常是:

普通业务逻辑自己写,LLM 只负责理解、生成、分类、规划、调用工具。

2. LangChain、Dify、LlamaIndex 怎么区分

工具更像什么更适合谁
DifyAI 应用平台产品验证、运营后台、低代码工作流
LangChainAI 应用开发框架FDE、工程团队、需要定制业务逻辑的人
LlamaIndex数据 / RAG 框架文档知识库、复杂检索、数据连接
LangGraphAgent 状态机长流程、多分支、可中断可恢复的 Agent
LangSmithAgent 观测评测平台需要上线、调优、对比版本的团队

对 AI 产品经理来说,LangChain 的价值不是“我亲自写多少代码”,而是你能看懂工程师在搭什么,能判断一个需求应该做成 RAG、工具调用、固定工作流,还是 Agent。

对 FDE 来说,LangChain 的价值是你可以快速把客户系统、内部数据、模型能力、评测闭环串起来。


安装与最小调用

1. 创建项目

bash
mkdir langchain-practice
cd langchain-practice
python -m venv .venv
source .venv/bin/activate
pip install -U langchain langchain-openai langgraph python-dotenv

如果你用其他模型供应商,就安装对应集成包,例如:

bash
pip install -U langchain-anthropic
pip install -U langchain-google-genai

2. 设置环境变量

不要把 key 写进代码,放到环境变量或 .env

bash
export OPENAI_API_KEY="你的 key"

项目里可以建一个 .env.example,只写变量名:

dotenv
OPENAI_API_KEY=
LANGSMITH_API_KEY=
LANGSMITH_TRACING=true
LANGSMITH_PROJECT=langchain-practice

3. 最小模型调用

python
from langchain.chat_models import init_chat_model

model = init_chat_model("openai:gpt-5.4")
response = model.invoke("用一句话解释 LangChain 是什么")

print(response.content)

这一步的意义:你先确认“模型调用”能跑通。后面所有 RAG、Agent、工具调用都是在这个基础上叠能力。


核心能力一:结构化输出

产品里最常见的失败不是模型不会回答,而是回答格式不可控。比如你要把客户反馈分类、把会议纪要变成行动项、把需求变成 PRD 字段,就不能只要一段自然语言。

场景

把一段用户反馈变成结构化字段:

  • 问题类型
  • 紧急程度
  • 涉及模块
  • 下一步建议

代码

python
from typing import Literal
from pydantic import BaseModel, Field
from langchain.chat_models import init_chat_model


class FeedbackTriage(BaseModel):
    category: Literal["bug", "feature", "support", "pricing", "other"]
    urgency: Literal["low", "medium", "high"]
    module: str = Field(description="涉及的产品模块")
    next_action: str = Field(description="建议下一步动作")


model = init_chat_model("openai:gpt-5.4")
structured_model = model.with_structured_output(FeedbackTriage)

result = structured_model.invoke(
    "客户说:移动端进入报表页经常白屏,明早要给领导演示,能不能马上修?"
)

print(result)

你要掌握的判断

如果结果要进入数据库、任务系统、飞书 Base、CRM、工单系统,就尽量用结构化输出。

如果只是写邮件、写总结、写解释,可以先用自然语言。


核心能力二:工具调用

工具调用是 Agent 的根。模型本身不能查数据库、发消息、读日历、调 API,但你可以把这些动作包装成工具,让模型在需要时调用。

场景

客户问“沈阳项目现在是什么状态”,Agent 需要调用项目查询工具,而不是凭空回答。

代码

python
from langchain.agents import create_agent


def get_project_status(project_name: str) -> str:
    """查询项目状态。project_name 是项目名称。"""
    mock_db = {
        "沈阳项目": "方案已确认,等待客户反馈第三轮报价。",
        "兰州职培": "课程大纲已完成,正在整理交付材料。",
    }
    return mock_db.get(project_name, "没有查到该项目。")


agent = create_agent(
    model="openai:gpt-5.4",
    tools=[get_project_status],
    system_prompt="你是项目助理。回答前必须先查项目状态,不要编造。"
)

result = agent.invoke({
    "messages": [
        {"role": "user", "content": "沈阳项目现在推进到哪了?"}
    ]
})

print(result["messages"][-1].content)

你要掌握的判断

能写成确定性函数的,就写成工具。

典型工具包括:

工具类型实战例子
查询类查项目状态、查库存、查排期、查客户信息
写入类创建任务、更新 CRM、写入飞书 Base
计算类报价、排班、评分、优先级计算
操作类发消息、生成文档、创建日程、触发审批

产品设计上,工具说明要像“给新人交代工作”一样明确。描述越含糊,Agent 越容易误用。


核心能力三:RAG 知识库问答

RAG 不是“把文档塞给模型”。更准确地说,它是:

先从知识库找相关材料,再让模型基于材料回答。

两种 RAG

模式特点适合场景
固定 RAG Chain每次都检索,再回答FAQ、制度问答、产品文档问答
Agentic RAGAgent 自己决定是否检索复杂问答、需要多次搜索、需要工具组合

一个最小 RAG 工具

python
from langchain.agents import create_agent
from langchain.tools import tool

DOCS = [
    "Harness Engineering 的核心是用确定性系统约束概率模型。",
    "LangGraph 适合长期运行、有状态、可中断恢复的 Agent。",
    "LangSmith 用于追踪、调试和评测 LLM 应用。"
]


@tool
def search_knowledge_base(query: str) -> str:
    """搜索内部知识库,返回与 query 最相关的资料。"""
    hits = [doc for doc in DOCS if any(word in doc for word in query.split())]
    return "\n".join(hits[:3]) or "没有找到相关资料。"


agent = create_agent(
    model="openai:gpt-5.4",
    tools=[search_knowledge_base],
    system_prompt="回答知识问题前,优先搜索知识库,并引用搜索结果。"
)

result = agent.invoke({
    "messages": [
        {"role": "user", "content": "LangGraph 适合做什么?"}
    ]
})

print(result["messages"][-1].content)

真实项目里,你会把 DOCS 换成:

  • Markdown / PDF / Word 文档
  • 飞书文档
  • 客户资料
  • 产品手册
  • 数据库记录
  • 向量数据库检索结果

FDE 的实战判断

RAG 最容易失败在三个地方:

失败点表现应对
文档切片太粗找到一堆不相关内容按标题、段落、业务实体切片
检索条件太弱答案缺关键事实混合检索:关键词 + 向量 + 元数据
没有评测集你不知道是否变好建 20-50 条黄金问题集

核心能力四:LangGraph 长流程 Agent

当任务只有一步,用普通函数就够了。当任务有 3-5 步,LangChain Agent 可以跑。当任务需要状态、分支、暂停、人工确认、重试和恢复,就该看 LangGraph。

典型场景

比如“客户反馈处理 Agent”:

  1. 读取客户反馈
  2. 分类和定级
  3. 查知识库和历史工单
  4. 生成处理建议
  5. 高风险时等待人工确认
  6. 写入飞书 Base / Jira
  7. 发送群通知

这类流程不能只靠模型自由发挥。它需要明确节点。

最小 LangGraph

python
from typing import TypedDict
from langgraph.graph import StateGraph, START, END
from langchain.chat_models import init_chat_model


class FeedbackState(TypedDict):
    feedback: str
    category: str
    response: str


model = init_chat_model("openai:gpt-5.4")


def classify(state: FeedbackState) -> FeedbackState:
    result = model.invoke(
        f"把这条客户反馈分类为 bug/feature/support/other:{state['feedback']}"
    )
    return {**state, "category": result.content}


def draft_response(state: FeedbackState) -> FeedbackState:
    result = model.invoke(
        f"反馈类型:{state['category']}\n反馈内容:{state['feedback']}\n请生成客服回复。"
    )
    return {**state, "response": result.content}


builder = StateGraph(FeedbackState)
builder.add_node("classify", classify)
builder.add_node("draft_response", draft_response)
builder.add_edge(START, "classify")
builder.add_edge("classify", "draft_response")
builder.add_edge("draft_response", END)

graph = builder.compile()

result = graph.invoke({
    "feedback": "报表页打不开,明天客户验收要用。",
    "category": "",
    "response": "",
})

print(result["response"])

你要掌握的判断

用 LangGraph 时,不要一上来就画复杂大图。先把业务流程写成节点:

业务节点是否需要模型是否需要工具是否需要人工
分类
查询资料
生成方案可能
高风险审批可能
写入系统可能

这张表就是 PM 和 FDE 的共同语言。


核心能力五:LangSmith 观测与评测

只要你做 AI 应用,上线前一定会遇到这几个问题:

  • 为什么这次答错了?
  • 它到底调用了哪个工具?
  • 哪一步最慢?
  • 改了 prompt 后有没有变好?
  • 这个模型更贵,但质量是否真的更好?

LangSmith 解决的是这些问题。

开启 tracing

bash
export LANGSMITH_TRACING=true
export LANGSMITH_API_KEY="你的 LangSmith key"
export LANGSMITH_PROJECT="customer-feedback-agent"

然后你的 LangChain / LangGraph 调用会被记录下来,方便你看完整执行路径。

不上 LangSmith 也要保留这套意识

如果你暂时不用 LangSmith,也至少要自己记录:

字段为什么重要
input复现问题
retrieved_docs判断检索是否失败
tool_calls判断 Agent 是否误用工具
final_output做人工评审
latency_ms看性能
cost_estimate控成本
version对比 prompt / 模型 / 检索配置

这也是为什么 Langfuse、Promptfoo、Ragas 这些工具值得一起看。它们都在解决“AI 应用如何稳定迭代”的问题。


三个最值得做的实战项目

项目一:内部知识库问答助手

目标:把你的 secondbrain、项目文档、培训资料接成一个问答助手。

技术路线:

模块推荐做法
文档源Markdown / PDF / 飞书文档导出
检索先关键词,再向量检索
回答LangChain RAG Chain
引用每次回答带来源路径
评测20 条黄金问题集

最小交付:

  • 输入一个问题
  • 返回答案
  • 列出引用文档
  • 如果没找到依据,明确说“不确定”

可以应用到你的实战:

  • 项目复盘问答
  • 培训资料助手
  • 客户交付文档问答
  • AI 产品经理知识库

项目二:客户反馈分流 Agent

目标:把群消息、表单、客服记录里的反馈自动分类、定级、写入任务池。

技术路线:

模块推荐做法
输入飞书群消息 / CSV / 表单
分类结构化输出
查重检索历史反馈
写入工具调用写 Base / Jira
通知高优先级发群消息

最小交付:

  • 读一批反馈
  • 输出结构化分类
  • 自动生成下一步建议
  • 高优先级单独标记

可以应用到你的实战:

  • 客户项目需求池
  • 培训产品反馈归纳
  • 数字人产品问题收集
  • 内部工具改进 backlog

项目三:长流程交付助理

目标:让 Agent 帮你从“客户需求”推进到“方案草稿、风险清单、任务拆解、交付计划”。

技术路线:

模块推荐做法
流程编排LangGraph
知识输入RAG
行动工具创建任务、写文档、发消息
人工确认高风险节点暂停
观测LangSmith / 本地日志

最小交付:

  • 输入客户需求
  • 输出需求澄清问题
  • 生成初版方案
  • 拆任务
  • 人工确认后写入项目文档

可以应用到你的实战:

  • 方案售前
  • 培训课程定制
  • 项目启动会准备
  • 周报 / 复盘自动化

30 天学习路线

第 1 周:跑通基础调用

目标:你能解释 LangChain 是什么,并跑通模型调用、结构化输出、工具调用。

每天任务:

学什么做什么
Day 1LangChain / LangGraph / LangSmith 区别画一张三者关系图
Day 2模型调用跑通 init_chat_model
Day 3Prompt + 输出做一个总结器
Day 4结构化输出做客户反馈分类
Day 5工具调用包一个查询项目状态工具
Day 6Agent让 Agent 自己决定是否调用工具
Day 7复盘写出 3 个你工作里可用的工具

验收标准:

  • 你能写出一个 50 行以内的小 Agent
  • 你知道什么时候该用结构化输出
  • 你知道工具描述为什么重要

第 2 周:做第一个 RAG

目标:把一批文档接进问答流程。

每天任务:

学什么做什么
Day 8文档加载读 Markdown 文档
Day 9切片按标题和段落切分
Day 10检索先做关键词检索
Day 11向量检索接一个本地或云向量库
Day 12RAG Chain基于材料回答
Day 13引用来源返回文件名和段落
Day 14评测集写 20 条黄金问题

验收标准:

  • 回答能带来源
  • 找不到材料时不编
  • 你能判断是“检索错了”还是“生成错了”

第 3 周:上 LangGraph

目标:把一个多步骤业务流程做成状态机。

每天任务:

学什么做什么
Day 15StateGraph定义状态结构
Day 16节点把业务流程拆成节点
Day 17条件分支高优先级走不同路径
Day 18工具节点接查询和写入工具
Day 19人工确认高风险动作前暂停
Day 20错误处理给工具失败加重试和降级
Day 21复盘画出你的交付助理流程图

验收标准:

  • 你的流程不是纯 prompt,而是明确节点
  • 每个节点知道输入、输出、失败怎么办
  • 你能解释为什么这件事要用 LangGraph

第 4 周:评测、观测和上线意识

目标:把 Demo 变成可改进的系统。

每天任务:

学什么做什么
Day 22Trace开启 LangSmith 或本地日志
Day 23Dataset整理 30 条测试样例
Day 24Eval设计正确性、引用、格式指标
Day 25版本对比比较两个 prompt
Day 26成本记录 token、耗时、失败率
Day 27安全边界给工具加 allow / deny / confirm
Day 28发布做一个可演示的 CLI 或 Web 页面
Day 29复盘写一页产品化判断
Day 30迁移把 demo 接入真实项目数据

验收标准:

  • 你有一组固定测试题
  • 你能对比版本好坏
  • 你知道上线前至少要看哪些 trace 和失败样例

你在真实项目里怎么用

作为 AI 产品经理

你要把需求拆成这 5 个问题:

问题示例
用户输入是什么群消息、文档、表单、语音转写、客户问题
系统要查什么知识库、项目状态、历史工单、CRM
哪些动作必须确定性完成写任务、发消息、改字段、生成链接
哪些地方必须人工确认发给客户、改价格、删除数据、高风险结论
怎么判断效果变好正确率、引用命中率、人工修改率、节省时间

你不需要一开始就关心所有 API。你要先会把业务需求翻译成:

输入 → 检索 → 推理 → 工具 → 人工确认 → 输出 → 评测。

作为 FDE

你要把原型拆成这 5 层:

你要交付什么
Model模型配置、fallback、成本控制
Tools客户系统 API 包装、参数校验、权限边界
Retrieval文档索引、检索、引用、更新策略
OrchestrationLangChain Agent 或 LangGraph workflow
Observabilitytrace、日志、评测集、版本对比

FDE 最有价值的不是“把 demo 跑起来”,而是能在客户场景里说明:

  • 为什么这一步要自动化
  • 为什么这一步不能自动化
  • 为什么这里要人工确认
  • 为什么这个错误能被发现
  • 为什么下一版会变好

什么时候别用 LangChain

下面这些情况,可以先不用:

情况更好的选择
只是单次调用模型直接用模型 SDK
只是低代码快速验证Dify / Flowise
主要是文档索引和检索LlamaIndex 也许更合适
业务流程完全确定普通后端代码
还没有评测和日志意识先补最小日志和测试集

LangChain 的价值在“组合复杂能力”。如果你的任务只是 prompt → answer,它反而可能增加复杂度。


安全与上线清单

上线前至少检查:

  • 所有 API key 都来自环境变量
  • 工具参数用 schema 校验
  • 写入类工具有权限边界
  • 高风险动作需要人工确认
  • 用户输入不能直接变成 SQL、文件路径、命令参数
  • RAG 回答必须带来源或说明不确定
  • 每次运行有 trace 或日志
  • 有固定评测集
  • 能回滚 prompt / 模型 / 检索配置

尤其记住一句:

LLM 输出也是不可信输入。它调用工具前,参数仍然要校验。


推荐学习顺序

先学:

  1. LangChain overview
  2. Model invoke
  3. Structured output
  4. Tool calling
  5. RAG
  6. LangGraph StateGraph
  7. LangSmith tracing / eval

先不要急着学:

  • 所有集成包
  • 复杂 multi-agent
  • 花哨 memory
  • 没有业务场景的 agent 模板
  • 一上来就做完整平台

最好的学习方式是:每学一个概念,就立刻把它映射到你自己的项目里。

概念你的项目映射
Tool calling飞书任务、Base、项目状态、客户资料
RAGsecondbrain、项目文档、培训材料
Structured output反馈分类、需求字段、风险清单
LangGraph售前方案、周报、交付助理
LangSmith版本对比、错误复盘、客户演示证据

最小实战模板

你可以把任何 AI 项目先写成这个模板:

text
项目名称:
目标用户:
输入来源:
需要查的资料:
可调用工具:
需要人工确认的动作:
输出格式:
失败时怎么办:
评测样例:
上线指标:

例子:

text
项目名称:客户反馈分流 Agent
目标用户:产品经理、客户成功
输入来源:飞书群消息、表单、CSV
需要查的资料:历史反馈、产品模块说明、当前 roadmap
可调用工具:写入飞书 Base、创建任务、发送群通知
需要人工确认的动作:给客户承诺排期、标记高风险、创建 P0 任务
输出格式:结构化分类 + 下一步建议 + 来源链接
失败时怎么办:写入待人工处理队列
评测样例:50 条历史反馈
上线指标:人工分类时间下降 50%,高优反馈漏判率低于 5%

这个模板比“我想做一个 Agent”更有用。它把项目从想象拉回可交付。


最后判断

如果你只想做一次演示,Dify 可能更快。

如果你想真正理解 AI 应用怎么工程化,LangChain 生态值得系统学。

如果你要把 Agent 做到能长期跑、能追踪、能评测、能接客户系统,那学习顺序应该是:

text
LangChain 基础能力
→ LangGraph 流程控制
→ LangSmith / Langfuse 观测评测
→ 接入真实业务工具
→ 建立评测集和版本迭代机制

真正的实战不是“会调模型”,而是你能把一个模糊业务需求拆成输入、检索、工具、流程、观测和评测,然后让它一版一版变稳。

Karaithy Wiki · 个人知识库