1、DeepSeek简介
DeepSeek的火热让全世界见证了一场国产AI大模型走向巅峰的盛宴。DeepSeek的横空出世一方面让AI大模型的格局得到重塑,另一方面,对于普通人来说,也有机会零距离的体验到更懂国人的AI大模型。从很多使用过后的小伙伴们的反馈来看,DeepSeek的回答更有作为”人”的人性且有温度的回答,另一方面,很多团以开始尝试本地部署DeepSeek模型,不过考虑到部署依颊的硬件环境资源开销巨大,所以许多云厂商陆续入场,提供低成本、甚至接近零成本的接入方式,方便开发者或应用对接者快速使用,比如腾讯元宝、阿里云百炼平台等。
本文以阿里云百炼平台为例,分享如何基于阿里云百炼平台快速接入和使用DeepSeek模型。
2、阿里百炼
阿里百炼调用模型服务平台接口的流程包括以下几步:
-
注册并登录模型服务平台
官网地址:https://www.aliyun.com/product/bailian -
申请调用模型API的Key:
当您调用大模型时,需要获取API Key作为调用时的鉴权凭证。
-
查看接口文档
-
调用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" }