阿里云百炼平台对接DeepSeek官方文档

目录

1、支持的模型

2、快速开始

2.1、OpenAI兼容

2.1.1、python示例代码

返回结果

2.1.2、Node.js示例代码

返回结果

2.1.3、HTTP示例代码

返回结果

2.2、DashScope

2.2.1、python示例代码

返回结果

2.2.2、java示例代码

返回结果

2.2.3、HTTP代码示例

返回结果

3、多轮对话

3.1、OpenAI兼容

3.1.1、Python代码示例

返回结果

3.1.2、Node.js代码示例

返回结果

3.1.3、HTTP代码示例

返回结果

3.2、DashScope

3.2.1、python代码示例

返回结果

3.2.2、java代码示例

返回结果

3.2.3、HTTP代码示例

返回结果

4、流式输出

4.1、OpenAI兼容

4.1.1、python代码示例

返回结果

4.1.2、Node.js代码示例

返回结果

4.1.3、HTTP代码示例

返回结果

4.2、DashScope

4.2.1、python代码示例

返回结果

4.2.2、Java代码示例

返回结果

4.2.3、HTTP代码示例

返回结果

5、注意事项

5.1、稳定性

5.2、DeepSeek-R1 类模型

5.3、DeepSeek-V3

5.4、联网搜索与深度思考

6、常见问题

7、错误码


本文介绍了在百炼平台通过API调用DeepSeek系列模型的方法 。其中 deepseek-r1 与 deepseek-v3 分别有 100万的免费 Token,部分蒸馏模型限时免费体验。

1、支持的模型

DeepSeek系列模型是由深度求索(DeepSeek)公司推出的大语言模型。

DeepSeek-R1 模型包含 671B 参数,激活 37B,在后训练阶段大规模使用了强化学习技术,在仅有极少标注数据的情况下,极大提升了模型推理能力,尤其在数学、代码、自然语言推理等任务上。

DeepSeek-V3 为MoE 模型,671B 参数,激活 37B,在 14.8T Token 上进行了预训练,在长文本、代码、数学、百科、中文能力上表现优秀。

DeepSeek-R1-Distill 系列模型是基于知识蒸馏技术,通过使用 DeepSeek-R1 生成的训练样本对 Qwen、Llama 等开源大模型进行微调训练后,所得到的增强型模型。

以上模型非集成第三方服务,均部署在阿里云百炼服务器上。

最大输出的 Token 数包含思考过程(reasoning_content字段)与最终输出(content字段)的 Token 之和。

限流请参考DeepSeek 限流条件

2、快速开始

API 使用前提:已获取API Key并完成配置API Key到环境变量。如果通过SDK调用,需要安装 OpenAI 或 DashScope SDK(DashScope Java SDK 版本需要不低于2.18.2)。

如果您首次使用百炼,请参考首次调用通义千问API文档进行百炼服务的开通与计算环境的配置,并将步骤 2:调用大模型API代码中的model参数修改为上表中您需要调用的模型名称。

由于 DeepSeek-R1 类模型的思考过程可能较长,可能导致响应慢或超时,建议您优先使用流式输出方式调用。

2.1、OpenAI兼容

您可以通过 OpenAI SDK 或 OpenAI 兼容的HTTP方式快速体验DeepSeek模型。

