LangChain 无缝接入 DeepSeek 的 3 种方法(附实验代码)

博文小编

2025-09-29


博文视点Broadview
以下文章来源于网工手艺 ,作者朱嘉盛
网工手艺 .
网工15年|新手友好|乐于分享|敬畏网络|专注运维|守正创新

今天详细演示在LangChain 框架中,用于与 DeepSeek 大模型实现交互的SystemMessage/HumanMessage类。
本文设计了几个小实验,你可以跟着一步步操作。本文实验内容源自《网络工程师 的AI 之路》一书中的示例代码并加以拓展。

一、实验背景

1.1 PromptTemplate

PromptTemplate 是 LangChain 中用于生成动态提示词(Prompt)的工具。它的核心思想是,将提示词设计为模板,然后通过变量填充来生成最终发送给 LLM 的提示内容。
类型:类(PromptTemplate)
作用:生成动态提示词(Prompt),通过模板和变量生成最终文本。
输出:字符串
示例:早前文章介绍

1.2 SystemMessage/HumanMessage类

在 LangChain 的聊天模型(Chat Models)框架下,消息不仅包含文本,还会包含角色(role)信息。
类型:类(SystemMessage、HumanMessage)
作用:封装聊天消息,带角色信息(system、user、assistant),用于多轮对话。
输出:消息对象(含 content 和 role)
示例:本文重点介绍
无论是 PromptTemplate,还是 SystemMessage/HumanMessage,它们都是 LangChain 框架中与 AI 大模型进行交互的重要方式,值得我们重点掌握。它们都属于“提示设计”工具,核心作用是告诉大模型“该怎么做”。其中,PromptTemplate 更偏向生成内容模板,SystemMessage/HumanMessage 更偏向组织对话结构。以下是 AI 生成的对比表格。

二、实验过程

话不多说,我们直接开始实验。考虑到很多读者反馈在国内无法使用 ChatGPT,本次实验将改用 DeepSeek。DeepSeek 提供在线版本和离线版本,这种特性更适合网络运维场景中涉及的信息安全需求。
在实验开始前,我们需要登录 DeepSeek 官网完成充值,并获取 API 密钥。
https://platform.deepseek.com/

现在假设你已获取 API Key,该密钥用于计费,请注意保密,避免外泄。
充值、API Key 制作、离线本地部署等,可参考:DeepSeek

2.1 沿用 langchain_openai 库

书中 2.3.6 小节的实验 2,使用了 LangChain 框架中的 langchain_openai 库来调用 GPT 大模型。

我们如何沿用这套方法来调用 DeepSeek 大模型呢?
我们都知道,OpenAI 是 AI 大模型领域的老大哥,市面上其他大模型通常会尽量适配 OpenAI 的相关工具,DeepSeek 同样如此,其官方使用手册中已有明确说明。
https://api-docs.deepseek.com/zh-cn/

找到官网文档中的相关信息后,我们就能明确接下来的思路了。

设置 DeepSeek API Key

openai_api_key = “在此处填写个人的 DeepSeek API key。”

设置 HumanMessage 和 SystemMessage

messages = [
SystemMessage(content=”你是一名咨询助理。”),
HumanMessage(content=”请写一段关于华为的简介。”)
]

使用 DeepSeek 的模型

llm = ChatOpenAI(
model=”deepseek-chat”,
temperature=0,
openai_api_key=openai_api_key,
base_url=”https://api.deepseek.com/v1
)

将 Prompt 发送给 DeepSeek,获取并打印回答

response = llm.invoke(messages)
print(response.content)
我们尝试运行一下脚本,结果如下。

关于具体模型,DeepSeek 在手册中也有明确说明。

  • deepseek-chat 和 deepseek-reasoner 都已经升级为 DeepSeek-V3.1。deepseek-chat 对应 DeepSeek-V3.1 的非思考模式,deepseek-reasoner 对应 DeepSeek-V3.1 的思考模式.
    关于代码解释的相关内容,你可以自行查阅书中的讲解,也可以通过 AI 聊天工具进行探索。
    【发布】《网络工程师的 AI 之路》勘误及优化全纪录

    2.2 使用 langchain_deepseek 库

    我们可以探索 LangChain 官网,直接搜索DeepSeek关键字,很快就能找到 langchain_deepseek 库。
    https://python.langchain.com/docs/integrations/providers/deepseek/
    模块 langchain_deepseek 由 LangChain 社群开发,是用于在 LangChain 框架中便捷调用 DeepSeek 模型 API 的插件。

    我们需要先安装一下这个 langchain_deepseek 库。
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple langchain_deepseek -U
    安装完后,我们可以查一下这个库。
    C:\Windows\System32>pip show langchain_deepseek
    Name: langchain-deepseek
    Version: 0.1.4
    Summary: An integration package connecting DeepSeek and LangChain
    Home-page:
    Author:
    Author-email:
    License: MIT
    Location: C:\Program Files\Python312\Lib\site-packages
    Requires: langchain-core, langchain-openai
    Required-by:

C:\Windows\System32>
由此可见,langchain-deepseek 仍依赖于 langchain-openai。
接着,我们修改一下实验代码。
from langchain.schema import HumanMessage, SystemMessage
from langchain_deepseek.chat_models import ChatDeepSeek

