当前位置: 首页 > article >正文

【JAVA】阿里云百炼平台对接DeepSeek-V3大模型使用详解

1、DeepSeek简介

DeepSeek的火热让全世界见证了一场国产AI大模型走向巅峰的盛宴。DeepSeek的横空出世一方面让AI大模型的格局得到重塑,另一方面,对于普通人来说,也有机会零距离的体验到更懂国人的AI大模型。从很多使用过后的小伙伴们的反馈来看,DeepSeek的回答更有作为”人”的人性且有温度的回答,另一方面,很多团以开始尝试本地部署DeepSeek模型,不过考虑到部署依颊的硬件环境资源开销巨大,所以许多云厂商陆续入场,提供低成本、甚至接近零成本的接入方式,方便开发者或应用对接者快速使用,比如腾讯元宝、阿里云百炼平台等。

本文以阿里云百炼平台为例,分享如何基于阿里云百炼平台快速接入和使用DeepSeek模型。

2、阿里百炼

阿里百炼调用模型服务平台接口的流程包括以下几步:

  1. 注册并登录模型服务平台

    官网地址:https://www.aliyun.com/product/bailian
  2. 申请调用模型API的Key:

    当您调用大模型时,需要获取API Key作为调用时的鉴权凭证。

  3. 查看接口文档

  4. 调用API。(调用方式SDK或者HTTP的方式)

3、JAVA调用

3.1 JAR包引用

      <dependency>
          <groupId>com.squareup.okhttp3</groupId>
          <artifactId>okhttp</artifactId>
          <version>4.9.3</version>
      </dependency>

3.2 代码

import com.google.gson.Gson;
import com.google.gson.JsonObject;
import okhttp3.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;


public class AliDs {
    private static final Logger LOGGER = LoggerFactory.getLogger(AliDs.class);
    // OpenAI API 密钥
    private static final String API_KEY = "sk-*****";
    // OpenAI API 基础 URL
    private static final String BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions";
    // 模型名称
    private static final String MODEL = "deepseek-v3";
    // 温度参数
    private static final double TEMPERATURE = 0.30;
    private static OkHttpClient client = new OkHttpClient.Builder()
            .connectTimeout(240, TimeUnit.SECONDS)  // 连接超时时间
            .readTimeout(240, TimeUnit.SECONDS)     // 读取超时时间
            .writeTimeout(240, TimeUnit.SECONDS)    // 写入超时时间
            .build();

    public static void main(String[] args) {
        long startTime = System.currentTimeMillis();
        JsonObject result = doTask();
        LOGGER.info(result.toString());
        long endTime = System.currentTimeMillis();
        long time = (endTime - startTime) / 1000;
        LOGGER.info("运行时间:" + time + "秒");
    }

    public static JsonObject doTask() {
        try {
            // 构建消息列表
            List<JsonObject> messages = new ArrayList<>();
            JsonObject userMessage = new JsonObject();
            userMessage.addProperty("role","user");
            userMessage.addProperty("content", "你是谁?");
            messages.add(userMessage);

            // 调用 chat-completion
            String completionResponse = chatCompletion(client, messages);
            System.out.println(completionResponse);

            JsonObject jsonObject = new Gson().fromJson(completionResponse, JsonObject.class);
            return jsonObject;
        } catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }

    // 调用 chat-completion 接口
    private static String chatCompletion(OkHttpClient client, List<JsonObject> messages) {
        JsonObject requestBody = new JsonObject();
        requestBody.addProperty("model", MODEL);
        requestBody.add("messages", new Gson().toJsonTree(messages));
        JsonObject responseFormat = new JsonObject();
        responseFormat.addProperty("type", "json_object");
        requestBody.add("response_format", responseFormat);
        requestBody.addProperty("temperature", TEMPERATURE);
//        requestBody.addProperty("stream", false);

        Request request = new Request.Builder()
                .url(BASE_URL)
                .addHeader("Authorization", "Bearer " + API_KEY)
                .addHeader("Content-Type", "application/json")
                .post(RequestBody.create(requestBody.toString(), MediaType.parse("application/json")))
                .build();

        try (Response response = client.newCall(request).execute()) {
            if (!response.isSuccessful()) {
                throw new IOException("Unexpected code " + response);
            }
            String responseBody = response.body().string();
            return responseBody;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

}

3.3 输出结果

{
    "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"
}

http://www.kler.cn/a/566366.html

相关文章:

  • (十 三)趣学设计模式 之 模版方法模式!
  • Claude 3.7 Sonnet深度解析:混合推理模型如何重塑AI编程能力
  • docker 占用系统空间太大了,整体迁移到挂载的其他磁盘|【当前普通用户使用docker时,无法指定镜像、容器安装位置【无法指定】】
  • 二、QT和驱动模块实现智能家居----1、使用ADB
  • NO.21十六届蓝桥杯备战|一维数组|范围for|memset|memcpy(C++)
  • Milvus高性能向量数据库与大模型结合
  • 【微知】git 如何修改某个tag名字?如何根据某个commit创建一个tag?
  • DeepSeep开源周,第三天:DeepGEMM是啥?
  • 2021-05-27 C++找出矩阵数组中值最大的元素和它在数组中的位置
  • 005 公网访问 docker rocketmq
  • 爬虫:一文掌握JavaScript hook的详细使用
  • 基于DeepSeek,构建个人本地RAG知识库
  • 基于ArcGIS Pro、R、INVEST的生态系统服务权衡与协同分析
  • 在VSCode 中使用通义灵码最新版详细教程
  • docker启动elasticsearch,挂载文件报错:Device or resource busy
  • Hi3516CV610车牌识别算法源码之——车牌识别算法初体验
  • 【Go】十八、http 调用服务的编写
  • DO-254航空标准飞行器电机控制器设计注意事项
  • 智慧校园平台在学生学习与生活中的应用
  • 从数据采集到存储:构建高可用个股资金流向分析系统