所有文章 > 如何集成API > 利用JAVA语言调用豆包大模型接口实战指南
利用JAVA语言调用豆包大模型接口实战指南

利用JAVA语言调用豆包大模型接口实战指南

一、什么是API接口

API(Application Programming Interface,应用程序编程接口)是一种软件接口,它定义了不同应用程序之间如何相互通信、交互。API接口分为很多种,常见的有Web API,数据库API,操作系统API等。

Web API是目前最流行的API接口,它作为一种开放式API接口,能够让不同的系统与平台进行交互。Web API可以返回JSON格式的数据或XML格式等数据。

二、Doubao API模型介绍

模型名称简介
Doubao-lite-4kDoubao-lite拥有极致的响应速度,更好的性价比,为客户不同场景提供更灵活的选择。支持4k上下文窗口的推理和精调。
Doubao-lite-32kDoubao-lite拥有极致的响应速度,更好的性价比,为客户不同场景提供更灵活的选择。支持32k上下文窗口的推理和精调。
Doubao-lite-128kDoubao-lite 拥有极致的响应速度,更好的性价比,为客户不同场景提供更灵活的选择。支持128k上下文窗口的推理和精调。
Doubao-pro-4k效果最好的主力模型,适合处理复杂任务,在参考问答、总结摘要、创作、文本分类、角色扮演等场景都有很好的效果。支持4k上下文窗口的推理和精调。
Doubao-pro-32k效果最好的主力模型,适合处理复杂任务,在参考问答、总结摘要、创作、文本分类、角色扮演等场景都有很好的效果。支持32k上下文窗口的推理和精调。
Doubao-pro-128k效果最好的主力模型,适合处理复杂任务,在参考问答、总结摘要、创作、文本分类、角色扮演等场景都有很好的效果。支持128k上下文窗口的推理和精调。

三、前置条件

创建推理接入点

您可以创建模型推理接入点来开始模型推理。模型推理接入点创建有3个入口,点击创建按钮后,在弹出的表单中,填写相应信息,信息填写完毕后,点击【新建】,即可完成在线服务推理接入点的创建。

  1. 入口 1:登录火山方舟平台,点击左侧导航栏中的【模型推理】,点击【 创建推理接入点 】。
  2. 入口 2:【模型广场】的模型卡片详情页右上角,点击【模型推理】
  3. 入口 3:【模型仓库】的列表页右侧操作栏,点击【模型推理】

接入模型表单字段详细说明

参数名称参数说明
接入点名称填写接入点名称
接入点描述描述接入模型的业务需求,如接入场景、用途(如测试、线上业务)等
接入模型可选择【模型广场】或【精调模型】中的模型进行接入选择【模型广场】中的模型后,需进一步选择模型版本选择【精调模型】中的模型后,需进一步选择模型版本和 Checkpoint。当前仅支持基于豆包系列模型进行精调的模型
购买方式– 支持使用【按Token付费】、【按模型单元付费】2种模式

模型单元

什么是模型单元

模型单元是调用某个特定模型的 TPM(Token per Minite)配额。创建推理接入点选择按模型单元付费后,用户可以获得比按 Token 付费更大的并发量,且无需再为 Token 消耗付费。模型单元付费方式为预付费。

建议购买模型单元场景

  • 线上生产业务,对资源确定性要求高,希望在流量峰值必须保障资源
  • 业务并发高,TPM(Token per Minite)RPM(Request per Minite)超过平台默认值

支持模型单元的模型

我们对Doubao系列模型与部分开源模型支持模型单元。支持范围请参考产品计费

使用说明

目前支持在+ 创建推理接入 点配置算力保障时,进行购买模型单元,可以配置购买模型单元的数量、时长、是否自动续费。自动续费支持按照单次自动续费时长(按天)及自动续费次数(永久生效、自定义次数)自定义配置。

  1. 当前模型单元仅支持申请使用,如您希望使用模型单元,可参照前端提示提交工单,系统审批后可进行购买及数量配置。
  2. 预付费 TPM 配额到期自动终止,为避免续费不及时导致业务中断,建议开通自动续费。
  3. 超过模型单元覆盖的 TPM 配额的需求将被拒绝,如您有预期外的流量尖峰,您可以通过模型单元叠加按 Token 计费的模型推理接入点2种方式来支撑。

