| #!/bin/bash |
| |
|
|
| echo "💰 OpenAI API 预算估算工具" |
| echo "==========================================" |
| echo "" |
| echo "基于您的测试结果:" |
| echo " - 2个样本成本: \$0.001819" |
| echo " - 平均每样本: \$0.0009095" |
| echo "" |
|
|
| |
| AVG_INPUT_TOKENS=1917 |
| AVG_OUTPUT_TOKENS=2552 |
|
|
| |
| STANDARD_INPUT_PRICE=0.15 |
| STANDARD_OUTPUT_PRICE=0.60 |
|
|
| |
| BATCH_INPUT_PRICE=0.075 |
| BATCH_OUTPUT_PRICE=0.30 |
|
|
| echo "📊 不同预算对比:" |
| echo "==========================================" |
| printf "%-15s %-15s %-15s %-15s\n" "预算" "标准API" "Batch API" "节省" |
| echo "----------------------------------------" |
|
|
| for BUDGET in 1 5 10 20 50 100; do |
| |
| STANDARD_COUNT=$(python3 -c " |
| import math |
| avg_cost_per_sample = ($AVG_INPUT_TOKENS * $STANDARD_INPUT_PRICE / 1_000_000) + ($AVG_OUTPUT_TOKENS * $STANDARD_OUTPUT_PRICE / 1_000_000) |
| print(int($BUDGET / avg_cost_per_sample)) |
| ") |
| |
| |
| BATCH_COUNT=$(python3 -c " |
| import math |
| avg_cost_per_sample = ($AVG_INPUT_TOKENS * $BATCH_INPUT_PRICE / 1_000_000) + ($AVG_OUTPUT_TOKENS * $BATCH_OUTPUT_PRICE / 1_000_000) |
| print(int($BUDGET / avg_cost_per_sample)) |
| ") |
| |
| SAVINGS=$((BATCH_COUNT - STANDARD_COUNT)) |
| |
| printf "%-15s %-15s %-15s %-15s\n" "\$$BUDGET" "$STANDARD_COUNT" "$BATCH_COUNT" "+$SAVINGS" |
| done |
|
|
| echo "" |
| echo "🎯 推荐配置 (基于 \$10 预算):" |
| echo "==========================================" |
|
|
| |
| python3 -c " |
| budget = 10.0 |
| avg_input = $AVG_INPUT_TOKENS |
| avg_output = $AVG_OUTPUT_TOKENS |
| |
| # Batch API |
| batch_input_price = $BATCH_INPUT_PRICE / 1_000_000 |
| batch_output_price = $BATCH_OUTPUT_PRICE / 1_000_000 |
| batch_cost_per_sample = (avg_input * batch_input_price) + (avg_output * batch_output_price) |
| batch_samples = int(budget / batch_cost_per_sample) |
| |
| # Standard API |
| std_input_price = $STANDARD_INPUT_PRICE / 1_000_000 |
| std_output_price = $STANDARD_OUTPUT_PRICE / 1_000_000 |
| std_cost_per_sample = (avg_input * std_input_price) + (avg_output * std_output_price) |
| std_samples = int(budget / std_cost_per_sample) |
| |
| print(f'使用 Batch API:') |
| print(f' - 可生成样本数: {batch_samples:,}') |
| print(f' - 每样本成本: \${batch_cost_per_sample:.6f}') |
| print(f' - 总输入tokens: {batch_samples * avg_input:,}') |
| print(f' - 总输出tokens: {batch_samples * avg_output:,}') |
| print(f'') |
| print(f'使用标准 API:') |
| print(f' - 可生成样本数: {std_samples:,}') |
| print(f' - 每样本成本: \${std_cost_per_sample:.6f}') |
| print(f'') |
| print(f'💰 节省:') |
| print(f' - 多生成样本: {batch_samples - std_samples:,} ({((batch_samples - std_samples) / std_samples * 100):.1f}%)') |
| print(f' - 节省金额: \${budget * 0.5:.2f} (50%)') |
| " |
|
|
| echo "" |
| echo "📝 使用建议:" |
| echo "==========================================" |
| echo "1. 先小规模测试 (100-1000 样本)" |
| echo "2. 确认质量后再大规模生成" |
| echo "3. 使用 --min-score 90+ 保证高质量" |
| echo "4. Batch API 处理时间: 通常几小时内完成" |
| echo "" |
| echo "💡 运行估算命令:" |
| echo " python3 generate_problems_batch.py estimate --num-requests 20000" |
|
|