From fbe303a3cd7b0f31b9a54b6fad89b3ef9bfb45a1 Mon Sep 17 00:00:00 2001 From: fawney19 Date: Wed, 7 Jan 2026 16:13:53 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=A1=A5=E5=85=85=20cost.py=20=E4=B8=AD?= =?UTF-8?q?=20Provider=20=E6=9C=AA=E5=AE=9E=E7=8E=B0=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E6=97=B6=E7=9A=84=20else=20=E5=88=86=E6=94=AF=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/services/model/cost.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/services/model/cost.py b/src/services/model/cost.py index 17c768c..3e2b470 100644 --- a/src/services/model/cost.py +++ b/src/services/model/cost.py @@ -194,6 +194,13 @@ class ModelCostService: "pricing": global_model.default_tiered_pricing, "source": "global" } + else: + # Provider 没有实现该模型,直接使用 GlobalModel 的默认阶梯配置 + if global_model.default_tiered_pricing is not None: + result = { + "pricing": global_model.default_tiered_pricing, + "source": "global" + } self._tiered_pricing_cache[cache_key] = result return result @@ -276,6 +283,18 @@ class ModelCostService: output_price = model_obj.get_effective_output_price() logger.debug(f"找到模型价格配置: {provider_name}/{model} " f"(输入: ${input_price}/M, 输出: ${output_price}/M)") + else: + # Provider 没有实现该模型,直接使用 GlobalModel 的默认价格 + tiered = global_model.default_tiered_pricing + if tiered and tiered.get("tiers"): + first_tier = tiered["tiers"][0] + input_price = first_tier.get("input_price_per_1m", 0) + output_price = first_tier.get("output_price_per_1m", 0) + else: + input_price = 0.0 + output_price = 0.0 + logger.debug(f"使用 GlobalModel 默认价格: {provider_name}/{model} " + f"(输入: ${input_price}/M, 输出: ${output_price}/M)") # 如果没有找到价格配置,使用 0.0 并记录警告 if input_price is None: @@ -380,6 +399,16 @@ class ModelCostService: # 使用 get_effective_* 方法,会自动回退到 GlobalModel 的默认值 cache_creation_price = model_obj.get_effective_cache_creation_price() cache_read_price = model_obj.get_effective_cache_read_price() + else: + # Provider 没有实现该模型,直接使用 GlobalModel 的默认价格 + tiered = global_model.default_tiered_pricing + if tiered and tiered.get("tiers"): + first_tier = tiered["tiers"][0] + cache_creation_price = first_tier.get("cache_creation_price_per_1m") + cache_read_price = first_tier.get("cache_read_price_per_1m") + else: + cache_creation_price = None + cache_read_price = None # 默认缓存价格估算(如果没有配置)- 基于输入价格计算 if cache_creation_price is None or cache_read_price is None: @@ -434,6 +463,9 @@ class ModelCostService: if model_obj: # 使用 get_effective_* 方法,会自动回退到 GlobalModel 的默认值 price_per_request = model_obj.get_effective_price_per_request() + else: + # Provider 没有实现该模型,直接使用 GlobalModel 的默认价格 + price_per_request = global_model.default_price_per_request return price_per_request