java-调用DeepSeek官方API
java-调用DeepSeek官方API,目前官方平台暂停了充值入口,所以该功能暂时可以在学习中使用下
- 2025-02-20 16:23:36 星期四
一、官方平台入口
1>.使用方式:
- 1.在开放平台注册账号
- 2.创建APIkey:
- 3.给你的账户进行充值(目前暂时无法充值)
- 4.按照以下流程,编写代码进行测试即可~
二、所需maven依赖:
<!--okhttp-->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.12.0</version>
</dependency>
三、具体代码如下:
1.核心代码:
private static final String API_URL = "https://api.deepseek.com/chat/completions";
private static final String API_KEY = "sk-6be5ceb9e6184***********"; //这里改成你自己的 api keys
/**
* DeepSeek生成阅读理解
*
* @param dto
* @return
*/
@Override
public String deepSeekGenerateArticle(NewAiRequestDTO dto) throws IOException {
if (StringUtils.isEmpty(dto.getWordList())) {
throw new RuntimeException("请选择单词!");
}
String todayWord = dto.getWordList().stream().collect(Collectors.joining(","));
String problem = "{" +
" reading: ," +
" translation: ," +
" exercises: [" +
" {" +
" question: 问题1," +
" options: [A) , B) , C), D) ]," +
" answer: B," +
" analysis: 正确答案是B。" +
" }," +
" ]" +
"}" +
" 根据这些单词:" + todayWord + ",生成一篇500个单词左右的英语阅读理解:,生成对应的阅读的翻译,以及该阅读的习题和答案解析,习题要求:5道习题,习题选项按照ABCD的形式显示,最后把阅读理解、翻译内容、习题和答案解析,以json格式返回,输出内容按照以上格式进行:";
log.info(problem);
CloseableHttpClient client = HttpClients.createDefault();
HttpPost request = new HttpPost(API_URL);
request.setHeader("Content-Type", "application/json");
request.setHeader("Authorization", "Bearer " + API_KEY);
// 请求体
String requestBody = String.format(
"{\"model\": \"deepseek-chat\", \"messages\": [{\"role\": \"user\", \"content\": \"%s\"}], \"stream\": false}", problem
);
// 解决中文乱码问题
StringEntity entity = new StringEntity(requestBody, "utf-8");
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
request.setEntity(entity);
//设置超时时间
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(120000)
.setSocketTimeout(120000)
.build();
request.setConfig(requestConfig);
// 发送请求并获取响应
String resultJson = "";
CloseableHttpResponse response = client.execute(request);
// 获取状态线对象,可以获取状态码和HTTP版本
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
// 返回响应内容
String result = EntityUtils.toString(response.getEntity(), "utf-8");
if (StringUtils.isNotEmpty(result)) {
JSONArray jsonArray = JSONArray.parseArray(com.alibaba.fastjson.JSONObject.parseObject(result).getString("choices"));
com.alibaba.fastjson.JSONObject jsonObject = jsonArray.getJSONObject(0);
com.alibaba.fastjson.JSONObject message = (com.alibaba.fastjson.JSONObject) jsonObject.get("message");
String content = message.get("content").toString();
//截取json内容
resultJson = extractString(content, "```json", "```");
log.info("生成内容,{}", resultJson);
if (StringUtils.isNotEmpty(resultJson)) {
NewAiArticle newAiArticle = new NewAiArticle();
newAiArticle.setClassRecordId(dto.getClassRecordId());
newAiArticle.setContent(resultJson);
newAiArticleMapper.insert(newAiArticle);
}
} else {
throw new RuntimeException("请求超时");
}
} else {
throw new RuntimeException("Failed response code: " + statusCode);
}
client.close();
return resultJson;
}
2.其他方法:
/**
* 截取{}中数据
*
* @param
* @return
*/
public static String extractString(String input, String start, String end) {
if (input.contains("json") || input.contains("```json")) {
int startIndex = input.indexOf(start);
if (startIndex == -1) return null;
int endIndex = input.indexOf(end, startIndex + start.length());
if (endIndex == -1) return null;
return input.substring(startIndex + start.length(), endIndex);
} else {
return input;
}
}
本文来自博客园,作者:青喺半掩眉砂,转载请注明原文链接:https://www.cnblogs.com/xiaoguo-java/p/18726981
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· spring官宣接入deepseek,真的太香了~