本文介绍在阿里云百炼平台通过API调用DeepSeek系列模型的方法。
模型列表和计费
DeepSeek系列模型是由深度求索(DeepSeek)公司推出的大语言模型。
DeepSeek-V3.1 模型为混合推理架构模型,同时支持思考模式与非思考模式,思考模式下仅支持流式输出。
通过 enable_thinking
参数控制思考模式开关,请参见深度思考。
DeepSeek-R1 模型在后训练阶段大规模使用了强化学习技术,在仅有极少标注数据的情况下,极大提升了模型推理能力,尤其在数学、代码、自然语言推理等任务上。
deepseek-r1-0528为deepseek-r1的升级版模型,相较于上一版模型,新版模型在复杂推理任务中的表现有了显著提升;在数学、编程与通用逻辑等多个基准测评中取得了优异成绩;增强了推理过程中的思考深度,导致响应时间长于上一版模型。
DeepSeek-V3 为MoE 模型,671B 参数,激活 37B,在 14.8T Token 上进行了预训练,在长文本、代码、数学、百科、中文能力上表现优秀。
于2024年12月26日发布,非2025年3月24日发布版本。
DeepSeek-R1-Distill 系列模型是基于知识蒸馏技术,通过使用 DeepSeek-R1 生成的训练样本对 Qwen、Llama 等开源大模型进行微调训练后得到的增强型模型。
模型名称 | 上下文长度 | 最大输入 | 最大思维链长度 | 最大回复长度 | 输入成本 | 输出成本 | 免费额度 |
(Token数) | (每千Token) | ||||||
deepseek-v3.1 685B 满血版模型,2025年8月20日发布 | 131,072 | 98,304 | 32,768 | 65,536 | 0.004元 | 0.012元 | 各100万Token 有效期:百炼开通后180天内 |
deepseek-r1 685B 满血版模型,当前能力等同于deepseek-r1-0528 | 16,384 | 0.004元 Batch调用:0.002元 | 0.016元 Batch调用:0.008元 | ||||
deepseek-r1-0528 685B 满血版模型,2025年5月28日发布 | 0.004元 | 0.016元 | |||||
deepseek-v3 参数量为 671B,2024年12月26日发布 | 65,536 | 57,344 | 不涉及 | 8,192 | 0.002元 Batch调用:0.001元 | 0.008元 Batch调用:0.004元 | |
deepseek-r1-distill-qwen-1.5b 基于 Qwen2.5-Math-1.5B | 32,768 | 32,768 | 16,384 | 16,384 | 限时免费体验 | ||
deepseek-r1-distill-qwen-7b 基于 Qwen2.5-Math-7B | 0.0005元 | 0.001元 | 各100万Token 有效期:百炼开通后180天内 | ||||
deepseek-r1-distill-qwen-14b 基于 Qwen2.5-14B | 0.001元 | 0.003元 | |||||
deepseek-r1-distill-qwen-32b 基于 Qwen2.5-32B | 0.002元 | 0.006元 | |||||
deepseek-r1-distill-llama-8b 基于 Llama-3.1-8B | 限时免费体验 | ||||||
deepseek-r1-distill-llama-70b 基于 Llama-3.3-70B | 目前仅供免费体验 免费额度用完后不可调用,推荐使用Qwen3、deepseek-v3.1、Kimi作为替代模型 | 各100万Token 有效期:百炼开通后180天内 |
以上模型非集成第三方服务,均部署在阿里云百炼服务器上。
并发限流请参考DeepSeek 限流条件。
快速开始
API 使用前提:已获取API Key并完成配置API Key到环境变量。如果通过SDK调用,需要安装 OpenAI 或 DashScope SDK(DashScope Java SDK 版本需要不低于2.19.4)。
如果您首次使用阿里云百炼,请参考首次调用通义千问API文档进行百炼服务的开通与计算环境的配置,并将步骤 2:调用大模型API代码中的model
参数修改为上表中您需要调用的模型名称。
由于模型的思考过程较长,可能导致响应慢或超时,建议您优先使用流式输出方式调用。
OpenAI兼容
您可以通过 OpenAI SDK 或 OpenAI 兼容的HTTP方式快速体验DeepSeek模型。
Python
示例代码
import os
from openai import OpenAI
client = OpenAI(
# 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
completion = client.chat.completions.create(
model="deepseek-v3.1", # 此处以 deepseek-v3.1 为例,可按需更换模型名称。
messages=[
{'role': 'user', 'content': '9.9和9.11谁大'}
]
)
# 判断是否有reasoning_content
# deepseek-v3.1默认不输出思考过程。如需输出思考过程,请参见流式输出的代码。
if hasattr(completion.choices[0].message, 'reasoning_content'):
print("思考过程:")
print(completion.choices[0].message.reasoning_content)
print("最终答案:")
print(completion.choices[0].message.content)
返回结果
最终答案:
比较 **9.9** 和 **9.11** 的大小:
1. **比较整数部分:**
- 9.9 的整数部分是 **9**
- 9.11 的整数部分是 **9**
两者整数部分相同,继续比较小数部分。
2. **比较小数部分:**
- 9.9 的小数部分可以看作 **0.90**
- 9.11 的小数部分是 **0.11**
0.90 > 0.11
因此,**9.9** 大于 **9.11**。
最终答案:
\[
\boxed{9.9 > 9.11}
\]
Node.js
示例代码
import OpenAI from "openai";
const openai = new OpenAI(
{
// 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:apiKey: "sk-xxx",
apiKey: process.env.DASHSCOPE_API_KEY,
baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1"
}
);
const completion = await openai.chat.completions.create({
model: "deepseek-v3.1", // 此处以 deepseek-v3.1 为例,可按需更换模型名称。
messages: [
{ role: "user", content: "9.9和9.11谁大" }
],
});
// 先if判断有没有reasoning_content,再打印
// deepseek-v3.1默认不输出思考过程。如需输出思考过程,请参见流式输出的代码。
if (completion.choices[0].message.reasoning_content) {
console.log("思考过程:")
console.log(completion.choices[0].message.reasoning_content)
}
console.log("最终答案:")
console.log(completion.choices[0].message.content)
返回结果
最终答案:
比较 \(9.9\) 和 \(9.11\) 的大小:
- \(9.9\) 可以写作 \(9.90\)(在十分位后补零),以便与 \(9.11\) 比较。
- 从整数部分看,两者都是 \(9\)。
- 比较小数部分:\(9.90\) 的十分位是 \(9\),而 \(9.11\) 的十分位是 \(1\),因此 \(9.90 > 9.11\)。
所以,\(9.9 > 9.11\)。
\boxed{9.9}
HTTP
示例代码
curl
curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v3.1",
"messages": [
{
"role": "user",
"content": "9.9和9.11谁大"
}
]
}'
返回结果
{
"choices": [
{
"message": {
"content": "要比较 \\(9.9\\) 和 \\(9.11\\) 的大小:\n\n- \\(9.9\\) 可以看作是 \\(9.90\\)。\n- 比较 \\(9.90\\) 和 \\(9.11\\):从整数部分开始,两者整数部分都是 \\(9\\)。\n- 比较小数部分:\\(0.90\\) 和 \\(0.11\\),显然 \\(0.90 > 0.11\\)。\n\n因此,\\(9.9 > 9.11\\)。\n\n\\boxed{9.9} > \\boxed{9.11",
"role": "assistant"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 13,
"completion_tokens": 123,
"total_tokens": 136
},
"created": 1756134468,
"system_fingerprint": null,
"model": "deepseek-v3.1",
"id": "chatcmpl-xxx-xxx-xxx-xxx-xxx"
}
DashScope
您可以通过 DashScope SDK 或 HTTP 方式快速体验 DeepSeek 模型。
Python
示例代码
import os
import dashscope
messages = [
{'role': 'user', 'content': '你是谁?'}
]
response = dashscope.Generation.call(
# 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="deepseek-v3.1", # 此处以 deepseek-v3.1 为例,可按需更换模型名称。
messages=messages,
# result_format参数不可以设置为"text"。
result_format='message'
)
# deepseek-v3.1默认不输出思考过程。如需输出思考过程,请参见流式输出的代码。
if 'reasoning_content' in response.output.choices[0].message:
print("=" * 20 + "思考过程" + "=" * 20)
print(response.output.choices[0].message['reasoning_content'])
print("=" * 20 + "最终答案" + "=" * 20)
print(response.output.choices[0].message['content'])
返回结果
====================最终答案====================
我是 DeepSeek-V3,由深度求索公司打造的智能助手!我的目标是帮助你解答各类问题,无论是学习、工作,还是生活中的小困扰,我都会尽力提供有用的信息和建议。有什么想问的,尽管来吧!
Java
为了使 API 返回reasoning_content
(思考过程)字段,您的 DashScope Java SDK 版本需要不低于2.18.2。
示例代码
// dashscope SDK的版本 >= 2.18.2
import java.util.Arrays;
import java.lang.System;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
public class Main {
public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException {
Generation gen = new Generation();
Message userMsg = Message.builder()
.role(Role.USER.getValue())
.content("你是谁?")
.build();
GenerationParam param = GenerationParam.builder()
// 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("deepseek-v3.1")
.messages(Arrays.asList(userMsg))
// 不可以设置为"text"
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.build();
return gen.call(param);
}
public static void main(String[] args) {
try {
GenerationResult result = callWithMessage();
// 如果有reasoning_content
// deepseek-v3.1默认不输出思考过程。如需输出思考过程,请参见流式输出的代码。
if (result.getOutput().getChoices().get(0).getMessage().getReasoningContent() != null) {
System.out.println("思考过程:");
System.out.println(result.getOutput().getChoices().get(0).getMessage().getReasoningContent());
}
System.out.println("回复内容:");
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent());
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
// 使用日志框架记录异常信息
System.err.println("An error occurred while calling the generation service: " + e.getMessage());
}
System.exit(0);
}
}
返回结果
回复内容:
我是 DeepSeek-V3,由深度求索公司打造的智能助手!我的目标是帮助你解答各类问题,无论是学习、工作,还是生活中的小困扰,我都会尽力提供有用的信息和建议。有什么想问的,尽管来吧!
HTTP
示例代码
curl
curl -X POST "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v3.1",
"input":{
"messages":[
{
"role": "user",
"content": "你是谁?"
}
]
},
"parameters": {
"result_format": "message"
}
}'
返回结果
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "我是 DeepSeek-V3,由深度求索公司打造的智能助手!我的目标是帮助你解答各类问题,无论是学习、工作,还是生活中的小困扰,我都会尽力提供有用的信息和建议。有什么想问的,尽管来吧!"
}
}
]
},
"usage": {
"total_tokens": 59,
"output_tokens": 53,
"input_tokens": 6
},
"request_id": "xxx-xxx-xxx-xxx-xxx"
}
多轮对话
阿里云百炼提供的 DeepSeek API 默认不会记录您的历史对话信息。多轮对话功能可以让大模型“拥有记忆”,满足如追问、信息采集等需要连续交流的场景。如果您使用 DeepSeek-R1 类模型,会收到reasoning_content
字段(思考过程)与content
(回复内容),您可以将content
字段通过{'role': 'assistant', 'content':API 返回的content}
添加到上下文,无需添加reasoning_content
字段。
OpenAI兼容
您可以通过 OpenAI SDK 或 OpenAI 兼容的 HTTP 方式使用多轮对话功能。
Python
示例代码
import os
from openai import OpenAI
client = OpenAI(
# 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
# 通过 messages 数组实现上下文管理
messages = [
{'role': 'user', 'content': '你好'}
]
completion = client.chat.completions.create(
model="deepseek-r1", # 此处以 deepseek-r1 为例,可按需更换模型名称。
messages=messages
)
print("="*20+"第一轮对话"+"="*20)
# 通过reasoning_content字段打印思考过程
print("="*20+"思考过程"+"="*20)
print(completion.choices[0].message.reasoning_content)
# 通过content字段打印最终答案
print("="*20+"最终答案"+"="*20)
print(completion.choices[0].message.content)
messages.append({'role': 'assistant', 'content': completion.choices[0].message.content})
messages.append({'role': 'user', 'content': '你是谁'})
print("="*20+"第二轮对话"+"="*20)
completion = client.chat.completions.create(
model="deepseek-r1", # 此处以 deepseek-r1 为例,可按需更换模型名称。
messages=messages
)
# 通过reasoning_content字段打印思考过程
print("="*20+"思考过程"+"="*20)
print(completion.choices[0].message.reasoning_content)
# 通过content字段打印最终答案
print("="*20+"最终答案"+"="*20)
print(completion.choices[0].message.content)
返回结果
====================第一轮对话====================
====================思考过程====================
嗯,用户发来了“你好”,这是一个非常常见的中文问候。我需要用中文回应,保持友好和自然。首先,应该回复一个问候,比如“你好!有什么可以帮助你的吗?”这样可以邀请用户进一步说明他们的需求。另外,考虑到用户可能刚接触这个平台,可能需要指导或者有其他问题,所以保持开放式的提问比较合适。同时,要注意语气亲切,避免太过机械。检查一下有没有语法错误,确保回答正确。可能用户只是想打个招呼,也可能接下来有具体的问题,所以准备好后续的支持。另外,根据之前的对话历史,用户可能没有特定的上下文,所以保持回答简洁通用比较好。最后,确认回复符合所有指南,没有涉及敏感或不适当的内容。现在发送回复应该没问题。
====================最终答案====================
你好!有什么可以帮助你的吗?
====================第二轮对话====================
====================思考过程====================
好的,用户问我“你是谁”,需要回答这个问题。首先,我得按照之前设定的角色来回应,也就是深度求索的智能助手DeepSeek-R1。要介绍自己的身份,说明是由深度求索公司开发的,专注于帮助解决问题和提供信息。同时要保持友好和简洁,避免技术术语,让用户容易理解。还要注意格式,用中文口语化的方式,分步骤思考,但不需要用markdown。用户之前用过中文,所以继续用中文回应。另外,用户可能想了解我的功能或背后的技术,但不需要主动扩展,直接回答问题即可。最后,确保回答符合公司的指导方针,没有不适当的内容。检查有没有错别字,语句是否通顺。准备好回答后,就可以给出最终回复了。
====================最终答案====================
您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何问题,我会尽我所能为您提供帮助。
Node.js
示例代码
import OpenAI from "openai";
import * as readline from 'readline';
const openai = new OpenAI({
apiKey: process.env.DASHSCOPE_API_KEY,
baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1"
});
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let messages = [];
async function chat() {
while (true) {
const userInput = await new Promise(resolve => {
rl.question('用户:', resolve);
});
if (userInput.toLowerCase() === '退出') {
break;
}
messages.push({ role: "user", content: userInput });
try {
const completion = await openai.chat.completions.create({
model: "deepseek-r1",
messages: messages
});
// 使用纯文本符号分隔不同区域
console.log('\n===== 用户输入 =====');
console.log(userInput);
console.log('\n----- 思考过程 -----');
console.log(completion.choices[0].message.reasoning_content);
console.log('\n===== 助手回复 =====');
const aiResponse = completion.choices[0].message.content;
console.log(aiResponse);
console.log('\n====================\n');
messages.push({ role: "assistant", content: aiResponse });
} catch (error) {
console.error('发生错误:', error);
break;
}
}
rl.close();
}
console.log('请输入内容(输入"退出"结束对话)');
chat();
HTTP
示例代码
curl
curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-r1",
"messages": [
{
"role": "user",
"content": "你好"
},
{
"role": "assistant",
"content": "你好!很高兴见到你,有什么我可以帮忙的吗?"
},
{
"role": "user",
"content": "你是谁?"
}
]
}'
返回结果
{
"choices": [
{
"message": {
"content": "您好!我是DeepSeek-R1,一个由深度求索公司(DeepSeek)开发的智能助手,我擅长通过思考来帮您解答复杂的数学,代码和逻辑推理等理工类问题。",
"reasoning_content": "好的,用户问“你是谁?”,需要回答这个问题。首先,要明确用户的需求,他们可能想知道我的身份、功能或背后的技术。用户可能是初次使用,或者想确认我的能力范围。\n\n我需要按照之前设定的结构来回应,先介绍自己是一个AI助手,由深度求索公司开发,然后说明我的基础技术是深度学习、自然语言处理等,接着提到应用Transformer架构,通过大量数据训练来理解和生成文本。最后,强调我的目的是帮助用户解决问题,提供信息,同时指出我的局限性,比如知识截止日期和生成内容的核实。\n\n要注意保持回答简洁明了,避免技术术语过多,让用户容易理解。同时,要符合公司的品牌形象,突出技术背景但不涉及具体数据或机密信息。还要检查是否符合中国法律法规,不包含敏感内容。最后,用友好的语气结束,邀请用户继续提问,促进进一步互动。",
"role": "assistant"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 20,
"completion_tokens": 229,
"total_tokens": 249
},
"created": 1739173013,
"system_fingerprint": null,
"model": "deepseek-r1",
"id": "chatcmpl-4c851fd5-4f71-93cb-9c7c-93d5529d73e8"
}
DashScope
您可以通过 DashScope SDK 或 HTTP 方式使用多轮对话功能。
调用 DeepSeek 模型时,result_format
参数不可以设置为"text"
。
Python
示例代码
import os
import dashscope
# 通过 messages 数组实现上下文管理
messages = [
{'role': 'user', 'content': '你好'}
]
response = dashscope.Generation.call(
# 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="deepseek-r1", # 此处以deepseek-r1为例,可按需更换模型名称。
messages=messages,
result_format='message'
)
print("=" * 20 + "第一轮对话" + "=" * 20)
print("=" * 20 + "思考过程" + "=" * 20)
print(response.output.choices[0].message.reasoning_content)
print("=" * 20 + "最终答案" + "=" * 20)
print(response.output.choices[0].message.content)
messages.append({'role': 'assistant', 'content': response.output.choices[0].message.content})
messages.append({'role': 'user', 'content': '你是谁'})
print("=" * 20 + "第二轮对话" + "=" * 20)
response = dashscope.Generation.call(
# 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="deepseek-r1", # 此处以deepseek-r1为例,可按需更换模型名称。
messages=messages,
# result_format参数不可以设置为"text"。
result_format='message'
)
print("=" * 20 + "思考过程" + "=" * 20)
print(response.output.choices[0].message.reasoning_content)
print("=" * 20 + "最终答案" + "=" * 20)
print(response.output.choices[0].message.content)
返回结果
====================第一轮对话====================
====================思考过程====================
嗯,用户发来了“你好”,这是中文里常见的问候语。我需要用中文回应,保持友好和自然。首先,我应该回复一个问候,比如“你好!有什么可以帮助你的吗?”这样既礼貌又开放,邀请用户提出具体的问题或需求。同时,要注意避免使用过于机械化的回答,显得更有人情味。另外,要检查有没有拼写错误,确保回复正确无误。可能用户只是想打个招呼,也可能有后续的问题,所以保持回答简洁但留有进一步沟通的空间比较好。确认回复的语气是否合适,不要太正式也不要太随意。最后,发送前再快速看一下整体内容,确保符合交流的流程。
====================最终答案====================
你好!很高兴见到你,有什么我可以帮忙的吗?
====================第二轮对话====================
====================思考过程====================
好的,用户问“你是谁”,我需要详细分析这个问题。首先,用户可能是在初次使用,想了解我的基本功能。他们可能想知道我是AI助手,还是真人。可能还有更深层的需求,比如确认我的可靠性和能力范围。
接下来,我需要确定回答的结构。通常这类问题需要明确说明身份、开发公司、功能以及如何帮助用户。要避免技术术语,保持口语化,让用户容易理解。
然后,检查是否有需要强调的部分。比如强调实时联网能力,这是和之前版本的不同之处,用户可能关心我能否提供最新信息。此外,隐私和安全也很重要,用户可能担心数据问题,需要明确说明保护措施。
还要考虑用户可能的后续问题,比如如何使用我的功能,或者具体的应用场景。所以在回答中可以提到多种任务类型,覆盖常见需求,让用户知道可以如何利用我。
最后,保持友好和开放的态度,鼓励用户提问,促进进一步互动。需要确保回答全面,同时简洁明了,不冗长。这样用户能得到清晰的信息,并知道接下来可以如何与我交流。
====================最终答案====================
你好!我是DeepSeek-R1,一个由深度求索(DeepSeek)公司开发的智能助手,我擅长通过思考来帮您解答复杂的数学,代码和逻辑推理等理工类问题,并能用通俗易懂的方式解释专业概念。目前我已联网,可随时为您查询最新信息。我会严格遵守隐私和安全准则,确保您的信息安全。有什么我可以帮您的吗?
Java
示例代码
// dashscope SDK的版本 >= 2.18.2
import java.util.Arrays;
import java.lang.System;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;
public class Main {
public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException {
Generation gen = new Generation();
Message userMsg1 = Message.builder()
.role(Role.USER.getValue())
.content("你好")
.build();
Message AssistantMsg = Message.builder()
.role(Role.ASSISTANT.getValue())
.content("你好!很高兴见到你,有什么我可以帮忙的吗?")
.build();
Message UserMsg2 = Message.builder()
.role(Role.USER.getValue())
.content("你是谁")
.build();
GenerationParam param = GenerationParam.builder()
// 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("deepseek-r1")
.messages(Arrays.asList(userMsg1,AssistantMsg,UserMsg2))
// 不可以设置为"text"
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.build();
return gen.call(param);
}
public static void main(String[] args) {
try {
GenerationResult result = callWithMessage();
System.out.println("思考过程:");
System.out.println(result.getOutput().getChoices().get(0).getMessage().getReasoningContent());
System.out.println("回复内容:");
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent());
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
// 使用日志框架记录异常信息
System.err.println("An error occurred while calling the generation service: " + e.getMessage());
}
System.exit(0);
}
}
返回结果
思考过程:
好的,用户问“你是谁”,我需要用中文详细回答,并解释我的身份和功能。首先,用户可能刚接触我,或者想确认我的基本信息。之前用户说过“你好”,我回应了,现在他们进一步询问身份。我需要保持友好,同时准确说明我是由深度求索开发的智能助手DeepSeek-R1,专注于通过算法处理提供帮助。还要强调我的职责是信息查询、问题解答等,并说明我的局限性,比如不联网、知识截止到2023年。要确保回答清晰,避免技术术语,让用户容易理解。可能用户想知道我的能力范围,所以需要涵盖用途和限制。此外,用户可能关心隐私,可以提到不保留对话信息。最后保持开放结尾,邀请用户提问。检查是否符合格式要求,没有使用Markdown,分段落自然。现在组织语言,确保口语化,自然流畅。
回复内容:
你好!我是DeepSeek-R1,一个由深度求索(DeepSeek)公司开发的智能助手,擅长通过算法逻辑处理信息来协助解决问题。我的主要职责是提供信息查询、日常问题解答、实用建议及学术研究辅助等服务,但请注意我的知识库截至2023年,且无法主动联网更新信息。我们的对话内容不会被留存,你可随时放心交流。有什么具体需求吗?我很乐意为你提供帮助。
HTTP
示例代码
curl
curl -X POST "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-r1",
"input":{
"messages":[
{
"role": "user",
"content": "你好"
},
{
"role": "assistant",
"content": "你好!很高兴见到你,有什么我可以帮忙的吗?"
},
{
"role": "user",
"content": "你是谁?"
}
]
},
"parameters": {
"result_format": "message"
}
}'
返回结果
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "你好!我是DeepSeek-R1,一个由深度求索公司开发的人工智能助手,我擅长通过思考来帮您解答复杂的数学,代码和逻辑推理等理工类问题。如需最新模型体验,请前往深度求索的官方网站查询。",
"reasoning_content": "好的,用户问“你是谁?”,我需要回答这个问题。首先,我要回想一下之前设置的自我介绍内容,确保一致性。用户可能是刚开始使用,或者想确认我的身份和功能。\n\n我需要明确说明我是DeepSeek-R1,由深度求索公司开发的人工智能助手。要强调我的目的是帮助用户解决问题,提供信息,同时保持友好和专业的语气。\n\n同时,用户可能有更深层的需求,比如确认我的能力范围,或者想知道我与其他AI的不同。所以可以适当提到我的功能,比如回答问题、提供建议等,但不需要太详细,保持简洁。\n\n还要注意避免使用技术术语,保持回答自然易懂。最后,保持开放式的结尾,鼓励用户继续提问,促进进一步的交流。"
}
}
]
},
"usage": {
"total_tokens": 226,
"output_tokens": 206,
"input_tokens": 20
},
"request_id": "9fb73af5-940e-9107-a4b6-74c9e541eb3f"
}
流式输出
DeepSeek-V3.1 与 DeepSeek-R1 类模型可能会输出较长的思考过程,为了降低超时风险,建议您使用流式输出方式调用模型。
OpenAI兼容
Python
示例代码
from openai import OpenAI
import os
# 初始化OpenAI客户端
client = OpenAI(
# 如果没有配置环境变量,请用阿里云百炼API Key替换:api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
messages = [{"role": "user", "content": "你是谁"}]
completion = client.chat.completions.create(
model="deepseek-v3.1",
messages=messages,
extra_body={"enable_thinking": True},
stream=True,
# stream_options={
# "include_usage": True
# },
)
reasoning_content = "" # 完整思考过程
answer_content = "" # 完整回复
is_answering = False # 是否进入回复阶段
print("\n" + "=" * 20 + "思考过程" + "=" * 20 + "\n")
for chunk in completion:
if not chunk.choices:
print("\nUsage:")
print(chunk.usage)
continue
delta = chunk.choices[0].delta
# 只收集思考内容
if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
if not is_answering:
print(delta.reasoning_content, end="", flush=True)
reasoning_content += delta.reasoning_content
# 收到content,开始进行回复
if hasattr(delta, "content") and delta.content:
if not is_answering:
print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")
is_answering = True
print(delta.content, end="", flush=True)
answer_content += delta.content
返回结果
====================思考过程====================
唔,用户问了一个简单的自我介绍问题。这种问题很常见,需要快速清晰地表明身份和功能。考虑用轻松友好的语气介绍自己是DeepSeek-V3,并说明由深度求索公司创造。提到核心功能是解答问题和聊天陪伴,最后用开放性问题引导用户继续互动。不需要复杂信息,保持简洁明快就好。
====================完整回复====================
DeepSeek-V3,一个由深度求索公司创造的智能助手!我可以帮助你解答各种问题、提供建议、进行知识查询,甚至陪你聊天!无论是学习、工作还是日常生活中的疑问,尽管问我吧~✨有什么我可以帮你的吗?
Node.js
示例代码
import OpenAI from "openai";
import process from 'process';
// 初始化 openai 客户端
const openai = new OpenAI({
apiKey: process.env.DASHSCOPE_API_KEY, // 从环境变量读取
baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1'
});
let reasoningContent = '';
let answerContent = '';
let isAnswering = false;
async function main() {
try {
const messages = [{ role: 'user', content: '你是谁' }];
const stream = await openai.chat.completions.create({
model: 'deepseek-v3.1',
messages,
stream: true,
enable_thinking: true
});
console.log('\n' + '='.repeat(20) + '思考过程' + '='.repeat(20) + '\n');
for await (const chunk of stream) {
if (!chunk.choices?.length) {
console.log('\nUsage:');
console.log(chunk.usage);
continue;
}
const delta = chunk.choices[0].delta;
// 只收集思考内容
if (delta.reasoning_content !== undefined && delta.reasoning_content !== null) {
if (!isAnswering) {
process.stdout.write(delta.reasoning_content);
}
reasoningContent += delta.reasoning_content;
}
// 收到content,开始进行回复
if (delta.content !== undefined && delta.content) {
if (!isAnswering) {
console.log('\n' + '='.repeat(20) + '完整回复' + '='.repeat(20) + '\n');
isAnswering = true;
}
process.stdout.write(delta.content);
answerContent += delta.content;
}
}
} catch (error) {
console.error('Error:', error);
}
}
main();
返回结果
====================思考过程====================
唔,用户问了一个简单的自我介绍问题。这种问题很常见,需要快速清晰地表明身份和功能。考虑用轻松友好的语气介绍自己是DeepSeek-V3,并说明由深度求索公司创造。提到核心功能是解答问题和聊天陪伴,最后用开放性问题引导用户继续互动。不需要复杂信息,保持简洁明快就好。
====================完整回复====================
DeepSeek-V3,一个由深度求索公司创造的智能助手!我可以帮助你解答各种问题、提供建议、进行知识查询,甚至陪你聊天!无论是学习、工作还是日常生活中的疑问,尽管问我吧~✨有什么我可以帮你的吗?
HTTP
示例代码
curl
curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v3.1",
"messages": [
{
"role": "user",
"content": "你是谁"
}
],
"stream": true,
"stream_options": {
"include_usage": true
},
"enable_thinking": true
}'
DashScope
Python
示例代码
import os
from dashscope import Generation
messages = [{"role": "user", "content": "你是谁?"}]
completion = Generation.call(
# 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key = "sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
model="deepseek-v3.1",
messages=messages,
result_format="message",
enable_thinking=True,
stream=True,
incremental_output=True,
)
# 定义完整思考过程
reasoning_content = ""
# 定义完整回复
answer_content = ""
# 判断是否结束思考过程并开始回复
is_answering = False
print("=" * 20 + "思考过程" + "=" * 20)
for chunk in completion:
# 如果思考过程与回复皆为空,则忽略
if (
chunk.output.choices[0].message.content == ""
and chunk.output.choices[0].message.reasoning_content == ""
):
pass
else:
# 如果当前为思考过程
if (
chunk.output.choices[0].message.reasoning_content != ""
and chunk.output.choices[0].message.content == ""
):
print(chunk.output.choices[0].message.reasoning_content, end="", flush=True)
reasoning_content += chunk.output.choices[0].message.reasoning_content
# 如果当前为回复
elif chunk.output.choices[0].message.content != "":
if not is_answering:
print("\n" + "=" * 20 + "完整回复" + "=" * 20)
is_answering = True
print(chunk.output.choices[0].message.content, end="", flush=True)
answer_content += chunk.output.choices[0].message.content
# 如果您需要打印完整思考过程与完整回复,请将以下代码解除注释后运行
# print("=" * 20 + "完整思考过程" + "=" * 20 + "\n")
# print(f"{reasoning_content}")
# print("=" * 20 + "完整回复" + "=" * 20 + "\n")
# print(f"{answer_content}")
返回结果
====================思考过程====================
唔,用户问了一个简单的自我介绍问题。这种问题很常见,需要快速清晰地表明身份和功能。考虑用轻松友好的语气介绍自己是DeepSeek-V3,并说明由深度求索公司创造。提到核心功能是解答问题和聊天陪伴,最后用开放性问题引导用户继续互动。不需要复杂信息,保持简洁明快就好。
====================完整回复====================
DeepSeek-V3,一个由深度求索公司创造的智能助手!我可以帮助你解答各种问题、提供建议、进行知识查询,甚至陪你聊天!无论是学习、工作还是日常生活中的疑问,尽管问我吧~✨有什么我可以帮你的吗?
Java
示例代码
// dashscope SDK的版本 >= 2.19.4
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;
import io.reactivex.Flowable;
import java.lang.System;
import java.util.Arrays;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
private static final Logger logger = LoggerFactory.getLogger(Main.class);
private static StringBuilder reasoningContent = new StringBuilder();
private static StringBuilder finalContent = new StringBuilder();
private static boolean isFirstPrint = true;
private static void handleGenerationResult(GenerationResult message) {
String reasoning = message.getOutput().getChoices().get(0).getMessage().getReasoningContent();
String content = message.getOutput().getChoices().get(0).getMessage().getContent();
if (!reasoning.isEmpty()) {
reasoningContent.append(reasoning);
if (isFirstPrint) {
System.out.println("====================思考过程====================");
isFirstPrint = false;
}
System.out.print(reasoning);
}
if (!content.isEmpty()) {
finalContent.append(content);
if (!isFirstPrint) {
System.out.println("\n====================完整回复====================");
isFirstPrint = true;
}
System.out.print(content);
}
}
private static GenerationParam buildGenerationParam(Message userMsg) {
return GenerationParam.builder()
// 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("deepseek-v3.1")
.enableThinking(true)
.incrementalOutput(true)
.resultFormat("message")
.messages(Arrays.asList(userMsg))
.build();
}
public static void streamCallWithMessage(Generation gen, Message userMsg)
throws NoApiKeyException, ApiException, InputRequiredException {
GenerationParam param = buildGenerationParam(userMsg);
Flowable<GenerationResult> result = gen.streamCall(param);
result.blockingForEach(message -> handleGenerationResult(message));
}
public static void main(String[] args) {
try {
Generation gen = new Generation();
Message userMsg = Message.builder().role(Role.USER.getValue()).content("你是谁?").build();
streamCallWithMessage(gen, userMsg);
// 打印最终结果
// if (reasoningContent.length() > 0) {
// System.out.println("\n====================完整回复====================");
// System.out.println(finalContent.toString());
// }
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
logger.error("An exception occurred: {}", e.getMessage());
}
System.exit(0);
}
}
返回结果
====================思考过程====================
唔,用户问了一个简单的自我介绍问题。这种问题很常见,需要快速清晰地表明身份和功能。考虑用轻松友好的语气介绍自己是DeepSeek-V3,并说明由深度求索公司创造。提到核心功能是解答问题和聊天陪伴,最后用开放性问题引导用户继续互动。不需要复杂信息,保持简洁明快就好。
====================完整回复====================
DeepSeek-V3,一个由深度求索公司创造的智能助手!我可以帮助你解答各种问题、提供建议、进行知识查询,甚至陪你聊天!无论是学习、工作还是日常生活中的疑问,尽管问我吧~✨有什么我可以帮你的吗?
HTTP
示例代码
curl
curl -X POST "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-H "X-DashScope-SSE: enable" \
-d '{
"model": "deepseek-v3.1",
"input":{
"messages":[
{
"role": "user",
"content": "你是谁?"
}
]
},
"parameters":{
"enable_thinking": true,
"incremental_output": true,
"result_format": "message"
}
}'
注意事项
稳定性:如果执行后没有响应、响应超时或者报错An internal error has occured, please try again later or contact service support,请尝试重试或者更换其他 DeepSeek 模型,也可以尝试使用 Qwen 最新的 Qwen3 模型(可替代 deepseek-r1 模型)或qwen-max-2025-01-25(可替代 deepseek-v3 模型)。
高峰期任务可能排队或失败,阿里云百炼持续扩容中,调用失败请稍后重试。
工具调用
deepseek-r1、deepseek-r1-0528、deepseek-v3 支持Function Calling。
DeepSeek-V3.1
不支持的功能
参数默认值
temperature
:0.6;top_p
:0.95;repetition_penalty
:1.0。
DeepSeek-R1 类模型
不支持的功能
不支持的参数
temperature
、top_p
、presence_penalty
、frequency_penalty
、logprobs
、top_logprobs
设置这些参数都不会生效,即使没有输出错误提示。
DeepSeek官方不建议设置 System Message,原文:"Avoid adding a system prompt; all instructions should be contained within the user prompt."
DeepSeek-V3
参数默认值:
temperature
:0.7(取值范围是[0:2)
);top_p
:0.6;presence_penalty
:0.95。
不支持设置的参数和功能:
frequency_penalty
、logprobs
、top_logprobs
参数;不支持 JSON Output 功能,敬请关注后续动态。当前 DeepSeek-V3 为 2024 年 12 月发布的版本。
阿里云百炼应用:已支持接入 DeepSeek 模型。
模型在线体验:已支持体验 DeepSeek 模型。
联网搜索
模型调用当前暂不支持联网搜索。
深度思考:只要调用 DeepSeek-R1 类模型即代表开启深度思考(深度思考过程通过
reasoning_content
返回)。
常见问题
为什么新版 DeepSeek-R1 响应变慢?
新版 DeepSeek-R1 模型增强了推理过程中的思考深度,导致响应时间长于上一版模型。
DeepSeek-R1-0528 官方仓库:“源于推理过程中思考深度的增强:在 AIME 测试集中,之前的模型平均每题使用 12K 个标记,而新版本平均使用 23K 个标记。”
免费额度用完后如何购买 Token?
您可以访问费用与成本中心进行充值,确保您的账户没有欠费即可调用 DeepSeek 模型。
调用 DeepSeek 模型会自动扣费,出账周期为一小时,消费明细请前往账单详情进行查看。
如何接入Chatbox、Cherry Studio或Dify?
此处以使用较多的工具为例,其它大模型工具接入的方法较为类似。
Chatbox
请参见Chatbox。
Cherry Studio
单击左下角的设置按钮,在模型服务栏中找到阿里云百炼,API 密钥输入您的 API Key,获取方法请参见:获取API Key;API 地址填入
https://dashscope.aliyuncs.com/compatible-mode/v1/
;单击添加。在模型 ID填入您需要使用的 DeepSeek 模型,此处以 deepseek-r1 为例; 模型名称与分组名称会自动生成。
在界面上方选中添加的模型。输入“你是谁”进行测试:
Dify
请参见Dify。
可以上传图片或文档进行提问吗?
DeepSeek 模型仅支持文本输入,不支持输入图片或文档。通义千问VL模型支持图片输入,Qwen- Long模型支持文档输入。
如何查看Token消耗量及调用次数?
模型调用完一小时后,在模型观测页面设置查询条件(例如,选择时间范围、业务空间等),再在模型列表区域找到目标模型并单击操作列的监控,即可查看该模型的调用统计结果。具体请参见用量与性能观测文档。
数据按小时更新,高峰期可能有小时级延迟,请您耐心等待。
还有哪些使用DeepSeek的方式?
在百炼平台使用DeepSeek有三种方式:
除此之外,如需自行部署DeepSeek然后再调用,请参考技术解决方案。
错误码
如果执行报错,请参见错误信息进行解决。