java-调用火山引擎官方API

news/2025/2/23 0:24:05/文章来源:https://www.cnblogs.com/xiaoguo-java/p/18727056

java-调用火山引擎官方API(字节跳动旗下的AI服务平台),AI模型包括:DeepSeek、豆包、其他。。。
2025-02-20 16:33:06 星期四

一、官方平台入口:

入口如下:https://console.volcengine.com/user/basics/

1>.使用方式:

  • 1.在开放平台注册账号

具体按照指引及进行注册即可,包括实名认证、账号绑定登。

  • 2.获取并配置 API Key

入口如下:

https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey?apikey={}

打开火山方舟管理控制台,如下图:进行创建API Key

image

  • 3.在平台找到AI入口,选择合适的AI模型,参考对应的API文档对接即可
  • 4.这篇文章,记录下对接DeepSeek、豆包模型的方法

二、所需maven依赖:

<dependency><groupId>com.volcengine</groupId><artifactId>volcengine-java-sdk-ark-runtime</artifactId><version>LATEST</version>
</dependency>

三、具体代码如下:

核心代码:

package com.ruoyi.school.util;import com.volcengine.ark.runtime.exception.ArkHttpException;
import com.volcengine.ark.runtime.model.completion.chat.ChatCompletionRequest;
import com.volcengine.ark.runtime.model.completion.chat.ChatMessage;
import com.volcengine.ark.runtime.model.completion.chat.ChatMessageRole;
import com.volcengine.ark.runtime.service.ArkService;
import org.springframework.stereotype.Component;import java.util.ArrayList;
import java.util.List;/*** 火山引擎AI工具类*/
@Component
public class HuoShanAiUtils {//填写自己的APIKEYprivate static final String API_KEY = "7daf0c27-963a-4a11-***********";private static final String DEEPSEEK_V3_MODEL = "deepseek-v3-241226";private static final String DOUBAO_PRO_32K_MODEL = "doubao-pro-32k-241215";public static void main(String[] args) {ArkService service = ArkService.builder().apiKey(API_KEY).build();String problem="{" +"  reading: ," +"  translation: ," +"  exercises: [" +"    {" +"      question: 问题1," +"      options: [A) , B) , C) ]," +"      answer: B," +"      analysis: 正确答案是B。" +"    }," +"  ]" +"}" +"根据这些单词:write,climb,shop,message,twelfth,jump,生成一篇500个单词左右的英语阅读理解:,生成对应的阅读的翻译,以及该阅读的习题和答案解析,习题要求:5道习题,习题选项按照ABC的形式显示,最后把阅读理解、翻译内容、习题和答案解析,以json格式返回,输出内容按照以上格式进行:";System.out.println("\n----- streaming request -----");final List<ChatMessage> streamMessages = new ArrayList<>();final ChatMessage streamSystemMessage = ChatMessage.builder().role(ChatMessageRole.SYSTEM).content("你是豆包,是由字节跳动开发的 AI 人工智能助手").build();final ChatMessage streamUserMessage = ChatMessage.builder().role(ChatMessageRole.USER).content(problem).build();streamMessages.add(streamSystemMessage);streamMessages.add(streamUserMessage);ChatCompletionRequest streamChatCompletionRequest = ChatCompletionRequest.builder().model(DEEPSEEK_V3_MODEL).messages(streamMessages).build();try {service.streamChatCompletion(streamChatCompletionRequest).doOnError(Throwable::printStackTrace).blockingForEach(choice -> {if (choice.getChoices().size() > 0) {System.out.print(choice.getChoices().get(0).getMessage().getContent());}});} catch (ArkHttpException e) {System.out.print(e.toString());}service.shutdownExecutor();}/*** ChatCompletions-AI模型生成内容-DeepSeek* @param problem* @return*/public String chatCompletionsDeepSeek(String problem) {ArkService service = ArkService.builder().apiKey(API_KEY).build();StringBuilder resultBuilder = new StringBuilder();final List<ChatMessage> streamMessages = new ArrayList<>();final ChatMessage streamSystemMessage = ChatMessage.builder().role(ChatMessageRole.SYSTEM).content("你是豆包,是由字节跳动开发的 AI 人工智能助手").build();final ChatMessage streamUserMessage = ChatMessage.builder().role(ChatMessageRole.USER).content(problem).build();streamMessages.add(streamSystemMessage);streamMessages.add(streamUserMessage);ChatCompletionRequest streamChatCompletionRequest = ChatCompletionRequest.builder().model(DEEPSEEK_V3_MODEL).messages(streamMessages).build();try {service.streamChatCompletion(streamChatCompletionRequest).doOnError(Throwable::printStackTrace).blockingForEach(choice -> {if (choice.getChoices().size() > 0) {resultBuilder.append(choice.getChoices().get(0).getMessage().getContent());}});} catch (ArkHttpException e) {resultBuilder.append(e.toString());}service.shutdownExecutor();return resultBuilder.toString();}/*** ChatCompletions-AI模型生成内容-豆包* @param problem* @return*/public String chatCompletionsDouBao(String problem) {ArkService service = ArkService.builder().apiKey(API_KEY).build();StringBuilder resultBuilder = new StringBuilder();final List<ChatMessage> streamMessages = new ArrayList<>();final ChatMessage streamSystemMessage = ChatMessage.builder().role(ChatMessageRole.SYSTEM).content("你是豆包,是由字节跳动开发的 AI 人工智能助手").build();final ChatMessage streamUserMessage = ChatMessage.builder().role(ChatMessageRole.USER).content(problem).build();streamMessages.add(streamSystemMessage);streamMessages.add(streamUserMessage);ChatCompletionRequest streamChatCompletionRequest = ChatCompletionRequest.builder().model(DOUBAO_PRO_32K_MODEL).messages(streamMessages).build();try {service.streamChatCompletion(streamChatCompletionRequest).doOnError(Throwable::printStackTrace).blockingForEach(choice -> {if (choice.getChoices().size() > 0) {resultBuilder.append(choice.getChoices().get(0).getMessage().getContent());}});} catch (ArkHttpException e) {resultBuilder.append(e.toString());}service.shutdownExecutor();return resultBuilder.toString();}}

2.测试接口代码:

