00291 DeepSeek API 文档


前言

DeepSeek API 文档。

Operating System: Ubuntu 22.04.4 LTS

参考文档

  1. 首次调用 API
  2. 推理模型 (deepseek-reasoner)
  3. 多轮对话
  4. 对话前缀续写(Beta)

首次调用 API

src link: https://api-docs.deepseek.com/zh-cn/

DeepSeek API 使用与 OpenAI 兼容的 API 格式,通过修改配置,您可以使用 OpenAI SDK 来访问 DeepSeek API,或使用与 OpenAI API 兼容的软件。

PARAM VALUE
base_url https://api.deepseek.com
api_key apply for an API key
  • 出于与 OpenAI 兼容考虑,您也可以将 base_url 设置为 https://api.deepseek.com/v1 来使用,但注意,此处 v1 与模型版本无关。

  • deepseek-chat 模型已全面升级为 DeepSeek-V3,接口不变。 通过指定 model=’deepseek-chat’ 即可调用 DeepSeek-V3。

  • deepseek-reasoner 是 DeepSeek 最新推出的推理模型 DeepSeek-R1。通过指定 model=’deepseek-reasoner’,即可调用 DeepSeek-R1。

调用对话 API

在创建 API key 之后,你可以使用以下样例脚本的来访问 DeepSeek API。样例为非流式输出,您可以将 stream 设置为 true 来使用流式输出。

curl https://api.deepseek.com/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <DeepSeek API Key>" \
  -d '{
        "model": "deepseek-chat",
        "messages": [
          {"role": "system", "content": "You are a helpful assistant."},
          {"role": "user", "content": "Hello!"}
        ],
        "stream": false
      }'

# Please install OpenAI SDK first: `pip3 install openai`

from openai import OpenAI

client = OpenAI(api_key="<DeepSeek API Key>", 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"},
    ],
    stream=False
)

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

推理模型 (deepseek-reasoner)

src link: https://api-docs.deepseek.com/zh-cn/guides/reasoning_model

deepseek-reasoner 是 DeepSeek 推出的推理模型。在输出最终回答之前,模型会先输出一段思维链内容,以提升最终答案的准确性。我们的 API 向用户开放 deepseek-reasoner 思维链的内容,以供用户查看、展示、蒸馏使用。

在使用 deepseek-reasoner 时,请先升级 OpenAI SDK 以支持新参数。

pip3 install -U openai

API 参数

输入参数:

  • max_tokens:最终回答的最大长度(不含思维链输出),默认为 4K,最大为 8K。请注意,思维链的输出最多可以达到 32K tokens,控思维链的长度的参数(reasoning_effort)将会在近期上线。

输出字段:

  • reasoning_content:思维链内容,与 content 同级,访问方法见访问样例

  • content:最终回答内容

上下文长度:API 最大支持 64K 上下文,输出的 reasoning_content 长度不计入 64K 上下文长度中

支持的功能:对话补全对话前缀续写 (Beta)

不支持的功能:Function Call、Json Output、FIM 补全 (Beta)

不支持的参数:temperature、top_p、presence_penalty、frequency_penalty、logprobs、top_logprobs。请注意,为了兼容已有软件,设置 temperature、top_p、presence_penalty、frequency_penalty 参数不会报错,但也不会生效。设置 logprobs、top_logprobs 会报错。

上下文拼接

在每一轮对话过程中,模型会输出思维链内容(reasoning_content)和最终回答(content)。在下一轮对话中,之前轮输出的思维链内容不会被拼接到上下文中,如下图所示:

请注意,如果您在输入的 messages 序列中,传入了reasoning_content,API 会返回 400 错误。因此,请删除 API 响应中的 reasoning_content 字段,再发起 API 请求,方法如访问样例所示。

访问样例

下面的代码以 Python 语言为例,展示了如何访问思维链和最终回答,以及如何在多轮对话中进行上下文拼接。

非流式:

from openai import OpenAI
client = OpenAI(api_key="<DeepSeek API Key>", 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
)

reasoning_content = response.choices[0].message.reasoning_content
content = response.choices[0].message.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
)
# ...

from openai import OpenAI
client = OpenAI(api_key="<DeepSeek API Key>", 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
)
# ...

多轮对话

src link: https://api-docs.deepseek.com/zh-cn/guides/multi_round_chat

本指南将介绍如何使用 DeepSeek /chat/completions API 进行多轮对话。

DeepSeek /chat/completions API 是一个“无状态” API,即服务端不记录用户请求的上下文,用户在每次请求时,需将之前所有对话历史拼接好后,传递给对话 API。

下面的代码以 Python 语言,展示了如何进行上下文拼接,以实现多轮对话。

from openai import OpenAI
client = OpenAI(api_key="<DeepSeek API Key>", base_url="https://api.deepseek.com")

