Files
Aether/src/api/handlers/base/utils.py

32 lines
1.0 KiB
Python
Raw Normal View History

"""
Handler 基础工具函数
"""
from typing import Any, Dict
def extract_cache_creation_tokens(usage: Dict[str, Any]) -> int:
"""
提取缓存创建 tokens兼容新旧格式
Claude API 在不同版本中使用了不同的字段名来表示缓存创建 tokens
- 新格式2024年后使用 claude_cache_creation_5_m_tokens
claude_cache_creation_1_h_tokens 分别表示 5 分钟和 1 小时缓存
- 旧格式使用 cache_creation_input_tokens 表示总的缓存创建 tokens
此函数自动检测并适配两种格式优先使用新格式
Args:
usage: API 响应中的 usage 字典
Returns:
缓存创建 tokens 总数
"""
# 优先使用新格式
cache_5m = usage.get("claude_cache_creation_5_m_tokens", 0)
cache_1h = usage.get("claude_cache_creation_1_h_tokens", 0)
total = int(cache_5m) + int(cache_1h)
# 如果新格式不存在total == 0回退到旧格式
return total if total > 0 else int(usage.get("cache_creation_input_tokens", 0))