fix(llm): 兼容处理部分模型缺失的token用量字段
部分模型(如 embedding 模型)的 API 响应中可能不包含 `completion_tokens` 等完整的用量字段。 此前的直接属性访问会导致 `AttributeError`,从而中断使用记录和统计更新流程。 通过改用 `getattr(usage, "...", 0)` 的方式为缺失的字段提供默认值 0,增强了代码的健壮性,确保系统能够稳定处理来自不同类型模型的响应。
This commit is contained in:
@@ -1009,12 +1009,15 @@ class LLMRequest:
|
||||
# 步骤1: 更新内存中的统计数据,用于负载均衡
|
||||
stats = self.model_usage[model_info.name]
|
||||
|
||||
# 安全地获取 token 使用量, embedding 模型可能不返回 completion_tokens
|
||||
total_tokens = getattr(usage, "total_tokens", 0)
|
||||
|
||||
# 计算新的平均延迟
|
||||
new_request_count = stats.request_count + 1
|
||||
new_avg_latency = (stats.avg_latency * stats.request_count + time_cost) / new_request_count
|
||||
|
||||
self.model_usage[model_info.name] = stats._replace(
|
||||
total_tokens=stats.total_tokens + usage.total_tokens,
|
||||
total_tokens=stats.total_tokens + total_tokens,
|
||||
avg_latency=new_avg_latency,
|
||||
request_count=new_request_count,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user