在您调用通义千问的API时会产生一定的费用,模型调用也有限流条件。本文介绍了计费单元、计费单价、您可免费使用的额度以及模型的限流条件。
通义千问
计费单元
模型服务 | 计费单元 |
通义千问 | token |
Token是模型用来表示自然语言文本的基本单位,可以直观地理解为“字”或“词”。对于中文文本来说,千问模型的1个token平均对应1.5-1.8个汉字;对于英文文本来说,1个token通常对应一个单词或词根。
通义千问模型服务根据模型输入和输出的token数量分别进行计量计费,其中多轮对话中的所有messages作为输入都会进行计量计费。每一次模型调用产生的实际token数量可以从 response 中获取。
字符串与token之间的互相转换
不同的大模型切分token的方法可能不同。您可以使用SDK在本地查看经过通义千问模型切分后的token数据。
# 运行前请 pip install tiktoken
# pip install dashscope[tokenizer]
from dashscope import get_tokenizer # dashscope版本 >= 1.14.0
# 获取tokenizer对象,目前只支持通义千问系列模型
tokenizer = get_tokenizer('qwen-turbo')
input_str = '通义千问具有强大的能力。'
# 将字符串切分成token并转换为token id
tokens = tokenizer.encode(input_str)
print(f"经过切分后的token id为:{tokens}。")
# 经过切分后的token id为: [31935, 64559, 99320, 56007, 100629, 104795, 99788, 1773]
print(f"经过切分后共有{len(tokens)}个token")
# 经过切分后共有8个token
# 将token id转化为字符串并打印出来
for i in range(len(tokens)):
print(f"token id为{tokens[i]}对应的字符串为:{tokenizer.decode(tokens[i])}")
// Copyright (c) Alibaba, Inc. and its affiliates.
// dashscope SDK版本 >= 2.13.0
import java.util.List;
import com.alibaba.dashscope.exception.NoSpecialTokenExists;
import com.alibaba.dashscope.exception.UnSupportedSpecialTokenMode;
import com.alibaba.dashscope.tokenizers.Tokenizer;
import com.alibaba.dashscope.tokenizers.TokenizerFactory;
public class Main {
public static void testEncodeOrdinary(){
Tokenizer tokenizer = TokenizerFactory.qwen();
String prompt ="如果现在要你走十万八千里路,需要多长的时间才能到达? ";
// encode string with no special tokens
List<Integer> ids = tokenizer.encodeOrdinary(prompt);
System.out.println(ids);
String decodedString = tokenizer.decode(ids);
assert decodedString == prompt;
}
public static void testEncode() throws NoSpecialTokenExists, UnSupportedSpecialTokenMode{
Tokenizer tokenizer = TokenizerFactory.qwen();
String prompt = "<|im_start|>system\nYour are a helpful assistant.<|im_end|>\n<|im_start|>user\nSanFrancisco is a<|im_end|>\n<|im_start|>assistant\n";
// encode string with special tokens <|im_start|> and <|im_end|>
List<Integer> ids = tokenizer.encode(prompt, "all");
// 24 tokens [151644, 8948, 198, 7771, 525, 264, 10950, 17847, 13, 151645, 198, 151644, 872, 198, 23729, 80328, 9464, 374, 264, 151645, 198, 151644, 77091, 198]
String decodedString = tokenizer.decode(ids);
System.out.println(ids);
assert decodedString == prompt;
}
public static void main(String[] args) {
try {
testEncodeOrdinary();
testEncode();
} catch (NoSpecialTokenExists | UnSupportedSpecialTokenMode e) {
e.printStackTrace();
}
}
}
python 输出为
经过切分后的token id为:[31935, 64559, 99320, 56007, 100629, 104795, 99788, 1773]。
经过切分后共有8个token
token id为31935对应的字符串为:通
token id为64559对应的字符串为:义
token id为99320对应的字符串为:千
token id为56007对应的字符串为:问
token id为100629对应的字符串为:具有
token id为104795对应的字符串为:强大的
token id为99788对应的字符串为:能力
token id为1773对应的字符串为:。
本地运行的tokenizer可以用来估计文本的token量,但是得到的结果不保证与模型服务端完全一致,仅供参考。如果您对通义千问的tokenizer细节感兴趣,请参考: tokenizer参考
输入token的计算逻辑
输入token的计量数目中,除了包含用户的原始输入所对应的token,还会包括将原始输入根据chatml格式进行格式化所需要引入的special token。
随着模型能力的迭代,这部分计算逻辑可能会进行演变和调整
基础调用
在用户未试图调用插件时,token计数将包含system、user和历史轮的assistant,以及对输入进行格式化组装需要的special token。例如,在用户输入为:
[
{
"role": "user",
"content": "hi"
}
]
则token计数基于如下prompt进行,对应9个token:
<|im_start|>user\nhi<|im_end|>\n<|im_start|>assistant\n
再例如用户输入为:
[
{
"role": "system",
"content": "you are a bot."
},
{
"role": "user",
"content": "hi"
},
{
"role": "assistant",
"content": "Hello! How can I assist you today?"
},
{
"role": "user",
"content": "who are you"
}
]
则token计数基于如下prompt进行,对应41个token
<|im_start|>system\nyou are a bot.<|im_end|>\n<|im_start|>user\nhi<|im_end|>\n<|im_start|>assistant\nHello! How can I assist you today?<|im_end|>\n<|im_start|>user\nwho are you<|im_end|>\n<|im_start|>assistant\n
高级调用
当用户的请求涉及插件调用时,会额外引入prompt来引导模型做出正确的回应。此时token的计量会有额外的增加。常见的情况有:
搜索增强。当搜索增强参数(enable_search)被配置时,触发搜索本身会需要额外的prompt和插件调用,同时搜索的结果在输入到模型时,也会被计入输入token计数;
插件调用。当插件被调用时,会有额外的触发插件调用所需要的指令,这些都会被计入token数目;
function call。当使用function call功能时,会有额外的引导指令,这些也都会被计入token数目。
计费单价
模型服务 | 模型规格 | 输入(input)价格 | 输出(output)价格 |
Qwen-Long | qwen-long | 0.0005元/1,000 tokens | 0.002元/1,000 tokens |
通义千问-Turbo | qwen-turbo | 0.0003元/1,000 tokens Batch调用:0.00015元/1,000 tokens | 0.0006元/1,000 tokens Batch调用:0.0003元/1,000 tokens |
qwen-turbo-latest | 0.0003元/1,000 tokens | 0.0006元/1,000 | |
qwen-turbo-2024-09-19 (qwen-turbo-0919) 当前等同qwen-turbo-latest | |||
qwen-turbo-2024-06-24 (qwen-turbo-0624) | |||
qwen-turbo-2024-02-06 (qwen-turbo-0206) | 0.002元/1,000 tokens | 0.006元/1,000 | |
通义千问-Plus | qwen-plus | 0.0008元/1,000 tokens Batch调用:0.0004元/1,000 tokens | 0.002元/1,000 tokens Batch调用:0.001元/1,000 tokens |
qwen-plus-latest | 0.0008元/1,000 tokens | 0.002元/1,000 tokens | |
qwen-plus-2024-09-19 (qwen-plus-0919) 当前等同qwen-plus-latest | |||
qwen-plus-2024-08-06 (qwen-plus-0806) | 0.004元/1,000 tokens | 0.012元/1,000 tokens | |
qwen-plus-2024-07-23 (qwen-plus-0723) | |||
qwen-plus-2024-06-24 (qwen-plus-0624) | |||
qwen-plus-2024-02-06 (qwen-plus-0206) | |||
通义千问-Max | qwen-max | 0.02元/1,000 tokens Batch调用:0.01元/1,000 tokens | 0.06元/1,000 tokens Batch调用:0.03元/1,000 tokens |
qwen-max-latest | 0.02元/1,000 tokens | 0.06元/1,000 tokens | |
qwen-max-2024-09-19 (qwen-max-0919) 当前等同qwen-max-latest | |||
qwen-max-2024-04-28 (qwen-max-0428) | 0.04元/1,000 tokens | 0.12元/1,000 tokens | |
qwen-max-2024-04-03 (qwen-max-0403) | |||
qwen-max-2024-01-07 (qwen-max-0107) |
qwen-turbo原来为qwen-v1。qwen-v1计费与qwen-turbo保持一致。qwen-v1模型已弃用,请使用qwen-turbo。
qwen-plus原来为qwen-plus-v1。qwen-plus-v1计费与qwen-plus保持一致。qwen-plus-v1模型已弃用,请使用qwen-plus。
免费额度
模型服务 | 模型名 | 免费额度 |
通义千问 | qwen-long | 100万tokens 领取方式:新用户开通阿里云灵积或百炼服务后,自动发放; 有效期:30天 2024年09月19号0点之后开通的用户,免费额度有效期:180天。 |
qwen-turbo | ||
qwen-turbo-latest | ||
qwen-turbo-2024-09-19 (qwen-turbo-0919) 当前等同qwen-turbo-latest | ||
qwen-turbo-2024-06-24 (qwen-turbo-0624) | ||
qwen-turbo-2024-02-06 (qwen-turbo-0206) | ||
qwen-plus | ||
qwen-plus-latest | ||
qwen-plus-2024-09-19 (qwen-plus-0919) 当前等同qwen-plus-latest | ||
qwen-plus-2024-08-06 (qwen-plus-0806) | ||
qwen-plus-2024-07-23 (qwen-plus-0723) | ||
qwen-plus-2024-06-24 (qwen-plus-0624) | ||
qwen-plus-2024-02-06 (qwen-plus-0206) | ||
qwen-max | ||
qwen-max-latest | ||
qwen-max-2024-09-19 (qwen-max-0919) 当前等同qwen-max-latest | ||
qwen-max-2024-04-28 (qwen-max-0428) | ||
qwen-max-2024-04-28 (qwen-max-0428) | ||
qwen-max-2024-01-07 (qwen-max-0107) |
基础限流
为了保证用户调用模型的公平性,通义千问对于普通用户设置了基础限流。限流是基于模型维度的,并且和调用用户的阿里云主账号相关联,按照该账号下所有API-KEY调用该模型的总和计算限流。如果超出调用限制,用户的API请求将会因为限流控制而失败,用户需要等待一段时间待满足限流条件后方能再次调用。
模型服务 | 模型名 | 基础限流 | 超出基础限流申请方式 |
通义千问 | qwen-long | 以下条件任何一个超出都会触发限流:
| 无 |
qwen-turbo | 以下条件任何一个超出都会触发限流:
| 无 | |
qwen-turbo-0624 | 以下条件任何一个超出都会触发限流:
| 无 | |
qwen-turbo-0206 | 以下条件任何一个超出都会触发限流:
| 无 | |
qwen-plus | 以下条件任何一个超出都会触发限流:
| 无 | |
qwen-plus-0806 | 以下条件任何一个超出都会触发限流:
| 无 | |
qwen-plus-0723 | 以下条件任何一个超出都会触发限流:
| 无 | |
qwen-plus-0624 | 以下条件任何一个超出都会触发限流:
| 无 | |
qwen-plus-0206 | 以下条件任何一个超出都会触发限流:
| 无 | |
qwen-max | 以下条件任何一个超出都会触发限流(限时免费开放中,限流策略可能随时变化):
| 无 | |
qwen-max-0428 | 无 | ||
qwen-max-0403 | 无 | ||
qwen-max-0107 | 以下条件任何一个超出都会触发限流(限时免费开放中,限流策略可能随时变化):
| 无 |
查看账单
有关DashScope的账单时效信息请参阅产品计费。
有关账单详情请前往阿里云费用与成本查询。