前言
DeepSeek API 文档。
Operating System: Ubuntu 22.04.4 LTS
参考文档
首次调用 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?"}
]
在第二轮请求时:
- 要将第一轮中模型的输出添加到 messages 末尾
- 将新的提问添加到 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 开头的消息,来让模型补全其余的消息。
注意事项
使用对话前缀续写时,用户需确保 messages 列表里最后一条消息的 role 为 assistant,并设置最后一条消息的 prefix 参数为 True。
用户需要设置 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 数进行计量计费。
模型 & 价格细节
- deepseek-chat 模型对应 DeepSeek-V3;deepseek-reasoner 模型对应 DeepSeek-R1。
- 思维链为deepseek-reasoner模型在给出正式回答之前的思考过程,其原理详见推理模型。
- 如未指定 max_tokens,默认最大输出长度为 4K。请调整 max_tokens 以支持更长的输出。
- 关于上下文缓存的细节,请参考DeepSeek 硬盘缓存。
- deepseek-reasoner的输出 token 数包含了思维链和最终答案的所有 token,其计价相同。
- 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/
结语
第二百九十一篇博文写完,开心!!!!
今天,也是充满希望的一天。