Level 19 / 阅读练习

LangChain 入门到实战

理解模型、提示词、LCEL、工具、Agent、RAG,以及如何放进后端项目。

Progress

阅读中

0/4 步完成 / 阅读后完成练习才算通关

Practice

本关怎么过

  • 读完正文后确认完成阅读
  • 完成 3 道选择题练习
  • 答错时看解释,再回到正文补理解

一句话:LangChain 是一套帮你把大模型、提示词、工具、知识库和业务代码串起来的 AI 应用开发框架。

本篇学完你会什么:知道 LangChain 解决什么问题,能写一个最小 AI 助手,理解模型、消息、提示词、工具、Agent、RAG 和工程落地边界。文章里的代码按 LangChain 当前 Python 主线写法整理,同时保留 OpenAI 兼容接口的说明。

1. LangChain 解决什么问题

直接调用大模型 API 可以完成最简单的聊天:

用户问题 -> 大模型 -> 回答

但真实 AI 应用通常不止这一步。

它可能需要:

  • 先整理用户输入
  • 套提示词模板
  • 调模型
  • 调工具
  • 查知识库
  • 记住对话历史
  • 输出结构化结果
  • 记录日志和成本

LangChain 的价值就是:帮你把这些步骤组织起来。

LangChain AI 应用流程图

2. 先用餐厅后厨理解 LangChain

你可以把 AI 应用想成餐厅后厨。

后厨角色 LangChain 里对应什么
客人点单 用户输入
菜单模板 Prompt Template
厨师 Chat Model
刀具、锅、秤 Tools
查菜谱 Retriever / RAG
后厨流程 Chain / LCEL
主管厨师 Agent

只问模型一句话,像客人直接问厨师。

LangChain 像一套后厨流程:谁先处理,谁查资料,谁调用工具,最后怎么出餐,都能安排清楚。

3. 核心概念地图

先记住 8 个词:

名词 大白话
Chat Model 会聊天的大模型
Message 对话消息
Prompt Template 提示词模板
Chain / LCEL 把多个步骤串起来
Tool AI 可以调用的工具
Agent 会判断下一步该做什么的 AI 助手
Retriever 从资料里找相关内容
RAG 先查资料,再让模型回答

不要一开始就追求复杂 Agent。先把模型、提示词、工具、RAG 这四块吃透。

4. 安装依赖

基础安装:

pip install -U "langchain[openai]"

如果你用 OpenRouter 官方集成,可以另外安装:

pip install -U langchain-openrouter

如果你用 OpenAI 兼容接口,通常还需要配置:

export OPENAI_API_KEY="你的 key"
export OPENAI_BASE_URL="你的兼容接口地址"

不同模型供应商会有不同的集成包。初学阶段先选一个能稳定调用的模型,把流程跑通。后面要接 OpenRouter、Gemini、Claude、国内兼容接口时,再按服务商文档换配置。

5. 第一个模型调用

LangChain 现在更推荐先用 init_chat_model 创建模型客户端:

from langchain.chat_models import init_chat_model

model = init_chat_model("openai:gpt-4o-mini")

response = model.invoke("用一句话解释 LangChain 是什么")

print(response.content)

大白话:

  • init_chat_model:按供应商和模型名创建聊天模型客户端。
  • invoke:调用一次。
  • response.content:模型回答的正文。

如果你用 OpenRouter 官方集成,可以这样:

from langchain.chat_models import init_chat_model

model = init_chat_model("auto", model_provider="openrouter")

如果你的服务商只是提供 OpenAI 兼容接口,也可以直接用 ChatOpenAI,把 base_urlapi_key 换成自己的服务商配置:

from langchain_openai import ChatOpenAI

model = ChatOpenAI(
    model="openai/gpt-4o-mini",
    base_url="https://openrouter.ai/api/v1",
    api_key="你的 key",
)

实际参数以你使用的服务商为准。

6. Prompt Template 提示词模板

不要每次手写一整段提示词,可以做模板。

from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个耐心的 Python 老师,用大白话解释。"),
    ("user", "请解释:{topic}"),
])

messages = prompt.invoke({"topic": "FastAPI 的 Depends"})

模板的好处:

  • 提示词结构稳定
  • 变量清楚
  • 更容易复用
  • 后面可以接模型、工具、RAG

7. LCEL:把步骤串起来

LCEL 可以理解成 LangChain 的流水线写法。

chain = prompt | model

response = chain.invoke({"topic": "Redis 缓存"})

print(response.content)

这个 | 可以读成:

先把变量放进 prompt
再把 prompt 结果交给 model
最后拿到回答

如果你做过后端,可以把它理解成一个处理管道。

8. Tool:让 AI 会调用工具

普通模型只会生成文字。Tool 让它可以调用你提供的函数。

from langchain_core.tools import tool

@tool
def get_weather(city: str) -> str:
    """查询城市天气。"""
    return f"{city} 今天晴,适合出门。"

工具要写清楚:

  • 工具名
  • 参数
  • 返回值
  • 这个工具什么时候用

大白话:Tool 就是你给 AI 的外部能力,比如查数据库、查天气、发请求、调内部 API。

注意:定义 Tool 不等于模型一定会自己调用它。你还要把工具绑定给模型,或者交给 Agent 统一调度。

model_with_tools = model.bind_tools([get_weather])

response = model_with_tools.invoke("广州今天适合出门吗?")