2.1.1、python示例代码
import os
from openai import OpenAI
​
client = OpenAI(
    # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"), # 如何获取API Key:https://help.aliyun.com/zh/model-studio/developer-reference/get-api-key
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
​
completion = client.chat.completions.create(
    model="deepseek-r1",  # 此处以 deepseek-r1 为例,可按需更换模型名称。
    messages=[
        {'role': 'user', 'content': '9.9和9.11谁大'}
        ]
)
​
# 通过reasoning_content字段打印思考过程
print("思考过程:")
print(completion.choices[0].message.reasoning_content)
# 通过content字段打印最终答案
print("最终答案:")
print(completion.choices[0].message.content)
返回结果
思考过程:
​
嗯,用户问的是9.9和9.11谁大。首先,我需要确认这两个数字的数值到底是多少。表面上看起来都是小数,但可能用户有不同的表示方式需要注意。
​
首先,9.9应该就是平常的小数,也就是9加9/10,等于9.9。而9.11可能有两种解读:一种是直接的小数,即9加11/100,也就是9.11;另一种可能是版本号或者某种编号,比如软件版本中的9.9和9.11,这时候可能需要按顺序比较,比如9.9之后是9.10,再是9.11,所以9.11会比9.9大。不过通常情况下,数学问题中的数字还是按照数值来比较的,所以应该排除版本号的解释,直接比较数值大小。
​
...
​
总结一下,正确的数值比较中,9.9等于9.90,而9.11等于9.11,所以9.90大于9.11,也就是9.9大于9.11。不过为了避免混淆,可能用户需要更详细的步骤解释。
​
最终答案:
9.9比9.11大。
​
**详细比较步骤:**
​
1. **统一小数位数**:将9.9写成9.90,使其与9.11的小数位数一致。
2. **逐位比较**:
   - **整数部分**:两者均为9,相等。
   - **小数部分**:比较0.90(9.9的小数部分)和0.11(9.11的小数部分)。由于0.90 > 0.11,因此9.90 > 9.11。
   
**结论**:9.9的数值大于9.11。
​
若涉及版本号(如软件版本),通常按顺序排列为9.9 → 9.10 → 9.11,此时9.11较新。但按纯数学数值比较,9.9更大。
2.1.2、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-r1",  // 此处以 deepseek-r1 为例,可按需更换模型名称。
    messages: [
        { role: "user", content: "9.9和9.11谁大" }
    ],
});
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的小数部分是0.9,也就是十分位上的数字是9,而百分位上的数字是0,因为9.9其实可以写成9.90。而9.11的小数部分是0.11,十分位是1,百分位是1。现在的问题是,如何比较这两个小数部分的大小。
​
...
​
或者,用时间来做例子,假设是9.9小时和9.11小时,9.9小时等于9小时54分钟(因为0.9小时×60分钟=54分钟),而9.11小时是9小时6.6分钟(0.11×60≈6.6分钟),显然,9小时54分钟比9小时6分钟多得多,所以9.9小时更大。
​
通过这些不同的例子,都验证了9.9确实比9.11大。因此,可以确定答案是正确的。
​
最终答案:
9.9比9.11大。
​
**步骤解析:**
​
1. **整数部分比较**:两个数的整数部分均为9,因此需进一步比较小数部分。
2. **小数部分对齐位数**:将9.9补全为9.90,与9.11的小数部分对齐(0.90 vs 0.11)。
3. **逐位比较小数部分**:
   - **十分位**:9(来自9.90) > 1(来自9.11),无需继续比较后续位数。