  • 1.dto
package com.ruoyi.school.domain.dto;import io.swagger.annotations.ApiModelProperty;
import lombok.Data;import java.io.Serializable;
import java.util.List;/*** AI生成阅读理解dto*/
@Data
public class NewAiRequestDTO implements Serializable {private static final long serialVersionUID = 1L;@ApiModelProperty("上课记录id")private Long classRecordId;@ApiModelProperty("选中的单词list")private List<String> wordList ;@ApiModelProperty("AI类型:1-DeepSeekAI,2-豆包AI")private Integer type;
}
  • 2.controller
/*** 火山引擎AI*/@ApiOperation(value = "火山引擎AI生成阅读理解")@PostMapping(value = "/arkGenerateArticle")public AjaxResult arkGenerateArticle(@RequestBody NewAiRequestDTO dto){String result = classRecordDetailService.arkGenerateArticle(dto);Map<String, Object> map = new HashMap<>();map.put("json", result);return AjaxResult.success(map);}
  • 3.Impl
@Overridepublic String arkGenerateArticle(NewAiRequestDTO dto) {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格式返回,输出内容按照以上格式进行:";String resultJson = "";switch (dto.getType()) {case 1:resultJson = huoShanAiUtils.chatCompletionsDeepSeek(problem);break;case 2:resultJson = huoShanAiUtils.chatCompletionsDouBao(problem);break;}resultJson = extractString(resultJson, "```json", "```");if (StringUtils.isNotEmpty(resultJson)) {NewAiArticle newAiArticle = new NewAiArticle();newAiArticle.setClassRecordId(dto.getClassRecordId());newAiArticle.setContent(resultJson);newAiArticleMapper.insert(newAiArticle);}return resultJson;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/887232.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

reactnative 手写签名报错

有没有大佬知道这种问题怎么解决!!!!! 在线等!!!

Ollama模型迁移

为了方便本地大模型部署和迁移,本文提供了一个关于Ollama的模型本地迁移的方法。由于直接从Ollama Hub下载下来的模型,或者是比较大的GGUF模型文件,往往会被切分成多个,而文件名在Ollama的路径中又被执行了sha256散列变换。因此我们需要从索引文件中获取相应的文件名,再进…

阻塞IO 非阻塞IO

网络IO流程三次握手流程阻塞IO非阻塞IO阻塞IO和非阻塞IO的区别 阻塞IO:io 未就绪的情况下,会阻塞线程等待 非阻塞IO:io 未就绪的情况下,立即返回socket默认的情况是阻塞的

How Do Recommendation Models Amplify Popularity Bias? An Analysis from the Spectral Perspective

目录概符号说明Popularity bias\(\mathbf{q}_1\) 和 \(\mathbf{r}\) 具有高相似度相似度随着维度降低而增加相似度随着训练的变化ReSN: Regulartion with Spectral NormLin S., Gao C., Chen J., Zhou S., Hu B., Feng Y., Chen C. and Wang C. How do recommendation models a…

(文末有福利!)深度剖析大语言模型推理:指标、优化与框架选择

在人工智能飞速发展的当下,大语言模型(LLM)已然成为焦点。从智能聊天机器人到内容创作辅助,大语言模型的应用无处不在。但你是否了解其背后的推理过程,以及如何让这些模型运行得又快又好?今天,我们就来深入探讨大语言模型推理的奥秘。一、🌟大语言模型推理指标详解 在…

Docker之网络模型

Docker的网络模型类型 说明None 不为容器配置任何网络功能,没有网络 --net=noneContainer 与另一个运行中的容器共享Network Namespace,--net=container:containerID,k8s中Pod容器之间用此网络。Host 与主机共享Network Namespace,--net=hostBridge Docker设计的NAT网络模型…

初来园子

金易安装与使用说明 金易介绍 【金易】是交易外汇黄金的专项EA,只能用来交易黄金,做日内超短线的交易,是我们EA开发研究院研发多年的EA。金易由一位金融高校毕业有着超过十年外汇黄金实盘交易,黄金交易年入超十万美金的操盘高手指导完成,有着成熟的交易模型,也有完善的系…

太好了,IDE支持满血版DeepSeek了,我们有救了!

近期通义灵码能力再升级全新上线模型选择功能,目前已经支持 Qwen2.5、DeepSeek-V3 和 R1系列模型,用户可以在 VSCode 和 JetBrains 里搜索并下载最新通义灵码插件,在输入框里选择模型,即可轻松切换模型。你好呀,我是歪歪。 今年 1 月,通义灵码 AI 程序员全面上线,同时支…

2.14

今天在Java Web开发中深入学习了如何进行Web应用的部署,这是将我们开发的成果转化为可运行的服务的关键步骤。 首先,关于将项目打包成war文件(Web Application Archive),这不仅仅是简单的文件压缩。在打包过程中,要确保所有的依赖项都被正确地包含在内。例如,如果我们在…

可持续建筑设计的实践与挑战:筑梦绿色未来之路

在21世纪的建筑设计领域,可持续性不再只是理念的探讨,而是实践中的行动指南。在实际项目中推进可持续设计,既是机遇也是挑战。本文旨在深入剖析可持续建筑设计在实践中的具体应用及其面临的重重考验,共同探讨如何跨越障碍,迈向更加绿色的未来。 实践之光:可持续设计的亮点…

ubuntu18.04安装k8s和kubeSphere

swapoff -a # 临时禁用交换分区 sed -i / swap / s/^\(.*\)$/#\1/g /etc/fstab # 永久禁用 1.安装KubeKeyexport KKZONE=cn curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.7 bash - chmod +x kk2.安装包括socat、conntrack、ebtables、ipset 等依赖程序s…

建筑节能技术与材料的进展:迈向绿色建筑新时代

在应对全球气候变化和资源日益紧张的背景下,建筑节能已成为推动建筑业可持续发展的重要方向。本文将为您详细介绍当前最前沿的节能技术与材料,探索它们如何助力构建低碳环保的绿色建筑。 1. 智能玻璃与动态遮阳系统智能玻璃,如电致变色玻璃和热致变色玻璃,能够根据外部环境…