Fix handling of cached_tokens in _extract_usage

Ensure cached_tokens is an integer and handle None safely.
This commit is contained in:
LIghtJUNction
2026-03-21 02:37:04 +08:00
committed by GitHub
parent 6e3273dbec
commit 68c01cfba4

View File

@@ -391,7 +391,8 @@ class ProviderOpenAIOfficial(Provider):
def _extract_usage(self, usage: CompletionUsage | dict) -> TokenUsage:
ptd = getattr(usage, "prompt_tokens_details", None)
cached = getattr(ptd, "cached_tokens", 0) if ptd else 0
prompt_tokens = getattr(usage, "prompt_tokens", 0) or 0
cached = cached if isinstance(cached, int) else 0 # ptd.cached_tokens 可能为None
prompt_tokens = getattr(usage, "prompt_tokens", 0) or 0 # 安全
completion_tokens = getattr(usage, "completion_tokens", 0) or 0
return TokenUsage(
input_other=prompt_tokens - cached,