Spaces:
Running
Running
metadata
title: tokenizer
emoji: 🔢
colorFrom: gray
colorTo: blue
sdk: docker
sdk_version: 3.0.0
app_file: main.go
pinned: false
Tokenizer Service
一个高效的API服务,用于计算大型语言模型的输入token数量。
支持的模型
Claude系列模型
- claude-3-7-sonnet-latest
- claude-3-5-sonnet-latest
- claude-3-5-haiku-latest
- claude-3-opus-latest
- claude-3-haiku-20240307
Gemini系列模型
- gemini-1.5-flash
- gemini-2.0-flash
- 其他Gemini系列模型
自动模型匹配
服务支持智能模型名称匹配,不区分大小写:
Claude模型匹配规则
- 包含"claude"、"3"和"7"的名称会匹配到
claude-3-7-sonnet-latest
- 包含"claude"、"3"、"5"和"sonnet"的名称会匹配到
claude-3-5-sonnet-latest
- 包含"claude"、"3"、"5"和"haiku"的名称会匹配到
claude-3-5-haiku-latest
- 包含"claude"、"3"和"opus"的名称会匹配到
claude-3-opus-latest
- 包含"claude"、"3"和"haiku"的名称会匹配到
claude-3-haiku-20240307
Gemini模型匹配规则
- 包含"gemini"和"2.0"或"2.5"的名称会匹配到
gemini-2.0-flash
- 包含"gemini"和"1.5"的名称会匹配到
gemini-1.5-flash
环境变量
运行服务需要以下环境变量:
ANTHROPIC_API_KEY
: Anthropic API密钥,用于计算Claude模型的tokenGOOGLE_API_KEY
: Google API密钥,用于计算Gemini模型的tokenSERVICE_URL
(可选): 服务的URL,用于防止Hugging Face空间休眠PORT
(可选): 服务监听的端口号,默认为7860
API接口
Token计算
端点: /count_tokens
方法: POST
请求格式:
{
"model": "模型名称",
"messages": [
{
"role": "user或assistant",
"content": "消息内容"
}
],
"system": "系统提示(可选)"
}
响应格式:
{
"input_tokens": 123
}
健康检查
端点: /health
方法: GET
响应格式:
{
"status": "healthy",
"time": "2023-04-01T12:34:56Z"
}
部署指南
本地运行
- 设置必要的环境变量
export ANTHROPIC_API_KEY=your_anthropic_key
export GOOGLE_API_KEY=your_google_key
- 启动服务
go run main.go
Docker部署
- 构建Docker镜像
docker build -t tokenizer .
- 运行容器
docker run -p 7860:7860 -e ANTHROPIC_API_KEY=your_anthropic_key -e GOOGLE_API_KEY=your_google_key tokenizer
Hugging Face部署
创建一个新的Space,选择Docker作为运行环境
添加以下Secret:
ANTHROPIC_API_KEY
: 你的Anthropic API密钥GOOGLE_API_KEY
: 你的Google API密钥SERVICE_URL
: 服务的完整URL,格式为https://你的空间名-用户名.hf.space
将代码推送到Space关联的仓库
Hugging Face会自动构建并部署服务
示例代码
Python调用示例
import requests
import json
url = "https://your-service-url/count_tokens"
data = {
"model": "claude-3-5-sonnet-latest",
"messages": [
{
"role": "user",
"content": "Hello, world!"
}
]
}
response = requests.post(url, json=data)
print(response.json())
License
MIT