LangChain + DeepSeek 实战拆解:从 LCEL 到智能体,如何真正“做出”一个可控 AI 系统?

大模型很强。

但如果你只是:

复制代码
llm.invoke("帮我写点东西")

那你做的不是系统,只是调用接口。

真正的工程问题是:

  • 多步骤推理怎么组织?

  • 外部数据怎么接入?

  • 工具怎么安全调用?

  • 对话怎么长期记忆?

  • 结果怎么结构化输出?

这才是 LangChain 解决的问题。


目录

  1. LangChain 到底解决什么问题?

  2. 环境搭建:DeepSeek + LiteLLM

  3. LCEL 新范式:Prompt | LLM | Parser

  4. 流式输出如何实现?

  5. RAG:检索链路如何接入?

  6. 记忆机制的新写法

  7. Agent 与工具调用

  8. 一个完整对话系统示例

  9. LangChain 在工程里的真实价值


一、LangChain 到底解决什么问题?

单独的 LLM 像一个聪明的大脑。

但它没有:

  • 手(不能执行函数)

  • 眼睛(不能实时查资料)

  • 记忆库(上下文有限)

  • 任务调度系统(不会组织复杂流程)

LangChain 的本质,是一套可组合的 LLM 编排框架

它不增强模型能力,它增强:

  • 可控性

  • 可组合性

  • 可扩展性

  • 工程稳定性


二、环境搭建:DeepSeek + LiteLLM

安装:

复制代码
pip install langchain langchain-openai langchain-community python-dotenv -i https://mirrors.aliyun.com/pypi/simple/
pip install -U litellm

.env 文件:

复制代码
DEEPSEEK_API_KEY=sk-xxx
DEEPSEEK_BASE_URL=https://api.deepseek.com
DEEPSEEK_MODEL=deepseek-chat

初始化模型:

复制代码
from langchain_openai import ChatOpenAI
import os

llm = ChatOpenAI(
    model=os.getenv("DEEPSEEK_MODEL"),
    openai_api_key=os.getenv("DEEPSEEK_API_KEY"),
    openai_api_base=os.getenv("DEEPSEEK_BASE_URL"),
    temperature=0.7
)

这里有个工程重点:

LangChain 不直接适配所有模型,它通过 LiteLLM 做统一接口抽象。

这一步是"工程层"的关键。


三、LCEL:Prompt | LLM | Parser

旧版 LLMChain 已经被弃用。

现在的标准写法是 LCEL(LangChain Expression Language)。

核心结构:

复制代码
Prompt → Model → OutputParser

代码示例:

复制代码
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一位技术专家,用通俗语言解释概念。"),
    ("user", "{concept}")
])

chain = prompt | llm | StrOutputParser()

result = chain.invoke({"concept": "量子纠缠"})
print(result)

为什么必须要 Parser?

因为:

模型输出是 Message 对象 工程系统需要字符串或结构化 JSON

没有 Parser,工程不可控。


四、流式输出(Streaming)

真实应用里,你不可能等 10 秒再一次性输出。

只需要把 .invoke() 换成 .stream()

复制代码
for chunk in chain.stream({"concept": "递归神经网络"}):
    print(chunk, end="", flush=True)

流式输出是:

  • 聊天机器人

  • WebSocket 应用

  • 实时界面

的基础能力。


五、RAG:检索增强生成

LangChain 把 RAG 拆成清晰的流水线:

复制代码
文档加载 → 文本切片 → 向量化 → 向量存储 → 检索器

示意结构:

复制代码
DocumentLoader
     ↓
TextSplitter
     ↓
Embeddings
     ↓
VectorStore
     ↓
Retriever
     ↓
LLM

关键点在于:

Retriever 现在是一个"可嵌入链的组件"。

不只是数据库查询,而是可参与推理流程。


六、记忆机制的新写法

旧版 ConversationBufferMemory 已经不推荐。

现在的写法是:

  • ChatMessageHistory

  • RunnableWithMessageHistory

记忆不再是链的属性。

而是一个独立的存储系统,通过 session_id 区分用户。

核心代码:

复制代码
with_message_history = RunnableWithMessageHistory(
    chain,
    get_session_history,
    input_messages_key="question",
    history_messages_key="history",
)

这意味着:

记忆可以持久化到 Redis / PostgreSQL。

工程级对话系统必须这样做。

学习资料


七、Agent 与工具调用

智能体的本质是:

  1. LLM 判断是否需要调用工具

  2. 调用工具

  3. 观察结果

  4. 再决定下一步

创建工具:

复制代码
from langchain.agents import create_tool_calling_agent

agent = create_tool_calling_agent(llm, tools, prompt)

核心机制是:

模型 → 决策 → Tool Call → 观察 → 最终回答

LangChain 现在推荐用 LangGraph 构建复杂 Agent。

因为多步骤推理本质是"状态机"。


八、一个完整的对话系统示例

带记忆的聊天机器人核心结构:

复制代码
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个乐于助人的 AI 助手。"),
    MessagesPlaceholder(variable_name="history"),
    ("human", "{question}")
])

chain = prompt | llm

然后通过 RunnableWithMessageHistory 管理会话。

结果就是:

AI 记得你叫小明。

这不是魔法,是工程结构。


九、LangChain 在工程里的真实价值

很多人误解 LangChain 是"封装模型"。

其实它解决的是:

  • 多步骤流程编排

  • 工具安全调用

  • RAG 标准化接入

  • 会话管理

  • 可测试结构

它让你从:

"写 Prompt 的人"

变成:

"设计 AI 系统架构的人"

这才是核心。


结尾

LangChain 不是模型。

它是 LLM 应用的"操作系统"。

当你真正用 LCEL 构建:

Prompt → 检索 → 工具 → 记忆 → 输出

你会发现,大模型只是其中一层。

真正决定系统稳定性的,是结构。

而结构,才是工程能力的分水岭。

相关推荐
tkevinjd8 小时前
基于LangChain的简易智能旅游助手Agent
langchain·agent
2301_764441338 小时前
claw-code:基于Claude Code架构的clean-room重写开源项目
人工智能·架构·开源
惜茶8 小时前
vue+SpringBoot(前后端交互)
java·vue.js·spring boot
杰克尼9 小时前
springCloud_day07(MQ高级)
java·spring·spring cloud
模拟器连接器曾工9 小时前
CCD定位与图像辨别的智能视觉检测系统
人工智能·计算机视觉·视觉检测·智能视觉检测系统
云栖梦泽9 小时前
AI安全合规与治理:行业发展趋势与职业展望
大数据·人工智能·安全
小陈工9 小时前
2026年4月2日技术资讯洞察:数据库融合革命、端侧AI突破与脑机接口产业化
开发语言·前端·数据库·人工智能·python·安全
happyprince9 小时前
2026年04月07日热门模型
人工智能
IT_陈寒9 小时前
Vue的这个响应式问题,坑了我整整两小时
前端·人工智能·后端
HIT_Weston9 小时前
41、【Agent】【OpenCode】本地代理分析(五)
javascript·人工智能·opencode