4. **结论**:由于十分位上9 > 1,故9.90(即9.9)大于9.11。
​
**验证方法:**
- **减法验证**:9.90 - 9.11 = 0.79(正数,说明9.9更大)。
- **分数转换**:9.9 = 990/100,9.11 = 911/100,990 > 911。
- **实际意义**:如货币中9.9元(9元9角)多于9.11元(9元1角1分)。
​
综上,**9.9 > 9.11**。
2.1.3、HTTP示例代码
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": "9.9和9.11谁大"
        }
    ]
}'
返回结果
{
    "choices": [
        {
            "message": {
                "content": "9.9比9.11大。\n\n**解析:**\n1. **统一小数位数:** 将9.9补位为9.90,与9.11对齐位数。\n2. **逐位比较:**\n   - 整数部分均为9,相等。\n   - 第一位小数:9(来自9.90)> 1(来自9.11),此时已可判定大小。\n3. **结论:** 9.90 > 9.11,即 **9.9 > 9.11**。\n\n**常见误解提醒:**  \n若直接比较小数点后的数字(如误认为“11 > 9”),可能得出错误结论。需注意小数位的实际值(十分位、百分位等),补零对齐后再比较。",
                "reasoning_content": "\n嗯,用户问的是9.9和9.11谁大。这个问题看起来好像挺简单的,但可能有些小陷阱,特别是涉及到小数点的比较。首先,我需要确认用户是否在问数字的大小比较,还是有没有其他可能的含义,比如日期之类的。不过根据数字的写法,应该是数字比较。\n\n首先,我需要明确这两个数的结构。9.9和9.11。这时候可能有些人会直接比较小数点后的数字,比如9和11,认为11比9大,所以9.11更大。但这种比较方法其实是错误的,因为小数点后的位数不同,需要将它们转换成相同位数来比较。\n\n正确的做法应该是将两个数统一到相同的小数位数。比如,9.9可以写成9.90,而9.11保持不变。这样的话,比较的话就是9.90和9.11。这时候,从小数点后第一位开始比较,第一位都是9,接着第二位是0和1。因为0小于1,所以9.90小于9.11,也就是9.9小于9.11。\n\n不过,用户可能有不同的理解,特别是如果他们对小数比较不熟悉的话,可能会误以为9.11更大,因为11比9大。这时候需要解释清楚位数的不同带来的影响,比如小数点后的第一位是十分位,第二位是百分位,所以9.9实际上是9又十分之九,而9.11是9又百分之十一,换算成小数的话,0.9等于0.90,而0.11是0.11,显然0.90更大,所以这个时候反而9.9更大?\n\n啊,这里好像我之前的分析有问题。这时候需要再仔细计算一下。因为当我们将9.9写成9.90,而9.11是9.11的话,比较的话应该从高位到低位依次比较。比如,整数部分都是9,所以相同。然后第一位小数,9和1比较,9大于1,所以这时候9.90已经比9.11大了,所以结论是9.9大于9.11?\n\n等等,这里好像矛盾了。这说明我之前犯了错误。为什么会这样呢?原来在比较小数时,应该逐位比较。例如:\n\n9.9 和 9.11\n\n将9.9写成9.90:\n\n比较整数部分:都是9,相等。\n比较第一位小数:9(来自9.90)和1(来自9.11)。因为9 > 1,所以整个数9.90大于9.11,所以9.9大于9.11。\n\n这样一来,之前的结论是错误的,正确的结论应该是9.9更大。这说明我需要仔细检查自己的思路,避免犯低级错误。\n\n可能用户在这里容易混淆,因为9.11的小数部分有两位,可能以为0.11比0.9大,但实际上0.9是0.90,而0.90大于0.11。所以正确的比较是9.9更大。\n\n总结来说,正确的答案是9.9比9.11大。需要确保在比较的时候注意小数位数,补全后再逐位比较。\n",
                "role": "assistant"
            },
            "finish_reason": "stop",
            "index": 0,
            "logprobs": null
        }
    ],
    "object": "chat.completion",
    "usage": {
        "prompt_tokens": 19,
        "completion_tokens": 797,
        "total_tokens": 816
    },
    "created": 1739069910,
    "system_fingerprint": null,
    "model": "deepseek-r1",
    "id": "chatcmpl-e55cdb8a-9ce1-9662-b87c-cf3da706e4f3"
}

2.2、DashScope

您可以通过 DashScope SDK 或 HTTP 方式快速体验 DeepSeek 模型。

2.2.1、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-r1", # 此处以qwen-plus为例,可按需更换模型名称。模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
    messages=messages,
    result_format='message'
    )
