在语言模型中,token是指将输入的文本分割成的最小单位;token可以是一个单词、一个词组、一个标点符号、一个字符等,不同模型可能有自己的切分方法;
Token计算API仅用于计量和计费的估计,调用不收取费用,请勿在生产环境依赖Token计算API。
Token计算
支持的领域 / 任务:aigc
Token计算API是帮助用户估算指定文本对应多少Token数目的API。在灵积平台中,包括通义千问、LLaMa2等在内的语言模型都是基于用户输入和输出的token数目来进行计量和计费的。在语言模型使用中,字符数目和Token数目并不一定是一一对应的,例如在通义千问开源7B模型中:
"苹果"对应1个token;
"my friends"对应3个token;
" 周"对应3个token。
故而,灵积平台提供Token计算API供用户参考。
您也可以通过灵积平台提供的token计算器页面,直接获取tokenize结果。
已支持模型列表
其它模型正在支持中,敬请期待。
模型分类 | 对应模型名称 |
通义千问 | qwen-turbo qwen-plus qwen-7b-chat qwen-14b-chat |
LLaMa2系列 | llama2-7b-chat-v2 llama2-13b-chat-v2 |
SDK使用
前提条件
已开通服务并获得API-KEY:开通DashScope并创建API-KEY。
已安装最新版SDK:安装DashScope SDK。
文本生成
以下示例展示了调用qwen-turbo模型的tokenizer对一个用户指令进行编码的代码。
需要使用您的API-KEY替换示例中的 YOUR_DASHSCOPE_API_KEY,代码才能正常运行。
设置API-KEY
export DASHSCOPE_API_KEY=YOUR_DASHSCOPE_API_KEY
from http import HTTPStatus
import dashscope
def tokenizer():
response = dashscope.Tokenization.call(model='qwen-turbo',
messages=[{'role': 'user', 'content': '你好?'}],
)
if response.status_code == HTTPStatus.OK:
print('Result is: %s' % response)
else:
print('Failed request_id: %s, status_code: %s, code: %s, message:%s' %
(response.request_id, response.status_code, response.code,
response.message))
if __name__ == '__main__':
tokenizer()
// Copyright (c) Alibaba, Inc. and its affiliates.
import com.alibaba.dashscope.aigc.generation.models.QwenParam;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.MessageManager;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.tokenizers.Tokenization;
import com.alibaba.dashscope.tokenizers.TokenizationResult;
public class TokenizationQuickStart {
public static void tokenizer() throws ApiException, NoApiKeyException, InputRequiredException {
Tokenization tokenizer = new Tokenization();
MessageManager messageManager = new MessageManager(10);
messageManager.add(Message.builder().role(Role.USER.getValue()).content("你好?").build());
QwenParam param = QwenParam.builder()
.model(Tokenization.Models.QWEN_PLUS)
.messages(messageManager.get())
.build();
TokenizationResult result = tokenizer.call(param);
System.out.println(result);
}
public static void main(String[] args) {
try {
tokenizer();
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.out.println(String.format("Exception %s", e.getMessage()));
}
System.exit(0);
}
}
参数配置
参数 | 类型 | 默认值 | 说明 |
model | string | - | 用户使用model参数指明对应的模型,目前可选的模型见“已支持模型列表”。 |
prompt | string | - | 用户当前输入的期望模型执行指令。 |
messages | list | - | 用户与模型的对话历史。list中的每个元素形式为{"role":角色, "content": 内容}。角色当前可选值:system、user、assistant,其中,仅messages[0]中支持role为system,user和assistant需要交替出现 |
返回结果
返回结果示例
{
"status_code": 200,
"request_id": "2ecfce1f-b7af-9b3a-9482-01e4a5511e8f",
"code": "",
"message": "",
"output": {
"token_ids": [
108386,
11319
],
"tokens": [
"你好",
"?"
]
},
"usage": {
"input_tokens": 2
}
}
返回参数说明
返回参数 | 类型 | 说明 |
status_code | int | 200(HTTPStatus.OK)表示请求成功,否则表示请求失败,可以通过code获取错误码,通过message字段获取错误详细信息。 |
request_Id | string | 系统生成的标志本次调用的id。 |
code | string | 表示请求失败,表示错误码,成功忽略。 |
message | string | 失败,表示失败详细信息,成功忽略。 |
output | dict | 调用结果信息。 |
output.token_ids | list[int] | 本次输入文本对应的token_ids。 |
output.tokens | list[string] | 本次输入文本对应的tokens。 |
usage.input_tokens | int | 输入文本对应的token数目。 |
HTTP调用接口
功能描述
为了方便用户的使用,灵积模型服务提供的Token计算API和具体模型的调用API几乎一致,唯一不同的地方是服务的url不同。用户完全可以复用之前调用模型的参数,更换接口的url即可。
Token计算API也同时提供了 HTTP 接口,客户可以根据自己的需求选择。
前提条件
已开通服务并获得API-KEY:开通DashScope并创建API-KEY。
提交接口调用
POST https://dashscope.aliyuncs.com/api/v1/tokenizer
入参描述
传参方式 | 字段 | 类型 | 必选 | 描述 | 示例值 |
Header | Content-Type | String | 是 | 请求类型:application/json。 | application/json |
Authorization | String | 是 | API-Key,例如:Bearer d1**2a。 | Bearer d1**2a | |
Body | model | String | 是 | 指明需要调用的模型,目前可选的模型见“已支持模型列表”。 | qwen-turbo |
input.prompt | String | prompt和messages仅二选一 | 输入文本。为了避免用户调用模型API和Token API拼接不同的参数格式,Token API在参数上兼容了模型API的写法,prompt和messages均可作为输入文本。 | hello, who are you? | |
input.messages | List | { "messages":[{ "role":"user", "content":"北京有哪些好玩地方?" },{ "role":"assistant", "content":"故宫、颐和园、天坛等都是可以去游玩的景点哦。" },{ "role":"user", "content":"帮我安排一些行程" }] } | |||
input.messages.role | String | messages存在的时候不能缺省 | |||
input.messages.content | String |
出参描述
字段 | 类型 | 描述 | 示例值 |
output.token_ids | List | 本次输入文本对应的token_ids。 | [68990,104719,108257,100371,11319,113508,5373,113085,33108,99354,5373,35727,101152,49567,100132,73670,85336,109280,9370,105869,104170,1773,108965,103956,101883,106318] |
output.tokens | List | 本次输入文本对应的tokens。 | ["北京","有哪些","好玩","地方","?","故宫","、","颐","和","园","、","天","坛","等","都是","可以","去","游玩","的","景点","哦","。","帮我","安排","一些","行程"] |
usage.input_tokens | Integer | 输入文本对应的token数目。 | 26 |
request_id | String | 本次请求的系统唯一码 | 415018a6-4c64-95ea-8ec7-98436f4c16b6 |
请求示例
以下示例展示通过CURL命令来调用Token计算API的脚本。
需要使用您的API-KEY替换示例中的 your-dashscope-api-key ,代码才能正常运行。
curl --location 'https://dashscope.aliyuncs.com/api/v1/tokenizer' \
--header 'Authorization: Bearer <your-dashscope-api-key>' \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen-plus",
"input":{
"messages":[
{
"role": "user",
"content": "北京有哪些好玩地方?"
},
{
"role": "assistant",
"content": "故宫、颐和园、天坛等都是可以去游玩的景点哦。"
},
{
"role": "user",
"content": "帮我安排一些行程"
}
]
},
"parameters": {
}
}'
响应示例
{
"output":{
"token_ids":[68990,104719,108257,100371,11319,113508,5373,113085,33108,99354,5373,35727,101152,49567,100132,73670,85336,109280,9370,105869,104170,1773,108965,103956,101883,106318],
"tokens":["北京","有哪些","好玩","地方","?","故宫","、","颐","和","园","、","天","坛","等","都是","可以","去","游玩","的","景点","哦","。","帮我","安排","一些","行程"]
},
"usage":{
"input_tokens":26
},
"request_id":"415018a6-4c64-95ea-8ec7-98436f4c16b6"
}
异常响应示例
在访问请求出错的情况下,输出的结果中会通过 code 和 message 指明出错原因。
{
"code":"InvalidApiKey",
"message":"Invalid API-key provided.",
"request_id":"fb53c4ec-1c12-4fc4-a580-cdb7c3261fc1"
}
状态码说明
DashScope灵积模型服务通用状态码请查阅:返回状态码说明
- 本页导读 (0)