Python调用DeepSeek R1和V3 API完整教程(附代码示例)

背景介绍:DeepSeek R1 和 V3 是什么?

红烁AI 培训,红烁 AI 中转站为您整理:DeepSeek 是深度求索(DeepSeek AI)推出的大语言模型系列,凭借极具竞争力的性价比和开放的 API 接口,迅速成为国内外开发者的热门选择。

目前最常用的两个版本是:

  • DeepSeek-R1:专为复杂推理设计,内置”思维链”(Chain-of-Thought)能力,在数学、逻辑推断、代码调试等任务上表现突出。调用时模型会先输出 <think> 推理过程,再给出最终答案。
  • DeepSeek-V3:通用型旗舰模型,在对话、文本生成、代码补全、摘要等日常任务上速度更快、成本更低,适合高并发生产场景。

两个模型均通过 OpenAI 兼容接口 对外提供服务,这意味着你几乎不需要学习新的 SDK,用已有的 OpenAI Python 库就能直接调用。

准备工作:获取 API Key

在写任何代码之前,先完成以下准备步骤:

  • 访问 platform.deepseek.com,注册并登录账号。
  • 进入「API Keys」页面,点击「创建 API Key」,复制并妥善保存生成的密钥(页面关闭后不再显示)。
  • 确认账户余额充足,新用户通常有免费额度可用。

DeepSeek 的 API Base URL 为:

https://api.deepseek.com

建议将 API Key 存入环境变量,而不是硬编码在代码里:

export DEEPSEEK_API_KEY="sk-your-key-here"

安装依赖

DeepSeek 官方推荐使用 openai Python SDK,只需切换 base_urlapi_key 即可。安装命令:

pip install openai

如果你更倾向于直接发 HTTP 请求,也可以使用 requests 库,后文会一并演示。

核心内容:Python 调用 DeepSeek API

1. 调用 DeepSeek-V3(通用对话)

下面是最简单的单轮对话示例,使用 OpenAI SDK 调用 DeepSeek-V3:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ.get("DEEPSEEK_API_KEY"),
    base_url="https://api.deepseek.com"
)

response = client.chat.completions.create(
    model="deepseek-chat",   # 对应 DeepSeek-V3
    messages=[
        {"role": "system", "content": "你是一个专业的 Python 开发助手。"},
        {"role": "user", "content": "用 Python 写一个快速排序算法,并加上注释。"}
    ],
    temperature=0.7,
    max_tokens=1024
)

print(response.choices[0].message.content)

其中 model="deepseek-chat" 指向最新版 DeepSeek-V3。temperature 控制输出随机性,0 表示确定性最强,1 表示最具创意。

2. 调用 DeepSeek-R1(推理模型)

调用 R1 只需将 model 参数改为 deepseek-reasoner。R1 会在 reasoning_content 字段中返回推理过程:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ.get("DEEPSEEK_API_KEY"),
    base_url="https://api.deepseek.com"
)

response = client.chat.completions.create(
    model="deepseek-reasoner",   # 对应 DeepSeek-R1
    messages=[
        {"role": "user", "content": "一个正整数 n,满足 n! 末尾恰好有 10 个零,求所有可能的 n。"}
    ]
)

message = response.choices[0].message

# 打印推理过程(R1 特有)
if hasattr(message, "reasoning_content") and message.reasoning_content:
    print("=== 推理过程 ===")
    print(message.reasoning_content)

print("=== 最终答案 ===")
print(message.content)

R1 的推理过程有助于调试和理解模型决策,在数学证明、逻辑题等场景下尤为有价值。

3. 流式输出(Streaming)

对于需要实时显示回复的场景(如聊天界面),开启流式输出可以大幅提升用户体验:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ.get("DEEPSEEK_API_KEY"),
    base_url="https://api.deepseek.com"
)

stream = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "user", "content": "介绍一下 Python 的异步编程机制。"}
    ],
    stream=True   # 开启流式输出
)

for chunk in stream:
    delta = chunk.choices[0].delta
    if delta.content:
        print(delta.content, end="", flush=True)

print()  # 换行

4. 多轮对话

多轮对话的关键是维护 messages 列表,将历史消息一并传入:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ.get("DEEPSEEK_API_KEY"),
    base_url="https://api.deepseek.com"
)

messages = [{"role": "system", "content": "你是一个友好的编程助手。"}]

while True:
    user_input = input("你:")
    if user_input.lower() in ("exit", "quit", "退出"):
        break

    messages.append({"role": "user", "content": user_input})

    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=messages
    )

    assistant_reply = response.choices[0].message.content
    messages.append({"role": "assistant", "content": assistant_reply})

    print(f"助手:{assistant_reply}\n")

实际应用场景

了解了基础调用方式后,来看几个典型的落地场景:

  • 代码审查工具:将代码片段发给 DeepSeek-V3,让它指出潜在 Bug 和优化建议,集成到 CI/CD 流水线中。
  • 数学/逻辑题求解器:使用 DeepSeek-R1,利用其推理能力逐步拆解复杂问题,适合教育类应用。
  • 文档自动生成:传入函数签名和注释,让 V3 生成规范的 API 文档或 README。
  • 智能客服后端:结合多轮对话能力,构建具备上下文记忆的客服机器人,降低人工成本。
  • 数据分析报告:将结构化数据以文本形式传入,让模型生成自然语言分析摘要。

常见问题 FAQ

Q1:调用时报 AuthenticationError,怎么排查?

首先确认 API Key 是否正确复制,注意不要包含多余的空格。其次检查环境变量是否生效(可用 print(os.environ.get("DEEPSEEK_API_KEY")) 验证)。如果 Key 已过期或余额为零,也会触发此错误,登录控制台确认账户状态即可。

Q2:DeepSeek-R1 和 V3 如何选择?

简单来说:需要推理过程或解决复杂逻辑问题,选 R1;追求速度和成本效率的通用任务,选 V3。 R1 的 Token 消耗通常更高(因为包含推理链),生产环境中建议先用 V3 测试,只在确实需要推理能力时切换到 R1。

Q3:如何控制输出长度和格式?

通过 max_tokens 限制最大输出长度。如果需要 JSON 格式输出,可以在 System Prompt 中明确要求,并设置 response_format={"type": "json_object"}(V3 支持此参数)。

Q4:遇到 RateLimitError 怎么办?

DeepSeek API 有并发和 TPM(每分钟 Token 数)限制。建议在代码中加入指数退避重试逻辑,或使用 tenacity 库自动处理重试。高并发场景可申请提升限额。

Q5:能否在没有网络的环境中使用?

DeepSeek 官方 API 需要联网。如果有离线需求,可以考虑下载 DeepSeek 的开源权重(在 Hugging Face 上公开),通过 ollamavLLM 在本地部署,接口格式与云端 API 基本一致。

总结

在 Python 中调用 DeepSeek R1 和 V3 API 的核心步骤只有三步:安装 openai SDK、配置 base_urlapi_key、按需选择 deepseek-reasonerdeepseek-chat 模型。得益于 OpenAI 兼容接口,迁移成本极低,现有项目几乎可以零改动切换。

建议从单轮对话开始验证连通性,再逐步引入流式输出和多轮上下文管理,最后根据业务场景决定是否需要 R1 的推理能力。DeepSeek 的高性价比使其成为个人项目和商业产品的双优选择,值得深入探索。

想了解更多AI工具和技巧?欢迎访问红烁AI 培训,红烁 AI 中转站,获取最新AI资讯和实用教程。