DeepSeek API 与 LangChain 框架接入实战
DeepSeek API 与 LangChain 框架接入实战
说明: 本文介绍如何在 LangChain 框架中接入 DeepSeek API
1. 概述(Summary)
用 LLM 搭建一个 Agent,通常都要先回答一个很实际的问题:我怎么把一款能力强、成本低的模型,以最低成本接入到我的应用代码里,而不用从零写一套客户端?
本文给出当你想在 LangChain 生态里使用 DeepSeek 作为模型供应商时,最简单可行的答案。
核心思路是:DeepSeek API 与 OpenAI API 格式完全兼容。因此,在 LangChain 中使用 DeepSeek 最便捷的方式,就是直接复用现有的 OpenAI SDK 集成(langchain-openai),只需把 base_url 指向 DeepSeek、并配上 DeepSeek 的 API Key 即可。不需要自定义适配器,不需要新增依赖,也不需要自己实现协议代码。
读完本文,你将拥有一份可直接运行的最小程序,它能够:
- 通过 API Key 向 DeepSeek 平台完成身份认证;
- 用 system / human / AI 的角色构造一段对话消息;
- 通过 LangChain 的
ChatOpenAI调用deepseek-v4-flash模型; - 打印出模型的回复。
这是 DeepSeek + LangChain 的"Hello, World",也是后续一切更高级 Agent(工具调用、记忆、检索、图编排)的地基。
2. 说明(Description)
2.1 我们要做什么
我们希望用 Python 通过 LangChain 的抽象层,向 DeepSeek 模型发送一段对话提示并拿到文本回复。程序应当做到:
- 从环境变量中加载敏感配置(API Key),而不是写死在代码里;
- 初始化一个与 DeepSeek 通信的 LangChain 聊天模型客户端;
- 构造一个简短的多轮风格消息列表(系统指令 + 用户问题);
- 同步调用模型并打印结果。
描述:技术说明 —— 要做什么、用什么 SDK、逻辑如何实现
2.2 我们要用哪个 SDK
我们不安装任何专门的 DeepSeek Python 包,而是复用以下组件:
| 组件 | 包名 | 作用 |
|---|---|---|
| 聊天模型客户端 | langchain-openai(ChatOpenAI) | LangChain 的 OpenAI 兼容聊天封装 |
| 消息类型 | langchain-core(SystemMessage、HumanMessage、AIMessage) | 带类型的聊天消息 |
| 环境变量加载 | python-dotenv(load_dotenv) | 把 .env 中的密钥读入 os.environ |
为什么这样可行: DeepSeek 在其地址 https://api.deepseek.com 上提供 与 OpenAI Chat Completions API 相同的请求/响应结构。ChatOpenAI 只需要三个指向正确位置的值:model、api_key、base_url。把这三个值换掉,同一份 LangChain 代码调用的就变成了 DeepSeek 而非 OpenAI。
2.3 逻辑如何实现
load_dotenv()
│
▼
ChatOpenAI(model, api_key, base_url="https://api.deepseek.com/v1", temperature)
│
▼
messages = [ SystemMessage, HumanMessage ] # 带类型的聊天历史
│
▼
model.invoke(messages) # 同步发起对 DeepSeek 的 HTTP 请求
│
▼
resp.content ──► print()
流程刻意保持线性、同步。invoke() 会阻塞,直到 DeepSeek 返回完整的消息,非常适合脚本、Notebook 和测试。(DeepSeek 同样支持 stream=True,以及 LangChain 的 .stream() / .ainvoke() 用于流式与异步 —— 本文不展开,但后续很容易加上。)
从官方知识库核实,并延伸说明的内容:
- 兼容 OpenAI 与 Anthropic: 只需修改
base_url和api_key,即可用 OpenAI SDK 或 Anthropic SDK 访问 DeepSeek。 - 官方 base URL:
- OpenAI 格式 →
https://api.deepseek.com - Anthropic 格式 →
https://api.deepseek.com/anthropic
- OpenAI 格式 →
- 当前模型:
deepseek-v4-flash与deepseek-v4-pro。这些别名会自动解析到最新快照(DeepSeek-V4-Flash-0731、DeepSeek-V4-Pro-0813),调用方式不变。 - API Key 获取地址: https://platform.deepseek.com/api_keys
- 推理能力: DeepSeek 模型支持
thinking/reasoning_effort参数,可开启逐步推理(如需,可通过额外参数传入)。 - Agent 工具生态: DeepSeek 提供 Harness(开发者预览),并可直接作为 Claude Code / GitHub Copilot / OpenCode 等工具的后端模型。
本文引用的官方知识库链接:
- DeepSeek API 文档 → https://api-docs.deepseek.com/
- DeepSeek 开放平台(用量与 API Key) → https://platform.deepseek.com/usage
3. 代码细节(Code Details)
3.1 完整实现
下面是完整、可直接运行的程序(agent_basic_deepseek.py)。它刻意保持极简,方便你 30 秒从头读到尾。
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage
load_dotenv()
model = ChatOpenAI(
model="deepseek-v4-flash",
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url="https://api.deepseek.com/v1",
temperature=0.7,
)
messages = [
SystemMessage(content="You are a helpful assistant."),
HumanMessage(
content="Show me your power, give me a list of what you're available to do.")
]
resp = model.invoke(messages)
print(resp.content)
3.2 分步讲解
1. 导入依赖
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage
os在运行时读取环境变量;load_dotenv()从本地.env文件加载密钥;ChatOpenAI是我们要"改装"给 DeepSeek 用的 OpenAI 兼容聊天客户端;- 三个
*Message类是 LangChain 对聊天角色的类型化表示。
2. 加载环境并配置客户端
load_dotenv()
model = ChatOpenAI(
model="deepseek-v4-flash",
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url="https://api.deepseek.com/v1",
temperature=0.7,
)
model="deepseek-v4-flash"选择快速、低成本的 DeepSeek V4 flash 模型;api_key=os.getenv("DEEPSEEK_API_KEY")让密钥不进入源码版本库;base_url="https://api.deepseek.com/v1"是唯一一行把 OpenAI 客户端重定向到 DeepSeek 的代码(官方文档写的是https://api.deepseek.com,两者都可用,因为/v1是 API 版本路径);temperature=0.7控制随机性 —— 事实类任务调低,创意类任务调高。
3. 构造对话
messages = [
SystemMessage(content="You are a helpful assistant."),
HumanMessage(
content="Show me your power, give me a list of what you're available to do.")
]
SystemMessage设定助手的行为/人设;HumanMessage是用户的提示词。(AIMessage表示模型上一次的回复 —— 当你需要回灌聊天历史时很有用。)
4. 调用并打印
resp = model.invoke(messages)
print(resp.content)
model.invoke(messages)同步发起对 DeepSeek 的 HTTP 请求,返回一个AIMessage对象;resp.content即生成的文本字符串。
3.3 前置条件与环境配置
# 1. (推荐)创建虚拟环境
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 2. 安装依赖
pip install langchain-openai langchain-core python-dotenv
# 3. 在项目根目录创建 .env 文件
echo "DEEPSEEK_API_KEY=sk-your-real-key-here" > .env
⚠️ 安全提示: 切勿提交你的真实 API Key。原
agent_basic_deepseek.md中出现的sk-...只是占位示例 —— 请把它放在.env里,并将.env加入.gitignore。
3.4 运行程序
python agent_basic_deepseek.py
预期行为:脚本打印出 DeepSeek 的回复,列出助手能做的事情。若出现鉴权错误,请检查 DEEPSEEK_API_KEY 是否已在环境中设置,以及你的 DeepSeek 账户是否有 API 额度。
小结
这就是全部地基:一个客户端、三个配置值、一份带类型的消息列表、一次 invoke() 调用。 在这之上,你可以把这个骨架逐步长成一个真正的 Agent —— 加上 tools 做函数调用、把模型包进 Runnable 链、挂载 MemorySaver 实现对话记忆,或用 LangGraph 编排多步流程。所有这些高级模式,都依然从上面那行 ChatOpenAI(..., base_url="https://api.deepseek.com/v1") 起步。
更多推荐


所有评论(0)