如何使用 Python 调用 DeepSeek-R1 API?超详细的图文教程

本教程将手把手教你通过 Python 调用 DeepSeek 的 R1 大模型 API,即使没有编程基础也能轻松上手。文末还包含常见问题解答,建议收藏备用!

用 Apifox,节省研发团队的每一分钟

如何使用 Python 调用 DeepSeek-R1 API?超详细的图文教程

免费使用 Apifox

相关推荐

最新文章

API

一体化协作平台

API 设计

API 文档

API 调试

自动化测试

API Mock

API Hub

立即体验 Apifox
目录

本教程将手把手教你通过 Python 调用 DeepSeek 的 R1 大模型 API,即使没有编程基础也能轻松上手。文末还包含常见问题解答,建议收藏备用!

AI Coding 交流群

如果你也在用 AI 写代码,或者正在研究 Cursor、Claude Code 这些工具,欢迎加入以下交流群。群里平时会聊一些 AI 编程的实际用法、开发工作流,还有各种新工具和新玩法。

一、准备工作

获取 API Key

首先登录 DeepSeek 控制台,获取 API Key。首次注册登录的用户, DeepSeek 会赠送 10 块钱的 tokens 额度(先看看有没有,也有可能不送了,导致你的 API Key 不能用,没有额度的话得先充钱)。

如何使用 Python 调用 DeepSeek-R1 API?


在「API Keys」页面点击「创建 API Key」,复制生成的密钥(如:sk-123456789abc)。请保存下来,如果忘记或者丢失了需要重新创建一个 API Key。

如何使用 Python 调用 DeepSeek-R1 API?


二、Python 调用步骤

1.环境准备:安装 Python(已安装可跳过)

  • 如果电脑没有 Python 环境,需要先去安装 Python 环境(macOS 自带 Python3 环境)。可以访问 python.org 来下载安装。
  • 下载最新版(推荐 3.8+)
  • 安装时务必勾选 Add Python to PATH

2.安装 requests 库(已安装可跳过)

在 VSCode 或者其它 IDEA 工具中,新建一个项目文件夹,然后打开终端(顶部菜单:Terminal → New Terminal)执行以下命令:

pip install requests

# 或

pip3 install requests
如何使用 Python 调用 DeepSeek-R1 API?


如果命令执行成功,那么会体现类似这样的提示:

如何使用 Python 调用 DeepSeek-R1 API?

或者这样的:

Successfully installed requests-x.x.x


如果安装失败,并且你的电脑也有 Python 环境,那么可能是因为你的系统中有多个 Python 版本,导致你在不同的环境中使用了不同的 Python 版本,而 requests 库可能只安装在其中一个版本的环境中。


你可以在页面右下角切换版本。

如何使用 Python 调用 DeepSeek-R1 API?


还可以在 VSCode 中安装一个名为 “Python” 的插件,然后通过下面的方式来查看你当前的版本,并打开对应版本的控制台面板来运行上面的命令,比如:

如何使用 Python 调用 DeepSeek-R1 API?


如果实在处理不了这些报错的问题,可以跳到文章的最后一个小节,那里提供了一种更简单的调用 DeepSeek-R1 API 的方法。

deepseek api 调用

3. 基础调用代码

上面的命令执行成功后,在项目中新建一个以 .py 结尾的文件,比如 deepseek.py 文件,并将以下代码复制粘贴进去(注意替换 sk-你的密钥)。

# deepseek.py 

import requests

# 填写你的 API Key
API_KEY = "sk-你的密钥"  

url = "https://api.deepseek.com/chat/completions"
headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {API_KEY}"
}

data = {
    "model": "deepseek-reasoner",  # 指定使用 R1 模型(deepseek-reasoner)或者 V3 模型(deepseek-chat)
    "messages": [
        {"role": "system", "content": "你是一个专业的助手"},
        {"role": "user", "content": "你是谁?"}
    ],
    "stream": False  # 关闭流式传输
}

response = requests.post(url, headers=headers, json=data)

if response.status_code == 200:
    result = response.json()
    print(result['choices'][0]['message']['content'])
else:
    print("请求失败,错误码:", response.status_code)
💡
通过指定 model='deepseek-chat' 即可调用 DeepSeek-V3。
通过指定 model='deepseek-reasoner',即可调用 DeepSeek-R1。

4. 运行代码可以通过以下几种方式来运行代码:

  • 可以点击右上角「▶」按钮来运行代码
  • 可以在控制台通过python3 deepseek.pypython deepseek.py来运行代码
  • 可以 “右键编辑器 → Run Python File in Terminal” 来运行代码
如何使用 Python 调用 DeepSeek-R1 API?

5.  成功效果当看到类似以下输出即表示调用成功:

您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何任何问题,我会尽我所能为您提供帮助。

或者其它问题的答案。

