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 |
根据用户请求的模型判断请求类型。
|