千帆prompt_token用量计费逻辑
本文介绍了token计算规则,并以 ERNIE-3.5-8K 为例说明计算过程。
说明:token计算规则,后续会进一步优化完善,请您保持关注。
ERNIE 3.5、ERNIE 4.0和ERNIE 4.0 Turbo等Preview接口,触发检索的需要单独计费
0.008元/次
,详细说明可查看参考内容。
名词解释
字符
- 1个字母=1个字符,举例,hello=5字符
- 1个汉字=1个字符,举例,你好=2字符
token
大模型中,token是指语言模型中用来表示中文汉字、英文单词、或中英文短语的符号。token可以是单个字符,也可以是多个字符组成的序列。您可以使用token计算器来在线计算部分文心大模型的字符转token数。
输入长度限制逻辑
- 字符长度限制:使用 输入token长度*4 进行第一道拦截,比如ernie-3.5-8k接口,输入token长度限制为5k,字符长度限制为20000,超过返回错误码 336007-the max length of current question is 20000
- token长度限制:使用 token长度进行第二道拦截,超过返回错误码 336103-Prompt tokens too long
- 多轮对话场景,输入token长度不断变长,可能导致输入长度超限,此时用户可以使用千帆ModelBuilder SDK提供的自动遗忘历史对话功能,避免输入长度过长。
prompt_tokens计算规则
以下信息参与prompt_tokens计算:
- message中的content
- system
- functions
示例
预期效果
用户调用ERNIE-3.5-8K API能力,请求参数使用了message.content、functions、system等,各请求参数内容如下。
调用接口后,返回prompt_tokens字段值为564,即问题tokens数为564,包括请求参数message.content、functions、system对应的内容。
各请求参数内容
(1)message中content字段内容
"messages": [{
"role": "user",
"content": "当前日期2023-09-30, 查询李四最近五个月旅游过的国内城市"
}]
(2)system字段内容
"system": "你是一个AI智能助手",
(3)functions字段内容
"functions": [
{
"name": "get_domestic_tourist_place",
"description": "当前日期为 2023-09-30,查询用户近期旅游过的三个国内城市",
"parameters": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "用户姓名"
},
"start": {
"type": "string",
"description": "查询的起始时间,默认最近一年"
},
"end": {
"type": "string",
"description": "查询的结束时间,默认当前日期"
}
},
"required": ["name"]
},
"responses": {
"type": "object",
"properties": {
"result": {
"type": "string",
"description": "目的地列表"
}
}
},
"examples": [
{
"role": "user",
"content": "查询张三最近三个月旅游过的国内城市"
},
{
"role": "assistant",
"content": "",
"function_call": {
"name": "get_domestic_tourist_place",
"arguments": "{\"name\": \"张三\", \"start\": \"2023-05-01-01\", \"end\": \"2023-08-30-30\"}"
}
},
{
"role": "function",
"name": "get_domestic_tourist_place",
"content": "{\"result\": \"苏州;上海;北京\"}"
},
{
"role": "assistant",
"content": "张三最近三个月旅游过的国内城市为北京,广州,呼和浩特。"
}
]
},
{
"name": "get_foreign_tourist_place",
"description": "当前日期为 2023-10,查询用户近期旅游过的三个国外城市",
"parameters": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "用户姓名"
},
"start": {
"type": "string",
"description": "查询的起始时间,默认最近一年"
},
"end": {
"type": "string",
"description": "查询的结束时间,默认当前日期"
}
},
"required": ["name"]
},
"responses": {
"type": "object",
"properties": {
"result": {
"type": "string",
"description": "目的地列表"
}
}
},
"examples": [
{
"role": "user",
"content": "查询张三最近三个月旅游过的国外城市"
},
{
"role": "assistant",
"content": "",
"function_call": {
"name": "get_foreign_tourist_place",
"arguments": "{\"name\": \"张三\", \"start\": \"2023-05-01\", \"end\": \"2023-08-30\"}"
}
},
{
"role": "function",
"name": "get_foreign_tourist_place",
"content": "{\"result\": \"仰光;巴瓦提\"}"
},
{
"role": "assistant",
"content": "张三最近三个月旅游过的国外城市为仰光,巴瓦提。"
}
]
}
],
调用ERNIE-3.5-8K API 查看prompt_token
步骤一:使用以下方法调用ERNIE-3.5-8K大模型。
curl --location 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token={access_token}' \
--header 'Content-Type: application/json' \
--data '{
"messages":[
{
"role":"user",
"content":"当前日期2023-09-30, 查询李四最近五个月旅游过的国内城市"
}
],
"functions":[
{
"name":"get_domestic_tourist_place",
"description":"当前日期为 2023-09-30,查询用户近期旅游过的三个国内城市",
"parameters":{
"type":"object",
"properties":{
"name":{
"type":"string",
"description":"用户姓名"
},
"start":{
"type":"string",
"description":"查询的起始时间,默认最近一年"
},
"end":{
"type":"string",
"description":"查询的结束时间,默认当前日期"
}
},
"required":[
"name"
]
},
"responses":{
"type":"object",
"properties":{
"result":{
"type":"string",
"description":"目的地列表"
}
}
},
"examples":[
{
"role":"user",
"content":"查询张三最近三个月旅游过的国内城市"
},
{
"role":"assistant",
"content":"",
"function_call":{
"name":"get_domestic_tourist_place",
"arguments":"{\"name\": \"张三\", \"start\": \"2023-05-01-01\", \"end\": \"2023-08-30-30\"}"
}
},
{
"role":"function",
"name":"get_domestic_tourist_place",
"content":"{\"result\": \"苏州;上海;北京\"}"
},
{
"role":"assistant",
"content":"张三最近三个月旅游过的国内城市为北京,广州,呼和浩特。"
}
]
},
{
"name":"get_foreign_tourist_place",
"description":"当前日期为 2023-10,查询用户近期旅游过的三个国外城市",
"parameters":{
"type":"object",
"properties":{
"name":{
"type":"string",
"description":"用户姓名"
},
"start":{
"type":"string",
"description":"查询的起始时间,默认最近一年"
},
"end":{
"type":"string",
"description":"查询的结束时间,默认当前日期"
}
},
"required":[
"name"
]
},
"responses":{
"type":"object",
"properties":{
"result":{
"type":"string",
"description":"目的地列表"
}
}
},
"examples":[
{
"role":"user",
"content":"查询张三最近三个月旅游过的国外城市"
},
{
"role":"assistant",
"content":"",
"function_call":{
"name":"get_foreign_tourist_place",
"arguments":"{\"name\": \"张三\", \"start\": \"2023-05-01\", \"end\": \"2023-08-30\"}"
}
},
{
"role":"function",
"name":"get_foreign_tourist_place",
"content":"{\"result\": \"仰光;巴瓦提\"}"
},
{
"role":"assistant",
"content":"张三最近三个月旅游过的国外城市为仰光,巴瓦提。"
}
]
}
],
"system":"你是一个AI智能助手"
}'
步骤二:成功调用接口,在响应字段中查看usage中prompt_tokens值为564。
{
"id": "as-2kx0t93hip",
"object": "chat.completion",
"created": 1703060563,
"result": "",
"is_truncated": false,
"need_clear_history": false,
"function_call": {
"name": "get_domestic_tourist_place",
"thoughts": "根据用户的请求,我需要调用“get_domestic_tourist_place”工具来查询李四最近五个月旅游过的国内城市。我将设置参数“name”为“李四”,开始和结束日期分别为“2023-04-01”和“2023-09-30”。",
"arguments": "{\"name\":\"李四\",\"start\":\"2023-04-01\",\"end\":\"2023-09-30\"}"
},
"finish_reason": "function_call",
"usage": {
"prompt_tokens": 564,
"completion_tokens": 112,
"total_tokens": 676
}
}
如何计算prompt_token
在使用大模型服务时,可以通过以下方式计算prompt_token对应的值。
以示例中message.content、functions、system等内容为例进行说明计算过程。
计算流程简介
计算prompt_token步骤如下:
步骤一:计算脚本
import json
import time
import requests
# 获取传递给大模型计算token长度的入参
def get_prompt(request):
prompt = ""
for message in request["messages"]:
prompt = prompt + message["content"]
if "system" in request:
prompt = prompt + request["system"]
if "functions" in request:
prompt = prompt + json.dumps(request["functions"], separators=(',', ':'), ensure_ascii=False)
print(prompt)
# 接口完整body入参
call_function = {
"messages": [{
"role": "user",
"content": "当前日期2023-09-30, 查询李四最近五个月旅游过的国内城市"
}],
"functions": [
{
"name": "get_domestic_tourist_place",
"description": "当前日期为 2023-09-30,查询用户近期旅游过的三个国内城市",
"parameters": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "用户姓名"
},
"start": {
"type": "string",
"description": "查询的起始时间,默认最近一年"
},
"end": {
"type": "string",
"description": "查询的结束时间,默认当前日期"
}
},
"required": ["name"]
},
"responses": {
"type": "object",
"properties": {
"result": {
"type": "string",
"description": "目的地列表"
}
}
},
"examples": [
{
"role": "user",
"content": "查询张三最近三个月旅游过的国内城市"
},
{
"role": "assistant",
"content": "",
"function_call": {
"name": "get_domestic_tourist_place",
"arguments": "{\"name\": \"张三\", \"start\": \"2023-05-01-01\", \"end\": \"2023-08-30-30\"}"
}
},
{
"role": "function",
"name": "get_domestic_tourist_place",
"content": "{\"result\": \"苏州;上海;北京\"}"
},
{
"role": "assistant",
"content": "张三最近三个月旅游过的国内城市为北京,广州,呼和浩特。"
}
]
},
{
"name": "get_foreign_tourist_place",
"description": "当前日期为 2023-10,查询用户近期旅游过的三个国外城市",
"parameters": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "用户姓名"
},
"start": {
"type": "string",
"description": "查询的起始时间,默认最近一年"
},
"end": {
"type": "string",
"description": "查询的结束时间,默认当前日期"
}
},
"required": ["name"]
},
"responses": {
"type": "object",
"properties": {
"result": {
"type": "string",
"description": "目的地列表"
}
}
},
"examples": [
{
"role": "user",
"content": "查询张三最近三个月旅游过的国外城市"
},
{
"role": "assistant",
"content": "",
"function_call": {
"name": "get_foreign_tourist_place",
"arguments": "{\"name\": \"张三\", \"start\": \"2023-05-01\", \"end\": \"2023-08-30\"}"
}
},
{
"role": "function",
"name": "get_foreign_tourist_place",
"content": "{\"result\": \"仰光;巴瓦提\"}"
},
{
"role": "assistant",
"content": "张三最近三个月旅游过的国外城市为仰光,巴瓦提。"
}
]
}
],
"system": "你是一个AI智能助手"
}
call_function_payload = json.dumps(call_function, indent=4, ensure_ascii=False)
get_prompt(call_function)
步骤二:查看输出结果
当前日期2023-09-30, 查询李四最近五个月旅游过的国内城市你是一个AI智能助手[{"name":"get_domestic_tourist_place","description":"当前日期为 2023-09-30,查询用户近期旅游过的三个国内城市","parameters":{"type":"object","properties":{"name":{"type":"string","description":"用户姓名"},"start":{"type":"string","description":"查询的起始时间,默认最近一年"},"end":{"type":"string","description":"查询的结束时间,默认当前日期"}},"required":["name"]},"responses":{"type":"object","properties":{"result":{"type":"string","description":"目的地列表"}}},"examples":[{"role":"user","content":"查询张三最近三个月旅游过的国内城市"},{"role":"assistant","content":"","function_call":{"name":"get_domestic_tourist_place","arguments":"{\"name\": \"张三\", \"start\": \"2023-05-01-01\", \"end\": \"2023-08-30-30\"}"}},{"role":"function","name":"get_domestic_tourist_place","content":"{\"result\": \"苏州;上海;北京\"}"},{"role":"assistant","content":"张三最近三个月旅游过的国内城市为北京,广州,呼和浩特。"}]},{"name":"get_foreign_tourist_place","description":"当前日期为 2023-10,查询用户近期旅游过的三个国外城市","parameters":{"type":"object","properties":{"name":{"type":"string","description":"用户姓名"},"start":{"type":"string","description":"查询的起始时间,默认最近一年"},"end":{"type":"string","description":"查询的结束时间,默认当前日期"}},"required":["name"]},"responses":{"type":"object","properties":{"result":{"type":"string","description":"目的地列表"}}},"examples":[{"role":"user","content":"查询张三最近三个月旅游过的国外城市"},{"role":"assistant","content":"","function_call":{"name":"get_foreign_tourist_place","arguments":"{\"name\": \"张三\", \"start\": \"2023-05-01\", \"end\": \"2023-08-30\"}"}},{"role":"function","name":"get_foreign_tourist_place","content":"{\"result\": \"仰光;巴瓦提\"}"},{"role":"assistant","content":"张三最近三个月旅游过的国外城市为仰光,巴瓦提。"}]}]
步骤三:使用token计算器计算prompt_token长度
打开token计算器功能,并将步骤二的结果复制到token计算的文本输入框,点击开始计算prompt_token的长度。计算结果Tokens数量为564,如下图所示。
触发搜索token扩大及独立按次计费
测试接口说明
- Preview接口:ERNIE-3.5-8K-Preview、ERNIE-4.0-8K-Preview、ERNIE-4.0-turbo-8K-Preview三个接口,已经开启搜索独立计费,触发搜索以后,prompt_tokens会变大,消耗的prompt_tokens越多。
- 主干接口:三个主干接口还没有开启搜索独立计费,因为可以看到prompt_tokens就是真实的输入文本的token长度,搜索增强将于2024年10月31号正式商用。
示例
Preview接口
请求
curl --location 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-preview?access_token=-42601389' \
--header 'Content-Type: application/json' \
--header 'Cookie: BAIDUID=63F4BC7680EE016B389BEC8BEF15C7C3:FG=1' \
--data '{
"messages": [
{"role":"user","content":"24年中国奥运会奖牌数是多少"}
],
"enable_trace":true,
}'
返回
{
"id": "as-m56fu4tru8",
"object": "chat.completion",
"created": 1725252525,
"result": "**截至当前时间(2024年9月2日),关于2024年中国奥运会奖牌数的确切数据尚未公布**,因为2024年巴黎奥运会尚未举行。\n\n然而,我们可以根据一些预测和历史数据来推测中国代表团在巴黎奥运会上的可能表现。例如,有预测认为中国运动员在巴黎奥运会上预计将夺得37枚金牌,与美国并列金牌榜首位。这一预测是基于对历届奥运会、世锦赛和世界杯的个人及团体成绩的综合统计模型分析得出的。但请注意,这只是一个预测,实际结果可能会有所不同。\n\n另外,从历史数据来看,中国体育代表团在夏季奥运会上一直保持着强劲的竞争力。自1984年洛杉矶奥运会以来,中国代表团在历届夏季奥运会上都取得了不俗的成绩,尤其是在跳水、举重、乒乓球等传统优势项目上。因此,我们可以期待中国代表团在巴黎奥运会上继续发挥出色,为国争光。\n\n总的来说,关于2024年中国奥运会奖牌数的确切数据需要等待巴黎奥运会结束后才能得知。在此之前,我们可以关注各种预测和报道,以了解中国代表团在奥运会上的表现和前景。",
"is_truncated": false,
"need_clear_history": false,
"search_info": {
"search_results": [
{
"index": 1,
"url": "http://localsite.baidu.com/site/wjzsorv8/8cd47d9a-7797-42f3-9306-b902ded71161?qaId=970837&categoryLv1=教育培训&efs=1&ch=54&srcid=10014&source=natural&category=其他&eduFrom=136&botSourceType=46",
"title": "24届奥运会奖牌榜排名表-百度知了爱学",
"datasource_id": "aurora-1"
},
{
"index": 2,
"url": "https://baijiahao.baidu.com/s?id=1805890606295601739&wfr=spider&for=pc",
"title": "中国队在2024年巴黎奥运会上的奖牌预测:多元优势项目助力奖牌榜",
"datasource_id": "aurora-1"
},
{
"index": 3,
"url": "https://baijiahao.baidu.com/s?id=1805105440305684091&wfr=spider&for=pc",
"title": "263金!中国体育代表团征战夏季奥运会奖牌数据全集",
"datasource_id": "aurora-1"
},
{
"index": 4,
"url": "https://www.mayiwenku.com/p-45649341.html",
"title": "2023年奥运会",
"datasource_id": "aurora-1"
}
]
},
"finish_reason": "normal",
"usage": {
"prompt_tokens": 1519,
"completion_tokens": 258,
"total_tokens": 1777,
"search_count": 1
}
}
prompt变大,是因为触发检索增强"prompt_tokens": 1519,因为触发检索,会计算一次搜索费用,所以"search_count": 1。
主干接口
请求
curl --location 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token=-42601389' \
--header 'Content-Type: application/json' \
--header 'Cookie: BAIDUID=63F4BC7680EE016B389BEC8BEF15C7C3:FG=1' \
--data '{
"messages": [
{"role":"user","content":"24年中国奥运会奖牌数是多少"}
],
"enable_trace":true
}'
返回
{
"id": "as-qudm54qfnj",
"object": "chat.completion",
"created": 1725251975,
"result": "关于2024年中国在奥运会上的奖牌数,目前还无法给出确切的数字,因为2024年巴黎奥运会尚未举行,奖牌的具体数量需要在奥运会结束后才能统计得出。\n\n然而,我们可以根据一些预测和分析来推测中国代表团在巴黎奥运会上的表现。根据Gracenote的预测,中国运动员在巴黎奥运会上预计将夺得37枚金牌,与美国并列金牌榜首位。这一预测是基于对历届奥运会、世锦赛和世界杯的个人及团体成绩的综合统计模型分析得出的。\n\n中国代表团在多个项目上都具备强劲的实力,如跳水、射击、游泳、举重、乒乓球和羽毛球等。这些项目在历届奥运会上都为中国代表团贡献了大量的奖牌,尤其是金牌。因此,中国代表团在巴黎奥运会上的奖牌数有望继续保持较高水平。\n\n需要注意的是,预测结果仅供参考,并不能完全代表实际比赛的结果。在奥运会这样的高水平赛事中,运动员的临场发挥、对手的表现以及比赛环境等多种因素都可能影响最终的奖牌数量。因此,我们还需要耐心等待巴黎奥运会的举行,并为中国代表团加油助威。",
"is_truncated": false,
"need_clear_history": false,
"search_info": {
"search_results": [
{
"index": 1,
"url": "http://localsite.baidu.com/site/wjzsorv8/8cd47d9a-7797-42f3-9306-b902ded71161?qaId=970837&categoryLv1=教育培训&efs=1&ch=54&srcid=10014&source=natural&category=其他&eduFrom=136&botSourceType=46",
"title": "24届奥运会奖牌榜排名表-百度知了爱学",
"datasource_id": "aurora-1"
},
{
"index": 2,
"url": "https://baijiahao.baidu.com/s?id=1805890606295601739&wfr=spider&for=pc",
"title": "中国队在2024年巴黎奥运会上的奖牌预测:多元优势项目助力奖牌榜",
"datasource_id": "aurora-1"
},
{
"index": 3,
"url": "https://baijiahao.baidu.com/s?id=1805105440305684091&wfr=spider&for=pc",
"title": "263金!中国体育代表团征战夏季奥运会奖牌数据全集",
"datasource_id": "aurora-1"
},
{
"index": 4,
"url": "https://www.mayiwenku.com/p-45649341.html",
"title": "2023年奥运会",
"datasource_id": "aurora-1"
}
]
},
"finish_reason": "normal",
"usage": {
"prompt_tokens": 7,
"completion_tokens": 218,
"total_tokens": 225
}
}
触发搜索以后token膨胀数量的大致计算
触发搜索以后,在search_results当中会给出可以外部访问的索引链接(部分公网不可访问的材料,并没有给出链接)。打开这些url地址,将其中的内容粘贴到百度的tokenizer计算器当中。可以看出来tokenizer器当中的token数量与prompt token数量接近。
"search_info": {
"search_results": [
{
"index": 1,
"url": "http://localsite.baidu.com/site/wjzsorv8/8cd47d9a-7797-42f3-9306-b902ded71161?qaId=970837&categoryLv1=教育培训&efs=1&ch=54&srcid=10014&source=natural&category=其他&eduFrom=136&botSourceType=46",
"title": "24届奥运会奖牌榜排名表-百度知了爱学",
"datasource_id": "aurora-1"
},
{
"index": 2,
"url": "https://baijiahao.baidu.com/s?id=1805890606295601739&wfr=spider&for=pc",
"title": "中国队在2024年巴黎奥运会上的奖牌预测:多元优势项目助力奖牌榜",
"datasource_id": "aurora-1"
},
{
"index": 3,
"url": "https://baijiahao.baidu.com/s?id=1805105440305684091&wfr=spider&for=pc",
"title": "263金!中国体育代表团征战夏季奥运会奖牌数据全集",
"datasource_id": "aurora-1"
},
{
"index": 4,
"url": "https://www.mayiwenku.com/p-45649341.html",
"title": "2023年奥运会",
"datasource_id": "aurora-1"
}
]
}
账单
可以看到搜索增强服务
这个计费项,单价0.008
元/次