量子计算是一种利用量子力学特性进行信息处理的新型计算模式,其核心原理与传统经典计算有本质区别。以下是量子计算的基本原理分点解释:

---

### 1. **量子比特(Qubit)**
   - **经典比特 vs. 量子比特**  
     经典计算机使用比特(0或1)作为信息基本单位,而量子计算机使用量子比特(qubit)。量子比特的独特之处在于它可以同时处于0和1的**叠加态**。
   - **叠加态(Superposition)**  
     量子比特的状态可表示为:  
     \[
     |\psi\rangle = \alpha|0\rangle + \beta|1\rangle
     \]  
     其中,\(\alpha\)和\(\beta\)是复数(概率幅),满足\(|\alpha|^2 + |\beta|^2 = 1\)。测量时,量子比特会坍缩到0或1,概率分别为\(|\alpha|^2\)和\(|\beta|^2\)。  
     **类比**:想象一枚旋转的硬币,在停下前既是“正面”又是“反面”。

---

### 2. **量子纠缠(Entanglement)**
   - **定义**  
     多个量子比特可形成纠缠态,此时一个量子比特的状态会瞬间影响另一个,即使它们相隔遥远(爱因斯坦称为“鬼魅般的超距作用”)。
   - **示例**  
     贝尔态(Bell state)是最简单的纠缠态之一:  
     \[
     |\Phi^+\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}
     \]  
     若测量其中一个量子比特为0,另一个必然也是0,反之亦然。
   - **作用**  
     纠缠是实现量子并行性和量子通信(如量子隐形传态)的关键。
如何使用 Python 调用 DeepSeek-R1 API?

三、代码解析

1. 关键参数说明

参数
说明
model
deepseek-reasoner 表示 R1 模型
messages
对话历史记录(支持多轮对话)
stream
True 开启流式输出(适合长文本)

2. 多轮对话示例

messages = [
    {"role": "system", "content": "你是一位诗人"},
    {"role": "user", "content": "写一首关于春天的诗"},
    {"role": "assistant", "content": "春风拂面柳丝长..."},
    {"role": "user", "content": "请继续补充第二段"}
]

四、流式传输模式

修改以下参数即可开启:

data["stream"] = True

response = requests.post(url, headers=headers, json=data, stream=True)

for line in response.iter_lines():
    if line:
        decoded_line = line.decode('utf-8')
        print(decoded_line)


完整代码:

# deepseek.py 

import requests

# 填写你的 API Key
API_KEY = "sk-你的 API Key"  

url = "https://api.deepseek.com/chat/completions"
headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {API_KEY}"
}

data = {
    "model": "deepseek-chat",  # 指定使用 R1 模型(deepseek-reasoner)或者 V3 模型(deepseek-chat)
    "messages": [
        {"role": "system", "content": "你是一个专业的助手"},
        {"role": "user", "content": "你是谁?"}
    ],
    "stream": False  # 关闭流式传输
}

data["stream"] = True

response = requests.post(url, headers=headers, json=data, stream=True)

for line in response.iter_lines():
    if line:
        decoded_line = line.decode('utf-8')
        print(decoded_line)

下面用的是 V3 模型(deepseek-chat)输出的结果,为什么不用 R1?太火爆了,经常没响应:

如何使用 Python 调用 DeepSeek-R1 API?

五、常见问题

Q1:如何区分 V3 和 R1 模型?

  • V3:model: "deepseek-chat"
  • R1:model: "deepseek-reasoner"

Q2:出现 401 错误?

  • 检查 API Key 是否填写正确
  • 确认密钥未过期

Q3:出现「No module named 'requests'」?检查是否:

  1. 在正确的终端执行了 pip install requests
  2. VSCode 使用的是正确的 Python 解释器(见上文)

Q4:出现 requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1?

嗯……,跟“服务器繁忙”一个道理,可能用的人太多,响应失败了。


错误提示 Expecting value: line 1 column 1 (char 0) 表示 json() 方法期望收到的是一个有效的 JSON 数据,但实际收到的内容为空。这可能是因为 API 没有返回数据,或者返回的是一个空的响应体。

Q5:为什么启用流式输出后一直出现 keep-alive?

嗯……,跟“服务器繁忙”一个道理,可能用的人太多,所以一直处于长连接状态。

六、更简单的调用 DeepSeek-R1 API 的方法(推荐)

你可以在 Apifox 中调用 DeepSeek-R1 API 或者 DeepSeek-V3 API,你可以通过 Apifox 来进行流式输出结果:

如何使用 Python 调用 DeepSeek-R1 API?


或者整体输出结果:

如何使用 Python 调用 DeepSeek-R1 API?


详情请查看这篇文章:【Deepseek API 调用教程,图文讲解



通过本教程,你已经掌握了 DeepSeek API 的核心调用方法。建议先从简单对话开始测试,逐步尝试流式传输、多轮对话等高级功能。

知识扩展: