DeepSeek接口调用说明

DeepSeek接口调用说明

DeepSeek API 使用与 OpenAI 兼容的 API 格式,可以使用 OpenAI SDK 或与 OpenAI API 兼容的软件来访问 DeepSeek API 。

一、模型接口调用


第一到平台
https://platform.deepseek.com/api_keys申请api key。注意:API key 仅在创建时可见可复制,不要与他人共享API key或将其暴露在浏览器或其他客户端代码中。 如下使用python调用deepseek api演示:

第一安装OpenAI SDK,参数api_key替换成已申请的。

pip3 install openai
1、调用模型DeepSeek-V3接口deepseek-chat
from openai import OpenAI
client = OpenAI(api_key="sk-xxxxxxxxxxxxxx", base_url="https://api.deepseek.com")  
response = client.chat.completions.create(     
    model="deepseek-chat",     
    messages=[         
        {"role": "system", "content": "You are a helpful assistant"},         
        {"role": "user", "content": "Hello,deepseek!"},    
    ],     
    stream=False 
)  
print(response.choices[0].message.content) 

----------------------

2、调用模型DeepSeek-R1接口deepseek-reasoner 
from openai import OpenAI
client = OpenAI(api_key="sk-xxxxxxxxxxxxxx", base_url="https://api.deepseek.com")

# Round 1
messages = [{"role": "user", "content": "9.11 and 9.8, which is greater?"}]
response = client.chat.completions.create(
    model="deepseek-reasoner",
    messages=messages,
    stream=True
)

reasoning_content = ""
content = ""

for chunk in response:
    if chunk.choices[0].delta.reasoning_content:
        reasoning_content += chunk.choices[0].delta.reasoning_content
    else:
        content += chunk.choices[0].delta.content

# Round 2
messages.append({"role": "assistant", "content": content})
messages.append({'role': 'user', 'content': "How many Rs are there in the word 'strawberry'?"})
response = client.chat.completions.create(
    model="deepseek-reasoner",
    messages=messages,
    stream=True
)
# ...
----------------------
说明:
1、为与OpenAI兼容思考,可以将base_url设置为 https://api.deepseek.com/v1 此处 v1 与模型版本无关。
2、deepseek-chat模型已全面升级为DeepSeek-V3,接口不变。通过指定model='deepseek-chat' 即可调用 DeepSeek-V3。
3、deepseek-reasoner是DeepSeek最新推出的推理模型DeepSeek-R1。通过指定 model='deepseek-reasoner',即可调用DeepSeek-R1。
4、stream值设置为true使用流式输出,false非流式输出。
5、max_tokens:最终回答的最大长度(不含思维链输出),默认为4K,最大为8K。思维链的输出最多可以达到32K tokens。
6、上下文拼接:在每一轮对话过程中,模型会输出思维链内(reasoning_content)和最终回答(content)。在下一轮对话中,之前轮输出的思维链内容不会被拼接到上下文中,请注意,如果您在输入的messages序列中,传入了reasoning_content,API会返回400 错误。因此,请删除API响应中的 reasoning_content 字段,再发起 API 请求。

在 LangChain 中调用 DeepSeek API实例

pip3 install langchain_openai
from langchain_openai.chat_models.base import BaseChatOpenAI

llm = BaseChatOpenAI(
    model='deepseek-chat', 
    openai_api_key='sk-xxxxxxxxxxxxxxxx', 
    openai_api_base='https://api.deepseek.com',
    max_tokens=1024
)

response = llm.invoke("Hi!")
print(response.content)

DeepSeek接口调用说明

二、模型价格与计费规则


模型价格以“百万 tokens”为单位。Token 是模型用来表明自然语言文本的的最小单位,可以是一个词、一个数字或一个标点符号等。根据模型输入和输出的总 token 数进行计量计费。

模型

上下文长度

最大思维链长度

最大输出长度

百万tokens 输入价格 (缓存命中)

百万tokens 输入价格 (缓存未命中)

百万tokens 输出价格 输出价格

deepseek-chat

64K

8K

0.5元

2元

8元

deepseek-reasoner

64K

32K

8K

1元

4元

16元

  • deepseek-chat模型已经升级为 DeepSeek-V3;deepseek-reasoner模型为模型 DeepSeek-R1。
  • 思维链为deepseek-reasoner模型在给出正式回答之前的思考过程。
  • 如未指定 max_tokens,默认最大输出长度为 4K。调整 max_tokens,默认最大输出长度为 4K。调整 max_tokens以支持更长的输出。
  • DeepSeek API 创新采用硬盘缓存,价格再降一个数量级,缓存命中的部分,DeepSeek 收费 0.1元 每百万 tokens。大模型的价格再降低一个数量级
  • deepseek-reasoner的输出 token 数包含了思维链和最终答案的所有 token,其计价一样。

