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 → 检索 → 工具 → 记忆 → 输出

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

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

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

相关推荐
新缸中之脑2 小时前
TADA:零幻觉 TTS 模型
人工智能·语音识别
96772 小时前
java数据类型解析以及相关八股文的题 String 到底是基本类型还是引用类型?
java·开发语言·python
智算菩萨2 小时前
通往AGI之路:基于性能与通用性的等级划分框架深度解析
论文阅读·人工智能·深度学习·ai·agi
vivo互联网技术2 小时前
ICLR2026 | Ada-RefSR: 自适应隐式相关建模,开启“信而有证”的参考超分新范式
人工智能
GJGCY2 小时前
2026 RPA平台技术路径对比:AI融合、扩展性与信创适配实测
人工智能·ai·rpa·智能体·数字员工
乐迪信息2 小时前
乐迪信息:AI防爆摄像机识别船舶违规明火作业
大数据·人工智能·安全·计算机视觉·目标跟踪
码界奇点2 小时前
基于Java GUI和Access数据库的图书馆管理系统设计与实现
java·开发语言·数据库·毕业设计·源代码管理
爱喝可乐的老王2 小时前
LangChain内置中间件总结
中间件·langchain
Moshow郑锴2 小时前
2026.3 AWS连环事故原因分析-究竟是裁员导致还是AI失控?
人工智能·云计算·aws·incident