通过cfc发布token计算在线API
更新时间:2025-09-10
背景
千帆平台提供了提供token计算器,用户可以在页面上查看token长度,同时千帆平台也提供了模型token计算说明,用户可以本地执行python脚本计算token长度。
但是有些场景当中,业务需要通过api方式计算token长度,本文介绍如何通过百度cfc托管token计算器服务,并通过api调用服务计算token长度。
方案设计
通过模型token计算说明我们知道,计算token长度依赖 transformers 库,因此我们需要将transformers库上传到cfc托管服务中,同时还需要上传对应模型的tokenizer.json和tokenizer_config.json文件,搭配index.py文件发布为一个在线http服务。
操作指南
cfc部署包创建
- tokenizer.json和tokenizer_config.json文件获取,参考:
# 按照huggingface_hub
pip install -U huggingface_hub
# 设置huggingface镜像源,加速下载速度
export HF_ENDPOINT=https://hf-mirror.com
# 下载pytorch模型权重下的tokenizer文件
huggingface-cli download "baidu/ERNIE-4.5-0.3B-PT" tokenizer.json tokenizer_config.json --local-dir ./- index.py文件编写,参考:
import json
import transformers
import os
def handler(event, context):
try:
# 从事件中获取输入文本
body = json.loads(event.get('body', '{}'))
text = body.get('text', '')
if not text:
return {
'statusCode': 400,
'body': json.dumps({
'error': 'no input'
})
}
# 初始化 tokenizer
tokenizer = transformers.AutoTokenizer.from_pretrained(
os.path.dirname(os.path.abspath(__file__)),
trust_remote_code=True
)
# 计算 token 数量
tokens = tokenizer.encode(text)
token_count = len(tokens)
return {
'statusCode': 200,
'body': json.dumps({
'token_count': token_count,
# 如果不需要token ids,可以注释掉
'tokens': tokens
})
}
except Exception as e:
return {
'statusCode': 500,
'body': json.dumps({
'error': str(e)
})
} - 将上述tokenizer.json、tokenizer_config.json、index.py,以及 transformers 依赖库打包成一个cfc部署包,参考:创建部署程序包
- 最后完整的部署包可以直接下载:ernie45_03b_v2.zip。这个示例部署包只适用于baidu/ERNIE-4.5-21B-A3B-PT模型。
- 如果你需要计算deepseek、qwen等模型,只需要替换ernie45_03b_v2.zip当中的tokenizer.json、tokenizer_config.json即可。
基于部署包发布cfc服务
- 登录cfc:https://console.bce.baidu.com/cfc/functions
- 创建函数

- 配置函数

- 进入函数配置页面

- 上传部署包

- 查看函数代码

- 找到触发器,新增http触发器


- 身份认证选择Bearer,在Token认证当中填入如下内容,其中value就是认证token,用户可以自定义,主要注意有长度要求,详情查看:https://cloud.baidu.com/doc/CFC/s/hme6pyv8r
[
{
"name": "Authorization",
"value": "1234567890abcdef1234567890abcdef"
}
]- 获取服务访问地址,示例:
https://fz3x****p9q.cfc-execute.bj.baidubce.com/token_calc

- 测试请求
请求
curl --location 'https://fz3x****p9q.cfc-execute.bj.baidubce.com/token_calc' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer 1234567890abcdef1234567890abcdef' \
--data '{
"text": "hello world!"
}'返回
{"token_count": 3, "tokens": [18830, 3135, 94179]}