扣费规则


扣减费用 = token 消耗量 × 模型单价,对应的费用将直接从充值余额或赠送余额中进行扣减。 当充值余额与赠送余额同时存在时,优先扣减赠送余额。产品价格可能发生变动,DeepSeek 保留修改价格的权利。依据实际用量按需充值。

Temperature 设置:temperature参数默认为 1.0

场景

温度

代码生成/数学解题

0.0

数据抽取/分析

1.0

通用对话

1.3

翻译

1.3

创意类写作/诗歌创作

1.5

Token 用量计算


token 是模型用来表明自然语言文本的基本单位,也是计费单元,可以直观的理解为“字”或“词”;一般 1 个中文词语、1 个英文单词、1 个数字或 1 个符号计为 1 个 token。一般情况下模型中 token 和字数的换算比例大致如下:

  • 1 个英文字符 ≈ 0.3 个 token。
  • 1 个中文字符 ≈ 0.6 个 token。

但由于不同模型的分词不同,所以换算比例也存在差异,每一次实际处理 token 数量以模型返回为准。

离线计算 Tokens 用量

可以通过如下代码来运行 tokenizer,以离线计算一段文本的 Token 用量。chat_tokenizer_dir路径根据实际情况替换。


import transformers

chat_tokenizer_dir = "./deepseek_v3_tokenizerdeepseek_v3_tokenizer"
tokenizer = transformers.AutoTokenizer.from_pretrained( 
       chat_tokenizer_dir, trust_remote_code=True
      )
result = tokenizer.encode("Hello!")

print(result)

三、接口调用响应错误码说明


在调用 DeepSeek API 时,可能会遇到以下错误。这里列出了相关错误的缘由及其解决方法。

错误码

描述

400 – 格式错误

缘由:请求体格式错误 解决方法:请根据错误信息提示修改请求体

401 – 认证失败

缘由:API key 错误,认证失败 解决方法:请检查您的 API key 是否正确,如没有 API key,请先 创建 API key

402 – 余额不足

缘由:账号余额不足 解决方法:请确认账户余额,并前往 充值 页面进行充值

422 – 参数错误

缘由:请求体参数错误 解决方法:请根据错误信息提示修改相关参数

429 – 请求速率达到上限

缘由:请求速率(TPM 或 RPM)达到上限 解决方法:请合理规划您的请求速率。

500 – 服务器故障

缘由:服务器内部故障 解决方法:请等待后重试。若问题一直存在,请联系我们解决

503 – 服务器繁忙

缘由:服务器负载过高 解决方法:请稍后重试您的请求

四、接口调用常见问题

1、调用模型时的并发限制是多少?是否可以提高账号的并发上限?

当前阶段没有按照用户设置硬性并发上限。在系统总负载量较高时,基于系统负载和短时历史用量的动态限流模型可能会导致收到503或429错误码。目前暂不支持针对单个账号提高并发上限。

2、为什么API 返回比网页端慢?

网页端默认使用流式输出(stream=true),即模型每输出一个字符,都会增量地显示在前端。API 默认使用非流式输出(stream=false),即模型在所有内容输出完后,才会返回。可以通过开启 API 的 stream 模式来提升交互性。

3、为什么调用 API 时,持续返回空行?

为了保持 TCP 连接不会因超时中断,会在请求等待调度过程中,持续返回空行(非流式请求)或 SSE keep-alive 注释(: keep-alive,流式请求)。如果在解析 HTTP 响应,请注意处理这些空行或注释。

4、DeepSeek是否限制接口并发量?

DeepSeek API 不限制用户并发量 当服务器承受高流量压力时,请求发出后,可能收到如下格式的返回内容:

  • 非流式请求:持续返回空行
  • 流式请求:持续返回 SSE keep-alive 注释(: keep-alive

在解析 HTTP 响应时注意处理这些空行或注释。服务会话时长最长30分钟。

5、DeepSeek API接口服务状态查看?

详见:https://status.deepseek.com/

DeepSeek接口调用说明

看完本文如果喜爱,请点赞转发。你的点赞转发,就是我持续更新的动力。

DeepSeek接口调用说明

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
嗯梦梦吖的头像 - 宋马
评论 抢沙发

请登录后发表评论

    暂无评论内容