这段代码的意思是:模型回答问题时,可以选择调用 get_weather 这个工具。

9. Agent:会自己决定下一步的助手

Agent 比普通 Chain 更像“会做事的助手”。

它不只是:

输入 -> 输出

而是:

理解任务

判断要不要调用工具

拿到工具结果

继续思考

给最终答案

适合 Agent 的场景:

  • 任务步骤不固定
  • 需要根据中间结果决定下一步
  • 需要调用多个工具
  • 需要边查边回答

不适合 Agent 的场景:

  • 固定流程
  • 简单分类
  • 单次摘要
  • 明确的一步模型调用

这些场景用普通 Chain 更稳。

一个最小 Agent 可以这样写:

from langchain.agents import create_agent

agent = create_agent(
    model="openai:gpt-4o-mini",
    tools=[get_weather],
    system_prompt="你是一个谨慎的助手。需要天气信息时先调用工具。"
)

result = agent.invoke({
    "messages": [
        {"role": "user", "content": "广州今天适合出门吗?"}
    ]
})

大白话:Agent = 模型 + 工具 + 一套循环。它会判断要不要调用工具,拿到工具结果后再继续生成最终回答。

这里的 openai:gpt-4o-mini 只是示例模型名,实际项目要换成你账号可用、成本可接受的模型。

10. RAG:让 AI 查你的资料再回答

RAG 的完整名字是 Retrieval-Augmented Generation,可以理解成“先查资料,再生成回答”。

流程:

用户问题

把问题拿去资料库搜索

找到相关片段

把片段和问题一起交给模型

模型根据资料回答

RAG 适合:

  • 企业知识库
  • 项目文档问答
  • PDF 问答
  • 客服知识库
  • 代码库说明

RAG 不等于“把文件全部塞给模型”。正确做法是先切分、索引、检索,再把最相关的片段给模型。

LangChain RAG 检索增强生成流程

11. LangGraph、LangSmith、部署服务分别是什么

LangChain 生态里还有几个常见名字。

名字 大白话 什么时候学
LangChain 串模型、提示词、工具、RAG 的基础框架 现在
LangGraph 做更复杂、更可控的多步骤 Agent 流程 学完基础 Agent 后
LangSmith 调试、追踪、评估 AI 调用过程 做真实项目时
LangServe / LangGraph Server 把 LangChain 或 LangGraph 应用发布成服务 需要对外提供服务时

初学顺序:

LangChain 基础

RAG 和 Tools

简单 Agent

LangSmith 调试

LangGraph 编排复杂流程

12. 在后端项目里怎么放 LangChain

不要把 LangChain 代码全塞进 FastAPI 路由。

推荐结构:

app/
  modules/
    ai_lab/
      api.py
      schemas.py
      service.py
      chains.py
      tools.py
      retrievers.py
  core/
    ai_config.py

职责分工:

文件 放什么
api.py 接 HTTP 请求
schemas.py 请求和响应格式
service.py 业务流程
chains.py prompt、model、chain
tools.py AI 可调用工具
retrievers.py RAG 检索逻辑
ai_config.py 模型配置和 key

这样以后你换模型、加工具、改 RAG,不会把 API 层搅乱。

13. 常见错误

问题 原因 解决
一上来就写复杂 Agent 基础链路没跑通 先写 model + prompt
提示词散落各处 没有模板 用 Prompt Template
模型回答胡说 没有提供资料或校验 用 RAG、引用来源、结果校验
RAG 效果差 切分和检索粗糙 优化 chunk、metadata、top_k
调试困难 没有记录中间步骤 加日志或 LangSmith
成本失控 每次塞太多上下文 控制输入长度和检索数量
工具乱调用 工具描述不清楚 写清工具用途和参数

14. 学习顺序和练习项目

建议按这个顺序学:

  1. 先会直接调模型。
  2. 再会 Prompt Template。
  3. 再会 LCEL 串流程。
  4. 再会 Tool。
  5. 再做一个简单 Agent。
  6. 再做 RAG。
  7. 最后学习 LangSmith 和 LangGraph。

推荐练习项目:

项目 练什么
大白话解释器 prompt + model
SQL 解释助手 prompt template + 输出格式
天气问答助手 tool calling
项目文档问答 RAG
AI 学习助手 RAG + 工具 + 历史记录
自动排错助手 Agent + 工具

总结表

名词 大白话
LangChain AI 应用开发工具箱
Chat Model 会聊天的大模型
Message 对话消息
Prompt Template 提示词模板
LCEL LangChain 流水线
Tool AI 可调用的外部能力
Agent 会决定下一步的助手
Retriever 查资料的人
RAG 先查资料再回答
LangGraph 更复杂的 Agent 流程编排
LangSmith 调试和观察 AI 调用过程
LangServe / LangGraph Server 把 AI 流程发布成服务

下一篇建议:结合你的后端项目,做一个 AI 实验室 小接口:输入问题,后端用 LangChain 套提示词调用模型,返回大白话解释。

参考资料

Checkpoint

读完后做题闯关

读完后做选择题检验理解,答错会显示解释。

0/3
先完成阅读

读完正文后点击“我已读完,进入练习”,题目会变成可答状态。

第 1 题

AI 应用学习时,除了模型还要重点看什么?

第 2 题

LangChain 这类工具更适合帮你组织什么?

第 3 题

AI 全栈学习最容易漏掉哪一层?