通过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文件获取,参考:
Bash
1# 按照huggingface_hub
2pip install -U huggingface_hub
3
4# 设置huggingface镜像源,加速下载速度
5export HF_ENDPOINT=https://hf-mirror.com
6
7# 下载pytorch模型权重下的tokenizer文件
8huggingface-cli download "baidu/ERNIE-4.5-0.3B-PT" tokenizer.json tokenizer_config.json --local-dir ./
- index.py文件编写,参考:
Python
1import json
2import transformers
3import os
4
5def handler(event, context):
6 try:
7 # 从事件中获取输入文本
8 body = json.loads(event.get('body', '{}'))
9 text = body.get('text', '')
10
11 if not text:
12 return {
13 'statusCode': 400,
14 'body': json.dumps({
15 'error': 'no input'
16 })
17 }
18
19 # 初始化 tokenizer
20 tokenizer = transformers.AutoTokenizer.from_pretrained(
21 os.path.dirname(os.path.abspath(__file__)),
22 trust_remote_code=True
23 )
24
25 # 计算 token 数量
26 tokens = tokenizer.encode(text)
27 token_count = len(tokens)
28
29 return {
30 'statusCode': 200,
31 'body': json.dumps({
32 'token_count': token_count,
33 # 如果不需要token ids,可以注释掉
34 'tokens': tokens
35 })
36 }
37
38 except Exception as e:
39 return {
40 'statusCode': 500,
41 'body': json.dumps({
42 'error': str(e)
43 })
44 }
- 将上述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
Plain Text
1[
2 {
3 "name": "Authorization",
4 "value": "1234567890abcdef1234567890abcdef"
5 }
6]
- 获取服务访问地址,示例:
https://fz3x****p9q.cfc-execute.bj.baidubce.com/token_calc
- 测试请求
请求
Bash
1curl --location 'https://fz3x****p9q.cfc-execute.bj.baidubce.com/token_calc' \
2--header 'Content-Type: application/json' \
3--header 'Authorization: Bearer 1234567890abcdef1234567890abcdef' \
4--data '{
5 "text": "hello world!"
6}'
返回
JSON
1{"token_count": 3, "tokens": [18830, 3135, 94179]}