LangChain / 闯关模式

LangChain 入门到实战

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

一句话: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把多个步骤串起来
ToolAI 可以调用的工具
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.pyprompt、model、chain
tools.pyAI 可调用工具
retrievers.pyRAG 检索逻辑
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 + 工具

总结表

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

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

参考资料