计费

  1. 使用模型单元创建完成的模型推理接入点,支持对模型单元进行增减购买、到期续费配置调整。7天内到期的模型单元会出现到期提醒。
  1. 模型单元计费会根据实际使用的模型单元数量、时长进行计费。因为是预付费,因此如果进行扩缩容的操作,也会对应有补款和退款。
  2. 模型单元到期提醒
  3. 模型单元到期时间说明
  • 如您按天购买模型单元,购买资源的到期时间按照自然日计算,从购买日算起,到期时间为到期自然日+1天的中午12点:即如您在 5月13日上午9 点购买一天的模型单元,相当于您购买了到期时间为5月13日24 点的资源,实际到期时间为5月14日中午12点整。
  • 资源到期后将被回收,您可以在资源被回收前在方舟产品控制台或订单管理页面进行续费,回收时间为到期时间+ 48小时,即如您在5月13日上午9点 购买一天的模型单元,相当于您购买了到期时间为5月13日24点 的资源,在5月15日24点 之前都可以进行续费。在回收期结束后,模型单元无法续费,您需要重新创建一个模型推理接入点来满足继续使用的需求。
  • 强烈推荐您为资源配置自动续费,以避免由于未配置自动续费导致的业务中断。
  1. 模型单元调整、续费、退订

通过【模型推理】列表页,找到需要调整的接入点,点击右侧的 ··· 可以进行调整模型单元、续费、退订。

点击续费按钮,会跳转到费用中心的续费管理页面,可以进行续费操作

  1. 模型单元退订

想要删除买了模型单元的接入点,需要到费用中心退订管理中操作模型单元退订,退订成功后,再进行接入点的删除操作。

注意:因为模型单元是按实例组购买的,点击接入点名称详情中复制的模型单元ID是实例组 ID,实例组存在强绑定关系,因此续费、退订须同步发起。请注意,未到期的模型单元退订会产生惩罚系数,无法100%退费。

获取API Key

进入 API Key 管理 页面,选择需要的项目,点击 创建 API Key,即可生成长效 API Key。all权限默认给予项目下所有模型接入点和智能体访问权限。

四、基于SDK开发

4.1 Maven引入SDK

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

4.2 代码实现

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 java.util.ArrayList;
import java.util.List;

public class DouBaoDemo {

public static void main(String[] args) {

ArkService service = new ArkService("ARK_API_KEY");

System.out.println("\n----- 标准请求 -----");
final List<ChatMessage> messages = new ArrayList<>();
final ChatMessage systemMessage = ChatMessage.builder().role(ChatMessageRole.SYSTEM).content("你是豆包,是由字节跳动开发的 AI 人工智能助手").build();
final ChatMessage userMessage = ChatMessage.builder().role(ChatMessageRole.USER).content("请自我介绍?").build();
messages.add(systemMessage);
messages.add(userMessage);

ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder()
.model("${YOUR_ENDPOINT_ID}")
.messages(messages)
.build();

service.createChatCompletion(chatCompletionRequest).getChoices().forEach(choice -> System.out.println(choice.getMessage().getContent()));

System.out.println("\n----- 流请求 -----");
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("请自我介绍?").build();
streamMessages.add(streamSystemMessage);
streamMessages.add(streamUserMessage);

ChatCompletionRequest streamChatCompletionRequest = ChatCompletionRequest.builder()
.model("${YOUR_ENDPOINT_ID}")
.messages(streamMessages)
.build();

service.streamChatCompletion(streamChatCompletionRequest)
.doOnError(Throwable::printStackTrace)
.blockingForEach(
choice -> {
if (choice.getChoices().size() > 0) {
System.out.print(choice.getChoices().get(0).getMessage().getContent());
}
}
);
service.shutdownExecutor();
}
}
#你可能也喜欢这些API文章!