一个功能强大的 Shell 脚本,用于批量调用大模型 API 进行 Token 消耗测试,支持智能限流和多线程并发。
curl - 发送 HTTP 请求jq - 解析 JSON 响应bc - 数学计算openssl - 生成随机内容(可选)# 创建脚本文件
cat > token.sh << 'EOF'
# 将脚本内容粘贴到这里
EOF
# 添加执行权限
chmod +x token.sh
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install -y curl jq bc openssl
CentOS/RHEL:
sudo yum install -y curl jq bc openssl
macOS:
brew install curl jq bc openssl
./token.sh
API端点: https://api.openai.com/v1 API密钥: sk-xxxxxxxxxxxxx 限流配置(直接回车跳过) QPS限制 (每秒请求数,如: 20): [直接回车] RPM限制 (每分钟请求数,如: 500000): [直接回车] TPM限制 (每分钟Token数,如: 500000): [直接回车] 无限流模式,可使用多线程加速 线程数 (默认5): 10 总请求数 (默认100): 500 内容长度/字符 (默认200): 300
API端点: https://api.deepseek.com API密钥: sk-xxxxxxxxxxxxx 限流配置(直接回车跳过) QPS限制 (每秒请求数,如: 20): 2 RPM限制 (每分钟请求数,如: 500000): 20 TPM限制 (每分钟Token数,如: 500000): 500000 检测到限流配置,将使用单线程模式 限流参数: QPS: 2 请求/秒 RPM: 20 请求/分钟 TPM: 500000 token/分钟 总请求数 (默认100): 100 内容长度/字符 (默认200): 500
[INFO] 依赖检查通过 [STEP] 获取模型列表 可用模型: 1. gpt-3.5-turbo 2. gpt-4 3. claude-3-opus 选择模型 (编号): 1 [STEP] 开始执行... [10:27:15] 请求 #1 成功 | Token: 242 | 耗时: 501ms | 累计: 242 token [10:27:16] 请求 #2 成功 | Token: 238 | 耗时: 489ms | 累计: 480 token [10:27:17] 请求 #3 成功 | Token: 245 | 耗时: 512ms | 累计: 725 token ════════════════════════════════════════ [STEP] 执行完成 ════════════════════════════════════════ 总请求: 100 成功: 98 失败: 2 成功率: 98.00% 总Token: 24500 平均Token/请求: 250 总耗时: 125秒 实际QPS: 0.80 ════════════════════════════════════════
| 参数 | 说明 | 示例 | 适用场景 |
|---|---|---|---|
| QPS | 每秒请求数限制 | 20 | API 有每秒请求限制 |
| RPM | 每分钟请求数限制 | 500000 | API 有每分钟请求限制 |
| TPM | 每分钟 Token 数限制 | 500000 | API 有每分钟 Token 消耗限制 |
脚本会根据是否配置限流自动选择运行模式:
| 模式 | 触发条件 | 线程数 | 适用场景 |
|---|---|---|---|
| 限流模式 | 设置了任何限流参数 | 1(单线程) | 需要精确控制请求频率 |
| 无限流模式 | 未设置任何限流参数 | 用户自定义 | 不限流,追求最高速度 |
# 无限流模式,100并发,1000请求
线程数: 100
总请求数: 1000
内容长度: 100
# 模拟真实场景,QPS=10
QPS: 10
总请求数: 1000
内容长度: 500
# 测试 TPM 限制
TPM: 100000
总请求数: 500
内容长度: 500 # 每个请求约消耗 500/4+100=225 token
解决:安装缺失的工具
# Ubuntu/Debian
sudo apt-get install curl jq bc
# macOS
brew install curl jq bc
可能原因:
解决:
# 测试 API 连接
curl -X GET "你的API端点/models" \
-H "Authorization: Bearer 你的密钥"
可能原因:
解决:检查 API 响应中的错误信息
脚本执行后会自动生成:
results_20231201_120000/ ├── results.txt # 详细请求记录 └── report_*.txt # 统计报告
API 密钥安全:
资源消耗:
MIT License
欢迎提交 Issue 和 Pull Request
如有问题,请通过 Issue 反馈