Spaces:
Running
Running
Update app.py
Browse files
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 |
-
#
|
69 |
-
if response.status_code == 429:
|
70 |
return True
|
71 |
-
|
72 |
-
|
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 |
-
|
78 |
-
|
79 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
根据用户请求的模型判断请求类型。
|