diff --git a/astrbot/core/provider/sources/openai_source.py b/astrbot/core/provider/sources/openai_source.py index 1212e8b00..44d089805 100644 --- a/astrbot/core/provider/sources/openai_source.py +++ b/astrbot/core/provider/sources/openai_source.py @@ -251,10 +251,14 @@ class ProviderOpenAIOfficial(Provider): def _extract_usage(self, usage: CompletionUsage) -> TokenUsage: ptd = usage.prompt_tokens_details cached = ptd.cached_tokens if ptd and ptd.cached_tokens else 0 + prompt_tokens = 0 if usage.prompt_tokens is None else usage.prompt_tokens + completion_tokens = ( + 0 if usage.completion_tokens is None else usage.completion_tokens + ) return TokenUsage( - input_other=usage.prompt_tokens - cached, - input_cached=ptd.cached_tokens if ptd and ptd.cached_tokens else 0, - output=usage.completion_tokens, + input_other=prompt_tokens - cached, + input_cached=cached, + output=completion_tokens, ) async def _parse_openai_completion(