霍格沃兹测试开发学社

《Python测试开发进阶训练营》(随到随学!)
2023年第2期《Python全栈开发与自动化测试班》(开班在即)
报名联系weixin/qq:2314507862

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

大模型很强。

但如果你只是:

llm.invoke("帮我写点东西")
那你做的不是系统,只是调用接口。

真正的工程问题是:

多步骤推理怎么组织?
外部数据怎么接入?
工具怎么安全调用?
对话怎么长期记忆?
结果怎么结构化输出?
这才是 LangChain 解决的问题。

目录
LangChain 到底解决什么问题?
环境搭建:DeepSeek + LiteLLM
LCEL 新范式:Prompt | LLM | Parser
流式输出如何实现?
RAG:检索链路如何接入?
记忆机制的新写法
Agent 与工具调用
一个完整对话系统示例
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。

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

学习资料
需要OpenClaw学习资料可以扫码进群领取!👇

image

七、Agent 与工具调用
智能体的本质是:

LLM 判断是否需要调用工具
调用工具
观察结果
再决定下一步
创建工具:

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

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

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

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

推荐学习
OpenClaw(龙虾)公开课,手把手带你打造24小时不休的AI打工人。

扫码进群,报名学习。

image

关于我们
霍格沃兹测试开发学社,隶属于 测吧(北京)科技有限公司,是一个面向软件测试爱好者的技术交流社区。

学社围绕现代软件测试工程体系展开,内容涵盖软件测试入门、自动化测试、性能测试、接口测试、测试开发、全栈测试,以及人工智能测试与 AI 在测试工程中的应用实践。

我们关注测试工程能力的系统化建设,包括 Python 自动化测试、Java 自动化测试、Web 与 App 自动化、持续集成与质量体系建设,同时探索 AI 驱动的测试设计、用例生成、自动化执行与质量分析方法,沉淀可复用、可落地的测试开发工程经验。

在技术社区与工程实践之外,学社还参与测试工程人才培养体系建设,面向高校提供测试实训平台与实践支持,组织开展 “火焰杯” 软件测试相关技术赛事,并探索以能力为导向的人才培养模式,包括高校学员先学习、就业后付款的实践路径。

同时,学社结合真实行业需求,为在职测试工程师与高潜学员提供名企大厂 1v1 私教服务,用于个性化能力提升与工程实践指导。

posted @ 2026-03-18 16:46  霍格沃兹测试开发学社  阅读(15)  评论(0)    收藏  举报