# Round 1
messages = [{"role": "user", "content": "What's the highest mountain in the world?"}]
response = client.chat.completions.create(
    model="deepseek-chat",
    messages=messages
)

messages.append(response.choices[0].message)
print(f"Messages Round 1: {messages}")

# Round 2
messages.append({"role": "user", "content": "What is the second?"})
response = client.chat.completions.create(
    model="deepseek-chat",
    messages=messages
)

messages.append(response.choices[0].message)
print(f"Messages Round 2: {messages}")

在第一轮请求时,传递给 API 的 messages 为:

[
    {"role": "user", "content": "What's the highest mountain in the world?"}
]

在第二轮请求时:

  1. 要将第一轮中模型的输出添加到 messages 末尾
  2. 将新的提问添加到 messages 末尾

最终传递给 API 的 messages 为:

[
    {"role": "user", "content": "What's the highest mountain in the world?"},
    {"role": "assistant", "content": "The highest mountain in the world is Mount Everest."},
    {"role": "user", "content": "What is the second?"}
]

对话前缀续写(Beta)

src link: https://api-docs.deepseek.com/zh-cn/guides/chat_prefix_completion

对话前缀续写沿用 Chat Completion API,用户提供 assistant 开头的消息,来让模型补全其余的消息。

注意事项

  1. 使用对话前缀续写时,用户需确保 messages 列表里最后一条消息的 role 为 assistant,并设置最后一条消息的 prefix 参数为 True。

  2. 用户需要设置 base_url=”https://api.deepseek.com/beta“ 来开启 Beta 功能。

样例代码

下面给出了对话前缀续写的完整 Python 代码样例。在这个例子中,我们设置 assistant 开头的消息为 “python\n" 来强制模型输出 python 代码,并设置 stop 参数为 ['‘] 来避免模型的额外解释。

from openai import OpenAI

client = OpenAI(
    api_key="<your api key>",
    base_url="https://api.deepseek.com/beta",
)

messages = [
    {"role": "user", "content": "Please write quick sort code"},
    {"role": "assistant", "content": "```python\n", "prefix": True}
]
response = client.chat.completions.create(
    model="deepseek-chat",
    messages=messages,
    stop=["```"],
)
print(response.choices[0].message.content)

Temperature 设置

src link: https://api-docs.deepseek.com/zh-cn/quick_start/parameter_settings

temperature 参数默认为 1.0。我们建议您根据如下表格,按使用场景设置 temperature。

场景 温度
代码生成/数学解题 0.0
数据抽取/分析 1.0
通用对话 1.3
翻译 1.3
创意类写作/诗歌创作 1.5

模型 & 价格

src link: https://api-docs.deepseek.com/zh-cn/quick_start/pricing

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

模型 & 价格细节

  1. deepseek-chat 模型对应 DeepSeek-V3;deepseek-reasoner 模型对应 DeepSeek-R1。
  2. 思维链为deepseek-reasoner模型在给出正式回答之前的思考过程,其原理详见推理模型。
  3. 如未指定 max_tokens,默认最大输出长度为 4K。请调整 max_tokens 以支持更长的输出。
  4. 关于上下文缓存的细节,请参考DeepSeek 硬盘缓存。
  5. deepseek-reasoner的输出 token 数包含了思维链和最终答案的所有 token,其计价相同。
  6. DeepSeek API 现实行错峰优惠定价,每日优惠时段为北京时间 00:30-08:30,其余时间按照标准价格计费。请求的计价时间为该请求完成的时间。

扣费规则

扣减费用 = token 消耗量 × 模型单价,对应的费用将直接从充值余额或赠送余额中进行扣减。 当充值余额与赠送余额同时存在时,优先扣减赠送余额。

产品价格可能发生变动,DeepSeek 保留修改价格的权利。请您依据实际用量按需充值,定期查看此页面以获知最新价格信息。

API 文档

对话补全

src link: https://api-docs.deepseek.com/zh-cn/api/create-chat-completion

from openai import OpenAI

# for backward compatibility, you can still use `https://api.deepseek.com/v1` as `base_url`.
client = OpenAI(api_key="<your API key>", 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"},
  ],
    max_tokens=1024,
    temperature=0.7,
    stream=False
)

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

推理模型 (deepseek-reasoner)

src link: https://api-docs.deepseek.com/zh-cn/

推理模型 (deepseek-reasoner)

src link: https://api-docs.deepseek.com/zh-cn/

推理模型 (deepseek-reasoner)

src link: https://api-docs.deepseek.com/zh-cn/

推理模型 (deepseek-reasoner)

src link: https://api-docs.deepseek.com/zh-cn/

结语

第二百九十一篇博文写完,开心!!!!

今天,也是充满希望的一天。


文章作者: LuYF-Lemon-love
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LuYF-Lemon-love !
  目录