import requests import re url = "https://api.siliconflow.cn/v1/models" visual_model_list = [ "Qwen/Qwen2-VL-72B-Instruct", "OpenGVLab/InternVL2-26B", "TeleAI/TeleMM", "Pro/Qwen/Qwen2-VL-7B-Instruct", "Pro/OpenGVLab/InternVL2-8B" ] reasoning_model_list = [ "Qwen/QwQ-32B-Preview", "Qwen/QVQ-72B-Preview", "AIDC-AI/Marco-o1" ] excluded_models = [ "deepseek-ai/deepseek-vl2", "01-ai/Yi-1.5-6B-Chat" ] image_model_list = [ "black-forest-labs/FLUX.1-dev", "stabilityai/stable-diffusion-3-5-large" ] qwen_pattern = re.compile(r'^Qwen/') meta_llama_pattern = re.compile(r'^meta-llama/') deepseek_ai_pattern = re.compile(r'^deepseek-ai/') pro_lora_pattern = re.compile(r'^(Pro|LoRA)/') def extract_version_and_params(model): version_match = re.search(r'(\d+(\.\d+)+)', model) version = float(version_match.group(1)) if version_match else 0.0 params_match = re.search(r'(\d+(\.\d+)?)(B|b)', model) params = float(params_match.group(1)) if params_match else 0.0 return version, params def sort_models(model_list): return sorted(model_list, key=lambda x: extract_version_and_params(x), reverse=True) def text_model(api_key: str) -> list: model_list = [] querystring = {"type":"text","sub_type":"chat"} headers = {"Authorization": f"Bearer {api_key}"} response = requests.request("GET", url, params=querystring, headers=headers) if response.status_code == 200: response_object = response.json() response_data = response_object["data"] for i in response_data: if i["id"] not in visual_model_list and i["id"] not in reasoning_model_list and i["id"] not in excluded_models: model_list.append(i["id"]) qwen_models = [model for model in model_list if qwen_pattern.search(model) and not pro_lora_pattern.search(model)] meta_llama_models = [model for model in model_list if meta_llama_pattern.search(model) and not pro_lora_pattern.search(model)] deepseek_ai_models = [model for model in model_list if deepseek_ai_pattern.search(model) and not pro_lora_pattern.search(model)] other_models = [model for model in model_list if not qwen_pattern.search(model) and not meta_llama_pattern.search(model) and not deepseek_ai_pattern.search(model) and not pro_lora_pattern.search(model)] pro_lora_models = [model for model in model_list if pro_lora_pattern.search(model)] qwen_models_sorted = sort_models(qwen_models) meta_llama_models_sorted = sort_models(meta_llama_models) deepseek_ai_models_sorted = sort_models(deepseek_ai_models) other_models_sorted = sort_models(other_models) pro_lora_models_sorted = sort_models(pro_lora_models) model_list = qwen_models_sorted + meta_llama_models_sorted + deepseek_ai_models_sorted + other_models_sorted + pro_lora_models_sorted return model_list