资讯 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

通过cfc发布token计算在线API

背景

千帆平台提供了提供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部署包创建

  1. 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 ./
  1. 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)
            })
        } 
  1. 将上述tokenizer.json、tokenizer_config.json、index.py,以及 transformers 依赖库打包成一个cfc部署包,参考:创建部署程序包
  2. 最后完整的部署包可以直接下载:ernie45_03b_v2.zip。这个示例部署包只适用于baidu/ERNIE-4.5-21B-A3B-PT模型。
  3. 如果你需要计算deepseek、qwen等模型,只需要替换ernie45_03b_v2.zip当中的tokenizer.json、tokenizer_config.json即可。

基于部署包发布cfc服务

  1. 登录cfc:https://console.bce.baidu.com/cfc/functions
  2. 创建函数

image (1).png

  1. 配置函数 image.png
  2. 进入函数配置页面

image.png

  1. 上传部署包

image (4).png

  1. 查看函数代码 image (5).png
  2. 找到触发器,新增http触发器

image.png

image.png

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

image.png

  1. 测试请求

请求

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]}
上一篇
模型token计算说明
下一篇
推理服务API