Skip to content

Latest commit

 

History

History
234 lines (174 loc) · 5.96 KB

File metadata and controls

234 lines (174 loc) · 5.96 KB

AI平台账单查询系统修复说明

🔧 问题分析与修复

1. DeepSeek平台问题

原始错误: unsupported operand type(s) for /: 'str' and 'int'

问题原因:

  • API返回的数据可能是字符串格式,直接除以100导致类型错误
  • 没有对不同数据类型进行安全处理

修复方案:

  • 添加了 safe_float_convert() 函数,安全处理各种数据类型
  • 实现了 smart_convert() 函数,智能判断是否需要分转元的转换
  • 支持多种数据结构格式(balance_infosbalance_info、直接数据)

2. 硅基流动平台问题

原始错误: HTTP 404: 404 page not found

问题原因:

  • 使用了错误的API端点
  • 硅基流动的实际API结构与预期不符

修复方案:

  • 更新了API端点列表,按优先级尝试
  • 添加了 _is_valid_billing_response() 方法验证响应有效性
  • 实现了 _parse_siliconflow_data() 方法解析多种数据格式
  • 支持OpenAI兼容的API端点作为备选

3. 阿里云百炼平台问题 ⭐ 新增

原始错误: HTTP 404: 404 page not found

问题原因:

  • 使用了错误的API端点 /api/v1/billing/usage
  • 缺少正确的认证头设置

修复方案:

  • 更新了完整的API端点列表,包含compatible-mode路径
  • 添加了 X-DashScope-API-Key 认证头
  • 实现了 _is_valid_response()_parse_aliyun_data() 方法
  • 支持多种数据结构和字段名映射

新的API端点:

possible_endpoints = [
    f"{self.base_url}/compatible-mode/v1/dashboard/billing/usage",
    f"{self.base_url}/api/v1/services/aigc/text-generation/generation",
    f"{self.base_url}/compatible-mode/v1/models",
    f"{self.base_url}/api/v1/usage",
    f"{self.base_url}/v1/billing"
]

4. 豆包火山方舟平台问题 ⭐ 新增

原始错误: HTTP 404: 404 page not found

问题原因:

  • 单一API端点 /api/v1/billing 不可用
  • 认证方式可能不正确

修复方案:

  • 扩展了API端点列表,包含多个版本
  • 改进了AK/SK和API Key两种认证方式
  • 实现了 _is_valid_doubao_response()_parse_doubao_data() 方法
  • 支持result和data两种数据结构

新的API端点:

possible_endpoints = [
    f"{self.base_url}/api/v3/billing",
    f"{self.base_url}/api/v2/billing", 
    f"{self.base_url}/api/v1/user/balance",
    f"{self.base_url}/v1/models",
    f"{self.base_url}/open-api/v2/billing"
]

5. 智谱AI平台问题 ⭐ 新增

原始错误: HTTP 404: 404 page not found

问题原因:

  • API端点 /api/paas/v4/billing/usage/api/paas/v4/billing/credit 不可用
  • 数据解析逻辑不完善

修复方案:

  • 大幅扩展了API端点列表,包含多个版本和路径
  • 实现了智能的数据组合逻辑
  • 添加了 _has_balance_info()_has_complete_info() 检查方法
  • 支持分离的余额和使用数据自动组合

新的API端点:

possible_endpoints = [
    f"{self.base_url}/api/paas/v4/billing/usage",
    f"{self.base_url}/api/paas/v3/billing/usage",
    f"{self.base_url}/api/v4/billing",
    f"{self.base_url}/api/paas/v4/models",
    f"{self.base_url}/v4/billing"
]

🚀 使用方法

1. 确保配置正确

检查 ai_billing_config.ini 文件:

[deepseek]
api_key = sk-your-deepseek-api-key
base_url = https://api.deepseek.com
enabled = true

[siliconflow]
api_key = sk-your-siliconflow-api-key
base_url = https://api.siliconflow.cn
enabled = true

2. 运行查询

# 查询所有平台
python3 get_bill.py --query

# 只查询DeepSeek
python3 get_bill.py --platform deepseek

# 只查询硅基流动
python3 get_bill.py --platform siliconflow

# 详细日志
python3 get_bill.py --query --verbose

3. Python代码调用

from get_bill import DeepSeekPlatform, SiliconFlowPlatform

# DeepSeek
deepseek = DeepSeekPlatform('your-api-key')
billing_info = deepseek.get_billing_info()
print(f"DeepSeek余额: {billing_info.balance} {billing_info.currency}")

# 硅基流动
siliconflow = SiliconFlowPlatform('your-api-key')
billing_info = siliconflow.get_billing_info()
print(f"硅基流动余额: {billing_info.balance} {billing_info.currency}")

🔍 验证修复

运行测试脚本验证修复效果:

# 逻辑测试(无网络依赖)
python3 test_logic.py

# 完整测试(需要网络和API密钥)
python3 test_fix.py

📊 新增功能特性

1. 更强的错误处理

  • 安全的数据类型转换
  • 多重API端点重试
  • 详细的错误日志

2. 灵活的数据解析

  • 支持多种响应格式
  • 自动检测数据结构
  • 智能字段映射

3. 增强的兼容性

  • DeepSeek: 支持分/元自动转换
  • 硅基流动: 兼容OpenAI API规范
  • 通用: 支持字符串和数值型数据

⚠️ 注意事项

  1. API密钥: 确保API密钥有效且有足够权限
  2. 网络连接: 确保能够访问相应的API服务
  3. API限制: 注意各平台的请求频率限制
  4. 数据格式: 如果API返回格式变化,系统会自动适配

🐛 故障排除

常见问题

  1. 仍然报404错误

    • 检查API密钥是否正确
    • 确认账户是否有API访问权限
    • 尝试在浏览器中访问API文档
  2. 数据显示为0

    • 可能是新注册账户,余额确实为0
    • 检查API返回的原始数据(--verbose模式)
  3. 网络连接问题

    • 检查防火墙设置
    • 确认DNS解析正常
    • 尝试使用代理

调试模式

使用详细模式查看更多信息:

python3 get_bill.py --query --verbose

这将显示:

  • API请求详情
  • 响应数据内容
  • 错误堆栈信息
  • 重试过程

📝 更新日志

  • ✅ 修复DeepSeek字符串除法错误
  • ✅ 更新硅基流动API端点
  • ✅ 增强数据类型安全处理
  • ✅ 添加多重API端点重试
  • ✅ 改进错误处理和日志
  • ✅ 支持更多数据格式

修复后的系统现在更加稳定和兼容,能够处理各种API响应格式,并提供详细的错误信息帮助排查问题。