模型与价格
豆包的模型介绍可以看豆包大模型介绍,模型价格可以看豆包定价文档里的“模型推理” - “大语言模型” - “字节跳动”部分。
推荐使用以下模型:
- Doubao-lite-32k:每百万 token 的输入价格为 0.3 元,输出价格为 0.6 元
- Doubao-pro-32k:每百万 token 的输入价格为 0.8 元,输出价格为 2 元
- 豆包的 6 个模型中,4k 和 32k 的价格是一样的,所以这里推荐用 32k 的模型。
- 每个模型都有 50 万 tokens 的免费额度,不会过期。
- 剩余免费额度见开通管理 | 火山方舟管理控制台里的“免费推理额度”。
- 豆包一共有 6 个模型,也就是说上面这两个模型的 token 用完之后,你还可以切换为别的模型使用。
- 8 月 30 日前会额外给每个模型赠送 5 亿 tokens,不会过期。领取方式见下文的可选步骤:领取 5 亿 tokens 的免费额度。
- “输入”即你发送给模型的语音文字,“输出”即模型提供的回答,问答一次的最终花费 = 输入 token 数量 * 输入价格 + 输出 token 数量 * 输出价格。
- 1 个 token 大约对应 1 个汉字或 3 至 4 个字母。
5 亿 tokens 的免费额度申请步骤
第一步:注册账号
进入火山方舟管理控制台,根据提示注册或登陆账号。
第二步:开通模型
进入开通管理,点击 Doubao-pro-4k
最右边的【开通服务】按钮,会弹出来一个弹窗。
在弹窗中勾选豆包的 6 个模型(Doubao-pro-4k
、Doubao-pro-8k
、Doubao-pro-32k
、Doubao-lite-4k
、Doubao-lite-8k
、Doubao-lite-32k
),然后点击【立即开通】。
可选步骤:领取 5 亿 token 的免费额度
免费额度赠送活动截止日期:2024 年 8 月 30 日。
进入开通管理,点击页面最上方的公告右侧的【去参加】按钮,然后在弹窗中勾选刚才开通的 6 个豆包模型,点击【授权】。
然后刷新页面,就会看到这 6 个模型的“免费推理额度” 由 50 万(500,000 tokens
)变成了 5 亿零 50 万(500,500,000 tokens
)。
第三步:创建 API Key
进入 API Key 管理,点击【创建 API Key】,填写名称后创建 API Key 备用。
第四步:创建接入点
豆包的模型不能直接使用,要先在平台内创建接入点了之后才能使用。
以 Doubao-pro-32k 为例:
- 进入模型推理,点击【创建推理接入点】。
- 点击【添加模型】按钮,会出现一个弹窗。
- 在模型广场中选择“Doubao-pro-32k”,然后右侧会出现模型版本。
- 模型版本一般只有一个,名称就是 6 个数字组成的日期(例如
240515
),但也有可能会有带前缀的版本(例如functioncall-240515
、character-240528
)。 - 模型版本要选择不带前缀的版本,即类似
240515
这样只有 6 个数字的版本。 - 选好模型版本后,点击页面右下角的【添加】。
- 名称建议就填写“接入模型”那里显示的文本,例如“Doubao-pro-32k-240515”(把斜线
/
改为短横线-
)。 - 点击页面右侧的【接入模型】按钮。
然后,你就会回到模型推理页面,此时表格中会看到你刚才创建的名为“Doubao-pro-32k-240515”的接入点,名称下方有一串以 ep-
开头的、格式为 ep-xxxxxxxxxx-xxxxx
的文本,这就是我们需要的接入点 ID,复制后备用。
当你想要使用别的模型时,你需要重复以上步骤,创建新的接入点。建议为每个模型都提前创建好接入点。
使用
官网sdk接入地址: GitHub - volcengine/volcengine-java-sdk
- 接口地址(
OPENAI_BASE_URL
)填写https://ark.cn-beijing.volces.com/api/v3
- 密钥(
OPENAI_API_KEY
)填写你第三步创建的 API Key - 模型(
OPENAI_MODEL
)填写你第四步创建的接入点 ID
快速开始
添加pom文件
<dependency> <groupId>com.volcengine</groupId> <artifactId>volcengine-java-sdk-ark-runtime</artifactId> <version>LATEST</version> </dependency>
package com.volcengine.ark.runtime;
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 ChatCompletionsExample {
/**
* Authentication
* 1.If you authorize your endpoint using an API key, you can set your api key to environment variable "ARK_API_KEY"
* String apiKey = System.getenv("ARK_API_KEY");
* ArkService service = new ArkService(apiKey);
* Note: If you use an API key, this API key will not be refreshed.
* To prevent the API from expiring and failing after some time, choose an API key with no expiration date.
*
* 2.If you authorize your endpoint with Volcengine Identity and Access Management(IAM), set your api key to environment variable "VOLC_ACCESSKEY", "VOLC_SECRETKEY"
* String ak = System.getenv("VOLC_ACCESSKEY");
* String sk = System.getenv("VOLC_SECRETKEY");
* ArkService service = new ArkService(ak, sk);
* To get your ak&sk, please refer to this document(https://www.volcengine.com/docs/6291/65568)
* For more information,please check this document(https://www.volcengine.com/docs/82379/1263279)
*/
public static void main(String[] args) {
String apiKey = System.getenv("ARK_API_KEY");
ArkService service = new ArkService(apiKey);
System.out.println("\n----- standard request -----");
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----- 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("常见的十字花科植物有哪些?").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());
}
}
);
// shutdown service
service.shutdownExecutor();
}
}
注意: