From 68c01cfba414a2318286af1822fab2bbd85da60e Mon Sep 17 00:00:00 2001 From: LIghtJUNction Date: Sat, 21 Mar 2026 02:37:04 +0800 Subject: [PATCH] Fix handling of cached_tokens in _extract_usage Ensure cached_tokens is an integer and handle None safely. --- astrbot/core/provider/sources/openai_source.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/astrbot/core/provider/sources/openai_source.py b/astrbot/core/provider/sources/openai_source.py index 90d427248..233347bbd 100644 --- a/astrbot/core/provider/sources/openai_source.py +++ b/astrbot/core/provider/sources/openai_source.py @@ -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,