print("="*20+"思考过程"+"="*20)
print(response.output.choices[0].message.reasoning_content)
print("="*20+"最终答案"+"="*20)
print(response.output.choices[0].message.content)
返回结果
====================思考过程====================
嗯,用户问我是谁,我需要用中文回答。首先,我应该按照之前设定的身份来回应,说明我是DeepSeek-R1,由深度求索公司开发的人工智能助手。要确保回答简洁明了,同时保持友好和乐于助人的语气。用户可能刚接触,所以不需要太技术化的解释,但要涵盖基本功能,比如回答问题、提供信息、建议等。还要记得提到持续学习和更新,让用户知道我的知识库是最新的。另外,要避免任何复杂术语,保持自然的口语化表达。最后,可以以询问用户需要什么帮助来结尾,促进进一步的互动。检查有没有遗漏的部分,比如公司名称是否正确,功能是否全面,有没有语法错误。确保回答符合中文习惯,没有翻译腔。这样应该能清楚回答用户的问题了。
====================最终答案====================
您好!我是DeepSeek-R1,一个由深度求索(DeepSeek)公司开发的人工智能助手。我擅长通过思考来帮您解答复杂的数学,代码和逻辑推理等理工类问题,并通过友好、直观的方式为您提供信息咨询和辅助决策。我会持续学习和更新,以更好地为您提供服务。请问有什么可以帮您?
2.2.2、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-r1")
                .messages(Arrays.asList(userMsg))
                .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)公司开发的智能助手DeepSeek-R1。如您有任何问题,我会尽我所能为您提供帮助。
回复内容:
您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何问题,我会尽我所能为您提供帮助。
2.2.3、HTTP代码示例
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": "你是谁?"
            }
        ]
    },
    "parameters": {
        "result_format": "message"
    }
}'
返回结果
{
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": "您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何问题,我会尽我所能为您提供帮助。",
                    "reasoning_content": "您好&#x
### Java中阿里云百炼DeepSeek模型JsonUtils类初始化失败解决方案 当遇到`Could not initialize class`错误时,通常意味着静态初始化过程中出现了异常。对于阿里云百炼DeepSeek中的`JsonUtils`类来说,可能的原因包括但不限于依赖库缺失、配置文件路径不正确或是环境变量未设置等问题。 #### 可能原因分析 1. **缺少必要的依赖项** 如果项目构建工具(如Maven或Gradle)未能成功下载所需的第三方库,则可能导致此类问题的发生。应检查项目的pom.xml或build.gradle文件,确认已加入所有必需的依赖声明[^1]。 2. **资源加载失败** `JsonUtils`内部可能会尝试读取某些资源配置文件来完成自身的初始化工作。如果这些文件不存在于预期位置或者其内容不符合规定格式,同样会引发类似的错误消息。建议核查相关资源的位置以及访问权限是否恰当[^2]。 3. **版本兼容性冲突** 不同版本之间的API变更也可能造成此类情况发生。特别是当使用的SDK或其他组件不是最新稳定版时,更应该留意是否存在已知Bug报告并考虑升级到合适版本以解决问题[^3]。 4. **JVM参数不当** 对于一些特定场景下的应用部署而言,适当调整JVM启动参数有时可以有效规避因内存不足等原因引起的类加载器行为异常现象。例如增加堆大小(-Xmx),启用GC日志记录选项等措施均有助于诊断潜在性能瓶颈所在之处。 #### 实践操作指南 针对上述可能性逐一排查: - 审查当前工程结构及其所引用的所有外部包清单; - 查看是否有任何警告提示关于找不到指定资源的信息; - 尝试更新至最新的官方发行版本,并参照官方文档重新配置集成方式; - 调整虚拟机运行参数直至满足最低硬件需求标准为止; 另外,在实际编码阶段还应注意遵循最佳实践原则,比如采用懒加载模式延迟实例化开销较大的成员属性直到真正需要用到它们的时候再创建出来,从而减少不必要的即时执行风险。 ```java public class JsonUtilExample { private static volatile JsonUtils instance; public static synchronized JsonUtils getInstance() { if (instance == null) { try { Class.forName("com.aliyun.bailian.deepseek.JsonUtils"); instance = new JsonUtils(); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } return instance; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hao_kkkkk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值