[v2.0.0] (LLM Token) 安全地提取 usage,避免 response.raw_completion.usage 为 None 导致的 AttributeError

This commit is contained in:
SXP-Simon
2025-09-09 20:04:49 +08:00
parent f2b45a4fdf
commit cb5d186cf0
3 changed files with 26 additions and 17 deletions
+1 -1
View File
@@ -3,7 +3,7 @@
# QQ群日常分析插件
[![Plugin Version](https://img.shields.io/badge/Latest_Version-v1.9.0-blue.svg?style=for-the-badge&color=76bad9)](https://github.com/SXP-Simon/astrbot-qq-group-daily-analysis)
[![Plugin Version](https://img.shields.io/badge/Latest_Version-v2.0.0-blue.svg?style=for-the-badge&color=76bad9)](https://github.com/SXP-Simon/astrbot-qq-group-daily-analysis)
[![AstrBot](https://img.shields.io/badge/AstrBot-Plugin-ff69b4?style=for-the-badge)](https://github.com/AstrBotDevs/AstrBot)
[![License](https://img.shields.io/badge/License-MIT-green.svg?style=for-the-badge)](LICENSE)
+1 -1
View File
@@ -13,6 +13,6 @@ help: | # 插件的帮助信息
命令:
/群分析 [天数] - 分析群聊活动
/分析设置 [操作] - 管理设置(enable/disable/status/test
version: v1.9.0 # 插件版本号。格式:v1.1.1 或者 v1.1
version: v2.0.0 # 插件版本号。格式:v1.1.1 或者 v1.1
author: SXP-Simon # 作者
repo: https://github.com/SXP-Simon/astrbot-qq-group-daily-analysis # 插件的仓库地址
+24 -15
View File
@@ -116,11 +116,14 @@ class LLMAnalyzer:
# 提取token使用统计
token_usage = TokenUsage()
if response.raw_completion and hasattr(response.raw_completion, 'usage'):
usage = response.raw_completion.usage
token_usage.prompt_tokens = usage.prompt_tokens if usage.prompt_tokens else 0
token_usage.completion_tokens = usage.completion_tokens if usage.completion_tokens else 0
token_usage.total_tokens = usage.total_tokens if usage.total_tokens else 0
# 安全地提取 usage,避免 response.raw_completion.usage 为 None 导致的 AttributeError
usage = None
if getattr(response, 'raw_completion', None) is not None:
usage = getattr(response.raw_completion, 'usage', None)
if usage:
token_usage.prompt_tokens = getattr(usage, 'prompt_tokens', 0) or 0
token_usage.completion_tokens = getattr(usage, 'completion_tokens', 0) or 0
token_usage.total_tokens = getattr(usage, 'total_tokens', 0) or 0
# 解析响应
if hasattr(response, 'completion_text'):
@@ -341,11 +344,14 @@ class LLMAnalyzer:
# 提取token使用统计
token_usage = TokenUsage()
if response.raw_completion and hasattr(response.raw_completion, 'usage'):
usage = response.raw_completion.usage
token_usage.prompt_tokens = usage.prompt_tokens if usage.prompt_tokens else 0
token_usage.completion_tokens = usage.completion_tokens if usage.completion_tokens else 0
token_usage.total_tokens = usage.total_tokens if usage.total_tokens else 0
# 安全地提取 usage,避免 response.raw_completion.usage 为 None 导致的 AttributeError
usage = None
if getattr(response, 'raw_completion', None) is not None:
usage = getattr(response.raw_completion, 'usage', None)
if usage:
token_usage.prompt_tokens = getattr(usage, 'prompt_tokens', 0) or 0
token_usage.completion_tokens = getattr(usage, 'completion_tokens', 0) or 0
token_usage.total_tokens = getattr(usage, 'total_tokens', 0) or 0
# 解析响应
if hasattr(response, 'completion_text'):
@@ -442,11 +448,14 @@ class LLMAnalyzer:
# 提取token使用统计
token_usage = TokenUsage()
if response.raw_completion and hasattr(response.raw_completion, 'usage'):
usage = response.raw_completion.usage
token_usage.prompt_tokens = usage.prompt_tokens if usage.prompt_tokens else 0
token_usage.completion_tokens = usage.completion_tokens if usage.completion_tokens else 0
token_usage.total_tokens = usage.total_tokens if usage.total_tokens else 0
# 安全地提取 usage,避免 response.raw_completion.usage 为 None 导致的 AttributeError
usage = None
if getattr(response, 'raw_completion', None) is not None:
usage = getattr(response.raw_completion, 'usage', None)
if usage:
token_usage.prompt_tokens = getattr(usage, 'prompt_tokens', 0) or 0
token_usage.completion_tokens = getattr(usage, 'completion_tokens', 0) or 0
token_usage.total_tokens = getattr(usage, 'total_tokens', 0) or 0
# 解析响应
if hasattr(response, 'completion_text'):