直接在代码中设置 API Key

deepseek_api_key = “在此处填写个人的 DeepSeek API key。”

设置消息

messages = [
SystemMessage(content=”你是一名咨询助理。”),
HumanMessage(content=”请写一段关于华为的简介。”)
]

使用 DeepSeek 的模型

llm = ChatDeepSeek(
model=”deepseek-reasoner”,
temperature=0,
api_key=deepseek_api_key
)

获取并打印回答

response = llm.invoke(messages)
print(response.content)
我们尝试运行一下脚本,结果如下。

成功运行,代码虽然有点不同,算殊途同归吧。

2.3 使用 langchain 库

我们再到 LangChain 官网看看。
https://python.langchain.com/docs/introduction/

从官网上看,如今 LangChain 官方已经主动适配 DeepSeek 了。官方提供的示例代码,我结合实验,再简化一下。
from langchain.schema import SystemMessage, HumanMessage
from langchain.chat_models import init_chat_model

api_key = “在此处填写个人的 DeepSeek API key。”

model = init_chat_model(“deepseek-chat”, model_provider=”deepseek”,api_key=api_key)

messages = [
SystemMessage(content=”你是一名咨询助理。”),
HumanMessage(content=”请写一段关于华为的简介。”)
]

response = model.invoke(messages)
print(response.content)
顺带着提一句,langchain 本身只是核心框架,具体模型相关的接口(比如 init_chat_model)放在 langchain-community 包里,所以这里还要提前安装 langchain-community 库。实际上,我们在安装 LangChain 框架的时候就都一并安装了。
我们尝试运行一下脚本,结果如下。

现在,我们可以再次查看官方代码中的os.environ[“DEEPSEEK_API_KEY”]等代码,这实际上是通过系统环境变量配合 Python 的 os 模块,在代码中隐藏敏感的个人 API Key 信息。这种思路值得参考,请你自行尝试一下。
至此,我们已通过不同方式完成 LangChain 框架与 DeepSeek 大模型的联动。建议你在实验时,对比这些代码的异同之处。

2.4 组合使用

我们可以对实验脚本做进一步拓展,将 PromptTemplate 与 SystemMessage、HumanMessage 组合使用。
from langchain.prompts import PromptTemplate
from langchain.schema import SystemMessage, HumanMessage
from langchain_deepseek.chat_models import ChatDeepSeek

deepseek_api_key = “在此处填写个人的 DeepSeek API key。”

template = “请写一段关于{topic}的简介。”
prompt = PromptTemplate(input_variables=[“topic”], template=template)

messages = [
SystemMessage(content=”你是一名咨询助理。”),
HumanMessage(content=prompt.format(topic=”华为”))
]

llm = ChatDeepSeek(
model=”deepseek-chat”,
temperature=0,
api_key=deepseek_api_key
)

response = llm.invoke(messages)
print(response.content)
从代码层面看,我们可以将 PromptTemplate 输出的文本作为 HumanMessage 或 SystemMessage 的内容。
我们尝试运行一下脚本,结果如下。

三、本文总结

在本文中,我们首先介绍了 LangChain 框架中实现人与 AI 大模型(代码层面)互动的两种重要方式,即PromptTemplate 与 SystemMessage、HumanMessage,讨论了它们的特点及相互联系与差异。接着,通过 3 个具体实验,重点讲解了如何通过 LangChain 调用 DeepSeek 大模型,并借助 SystemMessage、HumanMessage 实现联动。最后,在原有实验基础上微调代码,将 PromptTemplate 与 SystemMessage、HumanMessage 组合应用。
在从 NetDevOps 向 AIOps 探索的过程中,我们需要重点掌握代码与 AI 大模型的联动方法,以及不同大模型之间的迁移使用技巧。我个人比较建议大家先扎实掌握这部分内容,再推进后续学习。
如今,AI 确实能帮我们快速生成代码,但如何引导 AI 产出符合需求的代码,如何在 AI 生成的代码基础上进行针对性调整以适配实际应用场景,这些都非常考验基本功。若基础足够扎实,AI 为你插上翅膀,助你翱翔。

读者评论

相关博文

  • 社区使用反馈专区

    陈晓猛 2016-10-04

    尊敬的博文视点用户您好: 欢迎您访问本站,您在本站点访问过程中遇到任何问题,均可以在本页留言,我们会根据您的意见和建议,对网站进行不断的优化和改进,给您带来更好的访问体验! 同时,您被采纳的意见和建议,管理员也会赠送您相应的积分...

    陈晓猛 2016-10-04
    5825 753 3 7
  • 迎战“双12”!《Unity3D实战核心技术详解》独家预售开启!

    陈晓猛 2016-12-05

    时隔一周,让大家时刻挂念的《Unity3D实战核心技术详解》终于开放预售啦! 这本书不仅满足了很多年轻人的学习欲望,并且与实际开发相结合,能够解决工作中真实遇到的问题。预售期间优惠多多,实在不容错过! Unity 3D实战核心技术详解 ...

    陈晓猛 2016-12-05
    3544 36 0 1
  • czk 2017-07-29
    6434 28 0 1