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

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

相关文章:

  • 互联网舆情大连网站seo
  • ppt中超链接网站怎么做怎么申请自己的网络平台
  • 网站开发学什么比较有优势软件开发工具
  • 国际消息新闻网站优化师
  • 四川电脑网站建设长沙网站优化推广方案
  • 中山快速做网站价格百度平台
  • DOM Node
  • 鸿蒙NEXT开发-Navigation组件导航
  • Python - Python操作Redis
  • JavaWeb后端基础(1)
  • 【Linux】Linux的基本指令(2)
  • 数据库数据恢复—SQL Server附加数据库报错“错误 823”怎么办?
  • PHP面试题--后端部分
  • 浅谈人工智能之Windows安装llama factory
  • vue使用a-table设置自定义合并字段实现某字段值相同则合并行
  • pyQT5简易教程(一):制作一个可以选择本地图片并显示的桌面应用
  • 455. 分发饼干(LeetCode)
  • Oracle 数据变化量查询
  • mac下载MAMP6.8.1;解决mac使用小皮面板安装php7.4
  • 动态表头导出EasyExcel
  • 基于C语言对CAPL语法基础的理解
  • 天梯赛:L2-001 紧急救援
  • 6.6.5 SQL访问控制
  • 第16届蓝桥杯模拟赛题解 第三场 Java
  • stm32使用(无线串口)实现收发、判断数据+DMA(HAL库)
  • 2022年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题10)-网络部分解析-附详细代码