yangtb24 commited on
Commit
6b0a5df
1 Parent(s): 253d816

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -32
app.py CHANGED
@@ -47,6 +47,8 @@ def get_credit_summary(api_key):
47
  logging.error(f"total_balance 无法转换为浮点数,API Key:{api_key},错误信息:{e}")
48
  return None
49
 
 
 
50
  def test_model_availability(api_key, model_name):
51
  """
52
  测试指定的模型是否可用。
@@ -65,18 +67,31 @@ def test_model_availability(api_key, model_name):
65
  "stream": False
66
  },
67
  timeout=10)
68
- # 检查是否是429错误
69
- if response.status_code == 429:
70
  return True
71
-
72
- response.json() # 尝试解析 JSON 响应
73
- return True
74
  except requests.exceptions.RequestException as e:
75
  logging.error(f"测试模型 {model_name} 可用性失败,API Key:{api_key},错误信息:{e}")
76
  return False
77
- except ValueError:
78
- logging.error(f"测试模型 {model_name} 可用性失败,API Key:{api_key},响应不是有效的 JSON 格式")
79
- return False
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
 
81
  def load_keys():
82
  """
@@ -148,30 +163,6 @@ def get_all_models(api_key):
148
  logging.error(f"解析模型列表失败,API Key:{api_key},错误信息:{e}")
149
  return []
150
 
151
- def refresh_models():
152
- """
153
- 刷新模型列表和免费模型列表。
154
- """
155
- global all_models, free_models
156
-
157
- # 使用 valid_keys_global 中的第一个 key 获取完整模型列表
158
- if valid_keys_global:
159
- all_models = get_all_models(valid_keys_global[0])
160
- else:
161
- logging.warning("没有有效的key,无法获取完整模型列表。")
162
- all_models = []
163
-
164
- # 从环境变量读取免费模型列表
165
- free_models_str = os.environ.get("FREE_MODELS")
166
- if free_models_str:
167
- free_models = [model.strip() for model in free_models_str.split(',')]
168
- else:
169
- logging.warning("环境变量 FREE_MODELS 未设置或为空,免费模型列表将为空。")
170
- free_models = []
171
-
172
- logging.info(f"所有模型列表:{all_models}")
173
- logging.info(f"免费模型列表:{free_models}")
174
-
175
  def determine_request_type(model_name):
176
  """
177
  根据用户请求的模型判断请求类型。
 
47
  logging.error(f"total_balance 无法转换为浮点数,API Key:{api_key},错误信息:{e}")
48
  return None
49
 
50
+ FREE_MODEL_TEST_KEY = "sk-bmjbjzleaqfgtqfzmcnsbagxrlohriadnxqrzfocbizaxukw" # 硬编码免费模型测试 KEY
51
+
52
  def test_model_availability(api_key, model_name):
53
  """
54
  测试指定的模型是否可用。
 
67
  "stream": False
68
  },
69
  timeout=10)
70
+ # 正常返回或返回 429 都被认为是免费模型
71
+ if response.status_code == 429 or response.status_code < 500 :
72
  return True
73
+ else:
74
+ return False
 
75
  except requests.exceptions.RequestException as e:
76
  logging.error(f"测试模型 {model_name} 可用性失败,API Key:{api_key},错误信息:{e}")
77
  return False
78
+
79
+ def refresh_models():
80
+ """
81
+ 刷新模型列表和免费模型列表。
82
+ """
83
+ global all_models, free_models
84
+
85
+ # 使用 FREE_MODEL_TEST_KEY 获取所有模型列表
86
+ all_models = get_all_models(FREE_MODEL_TEST_KEY)
87
+
88
+ free_models = []
89
+ for model in all_models:
90
+ if test_model_availability(FREE_MODEL_TEST_KEY, model):
91
+ free_models.append(model)
92
+
93
+ logging.info(f"所有模型列表:{all_models}")
94
+ logging.info(f"免费模型列表:{free_models}")
95
 
96
  def load_keys():
97
  """
 
163
  logging.error(f"解析模型列表失败,API Key:{api_key},错误信息:{e}")
164
  return []
165
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
166
  def determine_request_type(model_name):
167
  """
168
  根据用户请求的模型判断请求类型。