From 7d7f63c32cd2c1d82086d56fd1db810ddf574e97 Mon Sep 17 00:00:00 2001 From: LIghtJUNction Date: Sat, 21 Mar 2026 02:40:12 +0800 Subject: [PATCH] Fix cached_tokens handling in _extract_usage method 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 a7c5b47059..d08f1c91ca 100644 --- a/astrbot/core/provider/sources/openai_source.py +++ b/astrbot/core/provider/sources/openai_source.py @@ -390,7 +390,8 @@ def _extract_reasoning_content( 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,