推理模型
推理模型使用说明手册
概述
DeepSeek-R1 是一系列由 deepseek-ai 开发的高级语言模型,旨在通过输出思维链内容(reasoning_content)来提升最终回答的准确性。目前该接口和 deepseek 接口兼容,在使用该模型时,建议先升级 OpenAI SDK 以支持新参数。
支持模型列表
- Qwen/QwQ-32B
- deepseek-ai/DeepSeek-R1
- Pro/deepseek-ai/DeepSeek-R1
- deepseek-ai/DeepSeek-R1-Distill-Qwen-32B
- deepseek-ai/DeepSeek-R1-Distill-Qwen-14B
- deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
- deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B
- Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
- Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B
安装与升级
在使用 DeepSeek-R1 之前,请确保已安装最新版本的 OpenAI SDK。可以通过以下命令进行升级:
pip3 install -U openai
API 参数
请求参数
- max_tokens:回答的最大长度(包含思维链输出),以下信息供您参考:
DeepSeek-R1 系列模型支持的最大输出长度(max_tokens)为 16k 个 token。QwQ-32B 模型支持 32K 的最大上下文长度和 32K 的最大输出长度,但在请求 API 时,请勿直接将 max_tokens 设置为 32K,可以留空或设置一个小于 32K 的值,以免因为输入 tokens 占据上下文长度导致推理报错。
返回参数
- reasoning_content:思维链内容,与 content 同级
- content:最终回答内容
使用建议
- 将 temperature 设置在 0.5-0.7 范围内(推荐值为 0.6),以防止无限循环或不连贯的输出
- 将 top_p 的值设置在 0.95
- 避免添加系统提示,所有指令应包含在用户提示中
- 对于数学问题,建议在提示中包含一个指令,例如:"请逐步推理,并将最终答案写在 \boxed 中。"
- 在评估模型性能时,建议进行多次测试并平均结果
- DeepSeek-R1 系列模型在回应某些查询时倾向于绕过思考模式(即输出 "\n\n"),这可能会影响模型的性能。为了确保模型进行充分的推理,建议强制模型在每次输出的开头使用 "\n"
上下文拼接
在每一轮对话过程中,模型会输出思维链内容(reasoning_content)和最终回答(content)。在下一轮对话中,之前轮输出的思维链内容不会被拼接到上下文中。
OpenAI 请求示例
流式输出请求
from openai import OpenAI
url = 'https://api.openapi.cn/v1/'
api_key = 'your api_key'
client = OpenAI(
base_url=url,
api_key=api_key
)
# 发送带有流式输出的请求
content = ""
reasoning_content=""
messages = [
{"role": "user", "content": "奥运会的传奇名将有哪些?"}
]
response = client.chat.completions.create(
model="deepseek-ai/DeepSeek-R1",
messages=messages,
stream=True, # 启用流式输出
max_tokens=4096
)
# 逐步接收并处理响应
for chunk in response:
if chunk.choices[0].delta.content:
content += chunk.choices[0].delta.content
if chunk.choices[0].delta.reasoning_content:
reasoning_content += chunk.choices[0].delta.reasoning_content
# Round 2
messages.append({"role": "assistant", "content": content})
messages.append({'role': 'user', 'content': "继续"})
response = client.chat.completions.create(
model="deepseek-ai/DeepSeek-R1",
messages=messages,
stream=True
)
非流式输出请求
from openai import OpenAI
url = 'https://api.openapi.cn/v1/'
api_key = 'your api_key'
client = OpenAI(
base_url=url,
api_key=api_key
)
# 发送非流式输出的请求
messages = [
{"role": "user", "content": "奥运会的传奇名将有哪些?"}
]
response = client.chat.completions.create(
model="deepseek-ai/DeepSeek-R1",
messages=messages,
stream=False,
max_tokens=4096
)
content = response.choices[0].message.content
reasoning_content = response.choices[0].message.reasoning_content
# Round 2
messages.append({"role": "assistant", "content": content})
messages.append({'role': 'user', 'content': "继续"})
response = client.chat.completions.create(
model="deepseek-ai/DeepSeek-R1",
messages=messages,
stream=False
)
注意事项
- API 密钥:请确保使用正确的 API 密钥进行身份验证
- 流式输出:流式输出适用于需要逐步接收响应的场景,而非流式输出则适用于一次性获取完整响应的场景
常见问题
如何获取 API 密钥?
请访问 openapi 注册并获取 API 密钥。
如何处理超长文本?
可以通过调整 max_tokens 参数来控制输出的长度,但请注意最大长度为 16K。