一文快速了解如何调用天工API接口
利用JAVA语言调用豆包大模型接口实战指南
一、什么是API接口
API(Application Programming Interface,应用程序编程接口)是一种软件接口,它定义了不同应用程序之间如何相互通信、交互。API接口分为很多种,常见的有Web API,数据库API,操作系统API等。
Web API是目前最流行的API接口,它作为一种开放式API接口,能够让不同的系统与平台进行交互。Web API可以返回JSON格式的数据或XML格式等数据。
二、Doubao API模型介绍
模型名称 | 简介 |
Doubao-lite-4k | Doubao-lite拥有极致的响应速度,更好的性价比,为客户不同场景提供更灵活的选择。支持4k上下文窗口的推理和精调。 |
Doubao-lite-32k | Doubao-lite拥有极致的响应速度,更好的性价比,为客户不同场景提供更灵活的选择。支持32k上下文窗口的推理和精调。 |
Doubao-lite-128k | Doubao-lite 拥有极致的响应速度,更好的性价比,为客户不同场景提供更灵活的选择。支持128k上下文窗口的推理和精调。 |
Doubao-pro-4k | 效果最好的主力模型,适合处理复杂任务,在参考问答、总结摘要、创作、文本分类、角色扮演等场景都有很好的效果。支持4k上下文窗口的推理和精调。 |
Doubao-pro-32k | 效果最好的主力模型,适合处理复杂任务,在参考问答、总结摘要、创作、文本分类、角色扮演等场景都有很好的效果。支持32k上下文窗口的推理和精调。 |
Doubao-pro-128k | 效果最好的主力模型,适合处理复杂任务,在参考问答、总结摘要、创作、文本分类、角色扮演等场景都有很好的效果。支持128k上下文窗口的推理和精调。 |
三、前置条件
创建推理接入点
您可以创建模型推理接入点来开始模型推理。模型推理接入点创建有3个入口,点击创建按钮后,在弹出的表单中,填写相应信息,信息填写完毕后,点击【新建】,即可完成在线服务推理接入点的创建。
- 入口 1:登录火山方舟平台,点击左侧导航栏中的【模型推理】,点击【 创建推理接入点 】。
- 入口 2:【模型广场】的模型卡片详情页右上角,点击【模型推理】
- 入口 3:【模型仓库】的列表页右侧操作栏,点击【模型推理】
接入模型表单字段详细说明:
参数名称 | 参数说明 |
接入点名称 | 填写接入点名称 |
接入点描述 | 描述接入模型的业务需求,如接入场景、用途(如测试、线上业务)等 |
接入模型 | 可选择【模型广场】或【精调模型】中的模型进行接入选择【模型广场】中的模型后,需进一步选择模型版本选择【精调模型】中的模型后,需进一步选择模型版本和 Checkpoint。当前仅支持基于豆包系列模型进行精调的模型 |
购买方式 | – 支持使用【按Token付费】、【按模型单元付费】2种模式 |
模型单元
什么是模型单元
模型单元是调用某个特定模型的 TPM(Token per Minite)配额。创建推理接入点选择按模型单元付费后,用户可以获得比按 Token 付费更大的并发量,且无需再为 Token 消耗付费。模型单元付费方式为预付费。
建议购买模型单元场景
- 线上生产业务,对资源确定性要求高,希望在流量峰值必须保障资源
- 业务并发高,TPM(Token per Minite)RPM(Request per Minite)超过平台默认值
支持模型单元的模型
我们对Doubao系列模型与部分开源模型支持模型单元。支持范围请参考产品计费
使用说明
目前支持在+ 创建推理接入 点配置算力保障时,进行购买模型单元,可以配置购买模型单元的数量、时长、是否自动续费。自动续费支持按照单次自动续费时长(按天)及自动续费次数(永久生效、自定义次数)自定义配置。
- 当前模型单元仅支持申请使用,如您希望使用模型单元,可参照前端提示提交工单,系统审批后可进行购买及数量配置。
- 预付费 TPM 配额到期自动终止,为避免续费不及时导致业务中断,建议开通自动续费。
- 超过模型单元覆盖的 TPM 配额的需求将被拒绝,如您有预期外的流量尖峰,您可以通过模型单元叠加按 Token 计费的模型推理接入点2种方式来支撑。
计费
- 使用模型单元创建完成的模型推理接入点,支持对模型单元进行增减购买、到期续费配置调整。7天内到期的模型单元会出现到期提醒。
- 模型单元计费会根据实际使用的模型单元数量、时长进行计费。因为是预付费,因此如果进行扩缩容的操作,也会对应有补款和退款。
- 模型单元到期提醒
- 模型单元到期时间说明
- 如您按天购买模型单元,购买资源的到期时间按照自然日计算,从购买日算起,到期时间为到期自然日+1天的中午12点:即如您在 5月13日上午9 点购买一天的模型单元,相当于您购买了到期时间为5月13日24 点的资源,实际到期时间为5月14日中午12点整。
- 资源到期后将被回收,您可以在资源被回收前在方舟产品控制台或订单管理页面进行续费,回收时间为到期时间+ 48小时,即如您在5月13日上午9点 购买一天的模型单元,相当于您购买了到期时间为5月13日24点 的资源,在5月15日24点 之前都可以进行续费。在回收期结束后,模型单元无法续费,您需要重新创建一个模型推理接入点来满足继续使用的需求。
- 强烈推荐您为资源配置自动续费,以避免由于未配置自动续费导致的业务中断。
- 模型单元调整、续费、退订
通过【模型推理】列表页,找到需要调整的接入点,点击右侧的 ··· 可以进行调整模型单元、续费、退订。
点击续费按钮,会跳转到费用中心的续费管理页面,可以进行续费操作
- 模型单元退订
想要删除买了模型单元的接入点,需要到费用中心退订管理中操作模型单元退订,退订成功后,再进行接入点的删除操作。
注意:因为模型单元是按实例组购买的,点击接入点名称详情中复制的模型单元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();
}
}