diff --git a/api/apps/services/models_api_service.py b/api/apps/services/models_api_service.py index e32c693b69..8ce14874ec 100644 --- a/api/apps/services/models_api_service.py +++ b/api/apps/services/models_api_service.py @@ -53,6 +53,13 @@ def _to_int(v, default=500): return default +def _factory_model_types(llm: dict) -> list[str]: + model_type = llm.get("model_type") + if isinstance(model_type, list): + return model_type + return [model_type] if model_type else [] + + def _get_model_info(tenant_id: str, default_model: str, model_type: str): """ Parse a composite model string (modelName@instanceName@providerName or modelName@providerName) @@ -147,7 +154,7 @@ def _get_model_info(tenant_id: str, default_model: str, model_type: str): return None # Check if the model_type matches - if target_llm[0].get("model_type") != model_type: + if model_type not in _factory_model_types(target_llm[0]): logging.warning(f"Model '{model_name}' isn't a {model_type} model") return None @@ -217,7 +224,7 @@ def _check_model_available(tenant_id: str, provider_name: str, instance_name: st return False, f"Model '{model_name}' not found for provider '{provider_name}'" if target_llm: - if target_llm[0].get("model_type") != model_type: + if model_type not in _factory_model_types(target_llm[0]): return False, f"Model '{model_name}' isn't a {model_type} model" return True, None @@ -347,7 +354,8 @@ def list_tenant_added_models(tenant_id: str, model_type_filter: str=None): if not factory_instances: continue for llm in factory["llm"]: - if model_type_filter and llm["model_type"] != model_type_filter: + factory_model_types = _factory_model_types(llm) + if model_type_filter and model_type_filter not in factory_model_types: continue for factory_instance in factory_instances: @@ -356,7 +364,7 @@ def list_tenant_added_models(tenant_id: str, model_type_filter: str=None): manual_modified_models = model_record_map.get(model_record_key, []) active_model_types = [manual_model.model_type for manual_model in manual_modified_models if manual_model.status == ActiveStatusEnum.ACTIVE.value] inactive_model_types = [manual_model.model_type for manual_model in manual_modified_models if manual_model.status == ActiveStatusEnum.INACTIVE.value] - model_types = list(set([llm["model_type"]] + active_model_types) - set(inactive_model_types)) + model_types = list(set(factory_model_types + active_model_types) - set(inactive_model_types)) if not model_types: continue diff --git a/api/apps/services/provider_api_service.py b/api/apps/services/provider_api_service.py index 4715710767..8a6ff2712b 100644 --- a/api/apps/services/provider_api_service.py +++ b/api/apps/services/provider_api_service.py @@ -35,6 +35,13 @@ def _to_int(v, default=500): return default +def _factory_model_types(llm: dict) -> list[str]: + model_type = llm.get("model_type") + if isinstance(model_type, list): + return model_type + return [model_type] if model_type else [] + + def _normalize_provider_base_url(provider_name: str, base_url: str | None): if provider_name != "VLLM" or not base_url: return base_url @@ -66,9 +73,9 @@ def list_providers(tenant_id: str, all_available: bool = False): if factory_info["name"] in ["Youdao", "FastEmbed", "BAAI", "Builtin", "siliconflow_intl"]: continue model_types = sorted(set( - llm["model_type"] + model_type for llm in factory_info.get("llm", []) - if llm.get("model_type") + for model_type in _factory_model_types(llm) )) provider = { "model_types": model_types, @@ -94,9 +101,9 @@ def list_providers(tenant_id: str, all_available: bool = False): if name not in ["Youdao", "FastEmbed", "BAAI", "Builtin", "siliconflow_intl"] and factory_info_mapping.get(name): factory_info = factory_info_mapping[name] model_types = sorted(set( - llm["model_type"] + model_type for llm in factory_info.get("llm", []) - if llm.get("model_type") + for model_type in _factory_model_types(llm) )) provider = { "model_types": model_types, @@ -196,7 +203,7 @@ async def list_provider_models(provider_name: str, api_key: str = None, base_url static_llms = [{ "name": llm["name"], "max_tokens": llm["max_tokens"], - "model_types": [llm["model_type"]], + "model_types": _factory_model_types(llm), "features": ( llm.get("features") if llm.get("features") is not None @@ -246,11 +253,9 @@ def show_provider_model(provider_name: str, model_name: str): return True, { "name": llm_info["name"], "max_tokens": llm_info["max_tokens"], - "model_types": [llm_info["model_type"]], + "model_types": _factory_model_types(llm_info), "thinking": None, - "model_type_map": { - llm_info["model_type"]: True - } + "model_type_map": {model_type: True for model_type in _factory_model_types(llm_info)} } @@ -414,7 +419,8 @@ async def verify_api_key(provider_name: str, api_key: str|dict, base_url: str=No api_key = {"yiyan_ak": api_key, "yiyan_sk": ""} api_key_str = api_key if isinstance(api_key, str) else json.dumps(api_key) for llm in factory_llms: - if not embd_passed and llm["model_type"] == LLMType.EMBEDDING.value: + model_types = _factory_model_types(llm) + if not embd_passed and LLMType.EMBEDDING.value in model_types: assert provider_name in EmbeddingModel, f"Embedding model from {provider_name} is not supported yet." mdl = EmbeddingModel[provider_name](api_key_str, llm["llm_name"], base_url=base_url) try: @@ -432,7 +438,7 @@ async def verify_api_key(provider_name: str, api_key: str|dict, base_url: str=No llm["llm_name"], ) msg += f"\nFail to access embedding model({llm['llm_name']}) using this api key." + str(e) - elif not chat_passed and llm["model_type"] == LLMType.CHAT.value: + elif not chat_passed and LLMType.CHAT.value in model_types: assert provider_name in ChatModel, f"Chat model from {provider_name} is not supported yet." mdl = ChatModel[provider_name](api_key_str, llm["llm_name"], base_url=base_url, **extra) try: @@ -458,7 +464,7 @@ async def verify_api_key(provider_name: str, api_key: str|dict, base_url: str=No llm["llm_name"], ) msg += f"\nFail to access model({provider_name}/{llm['llm_name']}) using this api key." + str(e) - elif not rerank_passed and llm["model_type"] == LLMType.RERANK.value: + elif not rerank_passed and LLMType.RERANK.value in model_types: assert provider_name in RerankModel, f"Rerank model from {provider_name} is not supported yet." mdl = RerankModel[provider_name](api_key_str, llm["llm_name"], base_url=base_url) try: @@ -477,7 +483,7 @@ async def verify_api_key(provider_name: str, api_key: str|dict, base_url: str=No llm["llm_name"], ) msg += f"\nFail to access model({provider_name}/{llm['llm_name']}) using this api key." + str(e) - elif not ocr_passed and llm["model_type"] == LLMType.OCR.value: + elif not ocr_passed and LLMType.OCR.value in model_types: assert provider_name in OcrModel, f"OCR model from {provider_name} is not supported yet." mdl = OcrModel[provider_name](key=api_key_str, model_name=llm["llm_name"], base_url=base_url) try: @@ -617,7 +623,7 @@ def list_instance_models(tenant_id: str, provider_name: str, instance_name: str, for llm in llms: models.append({ "name": llm["llm_name"], - "model_type": [llm["model_type"]] + model_info_map.get(llm["llm_name"], {}).get("model_type", []), + "model_type": _factory_model_types(llm) + model_info_map.get(llm["llm_name"], {}).get("model_type", []), "max_tokens": llm.get("max_tokens"), "status": model_info_map.get(llm["llm_name"], {}).get("status", "active"), }) @@ -657,7 +663,7 @@ def add_model_to_instance(tenant_id: str, provider_name: str, instance_name: str for _type in model_type: extra_fields = {"max_tokens": max_tokens} - target_model = [llm for llm in llms if llm["model_type"] == _type and llm["llm_name"] == model_name] + target_model = [llm for llm in llms if _type in _factory_model_types(llm) and llm["llm_name"] == model_name] if target_model: extra_fields.update({"is_tools": target_model[0].get("is_tools", False)}) if extra: @@ -725,15 +731,16 @@ def update_model_status(tenant_id: str, provider_name: str, instance_name: str, if not target_llm: return False, f"provider {provider_name} model {model_name} not found" - TenantModelService.insert( - id=get_uuid(), - model_name=model_name, - model_type=target_llm[0]["model_type"], - provider_id=provider_obj.id, - instance_id=instance_obj.id, - status=status, - extra=json.dumps({"max_tokens": target_llm[0].get("max_tokens", 8192), "is_tools": target_llm[0].get("is_tools", False)}) - ) + for model_type in _factory_model_types(target_llm[0]): + TenantModelService.insert( + id=get_uuid(), + model_name=model_name, + model_type=model_type, + provider_id=provider_obj.id, + instance_id=instance_obj.id, + status=status, + extra=json.dumps({"max_tokens": target_llm[0].get("max_tokens", 8192), "is_tools": target_llm[0].get("is_tools", False)}) + ) return True, None diff --git a/api/db/joint_services/tenant_model_service.py b/api/db/joint_services/tenant_model_service.py index 53a3d8e1c2..1f9d8bfd9b 100644 --- a/api/db/joint_services/tenant_model_service.py +++ b/api/db/joint_services/tenant_model_service.py @@ -27,6 +27,11 @@ from api.db.services.tenant_model_service import TenantModelService logger = logging.getLogger(__name__) +def _factory_model_types(llm: dict) -> list[str]: + model_type = llm.get("model_type") + if isinstance(model_type, list): + return model_type + return [model_type] if model_type else [] def _decode_api_key_config(raw_api_key: str) -> tuple[str, bool | None, str | None]: if not raw_api_key: return raw_api_key, None, None @@ -235,12 +240,14 @@ def get_model_config_from_provider_instance(tenant_id, model_type: str|enum.Enum if not llm_list: raise LookupError(f"Model config not found: {model_name}") llm_info = llm_list[0] + if model_type_val not in _factory_model_types(llm_info): + raise LookupError(f"Model {model_name} is not a {model_type_val} model.") model_config = { "llm_factory": provider_obj.provider_name, "api_key": api_key, "llm_name": llm_info["llm_name"], "api_base": extra_fields.get("base_url", ""), - "model_type": llm_info["model_type"], + "model_type": model_type_val, "is_tools": llm_info.get("is_tools", is_tool) } if api_key_payload is not None: @@ -284,7 +291,7 @@ def get_model_type_by_name(tenant_id: str, model_name: str): llm_list = [llm for llm in fac_list[0]["llm"] if llm["llm_name"] == pure_model_name] if not llm_list: raise LookupError(f"Model {pure_model_name} not found for model {model_name}.") - return [llm_list[0]["model_type"]] + return _factory_model_types(llm_list[0]) return [model_obj.model_type for model_obj in model_objs] diff --git a/conf/llm_factories.json b/conf/llm_factories.json index 3caa508d61..76da621b04 100644 --- a/conf/llm_factories.json +++ b/conf/llm_factories.json @@ -271,9 +271,12 @@ }, { "llm_name": "grok-2-vision", - "tags": "LLM,CHAT,IMAGE2TEXT,32k", + "tags": "LLM,IMAGE2TEXT,32k", "max_tokens": 32768, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true } ] @@ -591,23 +594,32 @@ }, { "llm_name": "qwen3-vl-plus", - "tags": "LLM,CHAT,IMAGE2TEXT,256k", + "tags": "LLM,IMAGE2TEXT,256k", "max_tokens": 256000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "qwen3-vl-235b-a22b-instruct", - "tags": "LLM,CHAT,IMAGE2TEXT,128k", + "tags": "LLM,IMAGE2TEXT,128k", "max_tokens": 128000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "qwen3-vl-235b-a22b-thinking", - "tags": "LLM,CHAT,IMAGE2TEXT,128k", + "tags": "LLM,IMAGE2TEXT,128k", "max_tokens": 128000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -775,16 +787,22 @@ }, { "llm_name": "qwen-vl-max", - "tags": "LLM,CHAT,IMAGE2TEXT", + "tags": "LLM,IMAGE2TEXT", "max_tokens": 765, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": false }, { "llm_name": "qwen-vl-plus", - "tags": "LLM,CHAT,IMAGE2TEXT", + "tags": "LLM,IMAGE2TEXT", "max_tokens": 765, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": false }, { @@ -878,9 +896,12 @@ }, { "llm_name": "glm-4.5v", - "tags": "LLM,IMAGE2TEXT,64,", + "tags": "LLM,IMAGE2TEXT,64", "max_tokens": 64000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": false }, { @@ -948,9 +969,12 @@ }, { "llm_name": "glm-4v", - "tags": "LLM,CHAT,IMAGE2TEXT", + "tags": "LLM,IMAGE2TEXT", "max_tokens": 2000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -1106,21 +1130,30 @@ "llm_name": "moonshot-v1-8k-vision-preview", "tags": "LLM,IMAGE2TEXT,8k", "max_tokens": 8192, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "moonshot-v1-32k-vision-preview", "tags": "LLM,IMAGE2TEXT,32k", "max_tokens": 32768, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "moonshot-v1-128k-vision-preview", "tags": "LLM,IMAGE2TEXT,128k", "max_tokens": 131072, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -1419,9 +1452,12 @@ }, { "llm_name": "pixtral-large-latest", - "tags": "LLM,CHAT,IMAGE2TEXT,131k", + "tags": "LLM,IMAGE2TEXT,131k", "max_tokens": 131000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -1461,13 +1497,19 @@ "llm_name": "pixtral-12b-2409", "tags": "LLM,IMAGE2TEXT,131k", "max_tokens": 131000, - "model_type": "image2text" + "model_type": [ + "image2text", + "chat" + ] }, { "llm_name": "mistral-ocr-latest", "tags": "LLM,IMAGE2TEXT,131k", "max_tokens": 131000, - "model_type": "image2text" + "model_type": [ + "image2text", + "chat" + ] }, { "llm_name": "open-mistral-nemo", @@ -1492,16 +1534,22 @@ "llm": [ { "llm_name": "gpt-4o-mini", - "tags": "LLM,CHAT,128K", + "tags": "LLM,128K", "max_tokens": 128000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "gpt-4o", - "tags": "LLM,CHAT,128K", + "tags": "LLM,128K", "max_tokens": 128000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -1562,9 +1610,12 @@ }, { "llm_name": "gpt-4-vision-preview", - "tags": "LLM,CHAT,IMAGE2TEXT", + "tags": "LLM,IMAGE2TEXT", "max_tokens": 765, - "model_type": "image2text" + "model_type": [ + "image2text", + "chat" + ] } ] }, @@ -1584,44 +1635,62 @@ "llm": [ { "llm_name": "gemini-3-pro-preview", - "tags": "LLM,CHAT,1M,IMAGE2TEXT", + "tags": "LLM,1M,IMAGE2TEXT", "max_tokens": 1048576, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "gemini-2.5-flash", - "tags": "LLM,CHAT,1024K,IMAGE2TEXT", + "tags": "LLM,1024K,IMAGE2TEXT", "max_tokens": 1048576, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "gemini-2.5-pro", - "tags": "LLM,CHAT,IMAGE2TEXT,1024K", + "tags": "LLM,IMAGE2TEXT,1024K", "max_tokens": 1048576, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "gemini-2.5-flash-lite", - "tags": "LLM,CHAT,1024K,IMAGE2TEXT", + "tags": "LLM,1024K,IMAGE2TEXT", "max_tokens": 1048576, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "gemini-2.0-flash", - "tags": "LLM,CHAT,1024K", + "tags": "LLM,1024K", "max_tokens": 1048576, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "gemini-2.0-flash-lite", - "tags": "LLM,CHAT,1024K", + "tags": "LLM,1024K", "max_tokens": 1048576, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -1708,9 +1777,12 @@ "llm": [ { "llm_name": "step-3", - "tags": "LLM,CHAT,IMAGE2TEXT,64k", + "tags": "LLM,IMAGE2TEXT,64k", "max_tokens": 65536, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -1750,37 +1822,52 @@ }, { "llm_name": "step-r1-v-mini", - "tags": "LLM,CHAT,IMAGE2TEXT,100k", + "tags": "LLM,IMAGE2TEXT,100k", "max_tokens": 102400, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "step-1v-8k", - "tags": "LLM,CHAT,IMAGE2TEXT,8k", + "tags": "LLM,IMAGE2TEXT,8k", "max_tokens": 8192, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "step-1v-32k", - "tags": "LLM,CHAT,IMAGE2TEXT,32k", + "tags": "LLM,IMAGE2TEXT,32k", "max_tokens": 32768, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "step-1o-vision-32k", - "tags": "LLM,CHAT,IMAGE2TEXT,32k", + "tags": "LLM,IMAGE2TEXT,32k", "max_tokens": 32768, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "step-1o-turbo-vision", - "tags": "LLM,CHAT,IMAGE2TEXT,32k", + "tags": "LLM,IMAGE2TEXT,32k", "max_tokens": 32768, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -2488,61 +2575,91 @@ "llm_name": "adept/fuyu-8b", "tags": "IMAGE2TEXT,1K", "max_tokens": 1024, - "model_type": "image2text" + "model_type": [ + "image2text", + "chat" + ] }, { "llm_name": "google/deplot", "tags": "IMAGE2TEXT,8K", "max_tokens": 8192, - "model_type": "image2text" + "model_type": [ + "image2text", + "chat" + ] }, { "llm_name": "google/paligemma", "tags": "IMAGE2TEXT,256K", "max_tokens": 256000, - "model_type": "image2text" + "model_type": [ + "image2text", + "chat" + ] }, { "llm_name": "meta/llama-3.2-11b-vision-instruct", "tags": "IMAGE2TEXT,128K", "max_tokens": 131072, - "model_type": "image2text" + "model_type": [ + "image2text", + "chat" + ] }, { "llm_name": "meta/llama-3.2-90b-vision-instruct", "tags": "IMAGE2TEXT,128K", "max_tokens": 131072, - "model_type": "image2text" + "model_type": [ + "image2text", + "chat" + ] }, { "llm_name": "microsoft/florence-2", "tags": "IMAGE2TEXT,1K", "max_tokens": 1024, - "model_type": "image2text" + "model_type": [ + "image2text", + "chat" + ] }, { "llm_name": "microsoft/kosmos-2", "tags": "IMAGE2TEXT,4K", "max_tokens": 4096, - "model_type": "image2text" + "model_type": [ + "image2text", + "chat" + ] }, { "llm_name": "microsoft/phi-3-vision-128k-instruct", "tags": "IMAGE2TEXT,128K", "max_tokens": 131072, - "model_type": "image2text" + "model_type": [ + "image2text", + "chat" + ] }, { "llm_name": "microsoft/phi-3.5-vision-instruct", "tags": "IMAGE2TEXT,128K", "max_tokens": 131072, - "model_type": "image2text" + "model_type": [ + "image2text", + "chat" + ] }, { "llm_name": "nvidia/neva-22b", "tags": "IMAGE2TEXT,1K", "max_tokens": 1024, - "model_type": "image2text" + "model_type": [ + "image2text", + "chat" + ] } ] }, @@ -2851,317 +2968,33 @@ { "name": "SILICONFLOW", "logo": "", - "tags": "LLM,TEXT EMBEDDING,TEXT RE-RANK,IMAGE2TEXT", + "tags": "LLM,TEXT EMBEDDING,TEXT RE-RANK,IMAGE2TEXT,TTS,SPEECH2TEXT", "status": "1", "rank": "986", "url": "https://api.siliconflow.cn/v1", "llm": [ { - "llm_name": "Qwen/Qwen3-Embedding-8B", - "tags": "TEXT EMBEDDING,TEXT RE-RANK,32k", - "max_tokens": 32000, - "model_type": "embedding", - "is_tools": false - }, - { - "llm_name": "Qwen/Qwen3-Embedding-4B", - "tags": "TEXT EMBEDDING,TEXT RE-RANK,32k", - "max_tokens": 32000, - "model_type": "embedding", - "is_tools": false - }, - { - "llm_name": "Qwen/Qwen3-Embedding-0.6B", - "tags": "TEXT EMBEDDING,TEXT RE-RANK,32k", - "max_tokens": 32000, - "model_type": "embedding", - "is_tools": false - }, - { - "llm_name": "Qwen/Qwen3-235B-A22B", - "tags": "LLM,CHAT,128k", - "max_tokens": 128000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Qwen/Qwen3-30B-A3B", - "tags": "LLM,CHAT,128k", - "max_tokens": 128000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Qwen/Qwen3-32B", - "tags": "LLM,CHAT,128k", - "max_tokens": 128000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Qwen/Qwen3-14B", - "tags": "LLM,CHAT,128k", - "max_tokens": 128000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Qwen/Qwen3-8B", - "tags": "LLM,CHAT,64k", - "max_tokens": 64000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Pro/deepseek-ai/DeepSeek-R1", - "tags": "LLM,CHAT,64k", - "max_tokens": 64000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "deepseek-ai/DeepSeek-R1", - "tags": "LLM,CHAT,64k", - "max_tokens": 64000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Pro/deepseek-ai/DeepSeek-V3", - "tags": "LLM,CHAT,64k", - "max_tokens": 64000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "deepseek-ai/DeepSeek-V3", - "tags": "LLM,CHAT,64k", - "max_tokens": 64000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Pro/deepseek-ai/DeepSeek-V3.1", - "tags": "LLM,CHAT,160k", - "max_tokens": 160000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Pro/deepseek-ai/DeepSeek-V4-Pro", + "llm_name": "deepseek-ai/DeepSeek-V4-Pro", "tags": "LLM,CHAT,1M", "max_tokens": 1000000, "model_type": "chat", "is_tools": true }, { - "llm_name": "Pro/deepseek-ai/DeepSeek-V4-Flash", + "llm_name": "deepseek-ai/DeepSeek-V4-Flash", "tags": "LLM,CHAT,1M", "max_tokens": 1000000, "model_type": "chat", "is_tools": true }, - { - "llm_name": "deepseek-ai/DeepSeek-V3.1", - "tags": "LLM,CHAT,160", - "max_tokens": 160000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", - "tags": "LLM,CHAT,32k", - "max_tokens": 32000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B", - "tags": "LLM,CHAT,32k", - "max_tokens": 32000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "deepseek-ai/DeepSeek-V2.5", - "tags": "LLM,CHAT,32k", - "max_tokens": 32000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Qwen/QwQ-32B", - "tags": "LLM,CHAT,32k", - "max_tokens": 32000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "THUDM/GLM-Z1-32B-0414", - "tags": "LLM,CHAT,32k", - "max_tokens": 32000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "THUDM/GLM-4-32B-0414", - "tags": "LLM,CHAT,32k", - "max_tokens": 32000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "THUDM/GLM-Z1-9B-0414", - "tags": "LLM,CHAT,32k", - "max_tokens": 32000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "THUDM/GLM-4-9B-0414", - "tags": "LLM,CHAT,32k", - "max_tokens": 32000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Pro/THUDM/glm-4-9b-chat", - "tags": "LLM,CHAT,128k", - "max_tokens": 128000, - "model_type": "chat", - "is_tools": false - }, - { - "llm_name": "THUDM/GLM-Z1-Rumination-32B-0414", - "tags": "LLM,CHAT,32k", - "max_tokens": 32000, - "model_type": "chat", - "is_tools": false - }, - { - "llm_name": "THUDM/glm-4-9b-chat", - "tags": "LLM,CHAT,128k", - "max_tokens": 128000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Qwen/Qwen2.5-72B-Instruct-128Kt", - "tags": "LLM,IMAGE2TEXT,128k", - "max_tokens": 128000, - "model_type": "image2text", - "is_tools": false - }, - { - "llm_name": "deepseek-ai/deepseek-vl2", - "tags": "LLM,IMAGE2TEXT,4k", - "max_tokens": 4096, - "model_type": "image2text", - "is_tools": false - }, - { - "llm_name": "Qwen/Qwen2.5-72B-Instruct", - "tags": "LLM,CHAT,32k", - "max_tokens": 32000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Qwen/Qwen2.5-32B-Instruct", - "tags": "LLM,CHAT,32k", - "max_tokens": 32000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Qwen/Qwen2.5-14B-Instruct", - "tags": "LLM,CHAT,32k", - "max_tokens": 32000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Qwen/Qwen2.5-7B-Instruct", - "tags": "LLM,CHAT,32k", - "max_tokens": 32000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Qwen/Qwen2.5-Coder-7B-Instruct", - "tags": "LLM,CHAT,32k", - "max_tokens": 32000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "internlm/internlm2_5-7b-chat", - "tags": "LLM,CHAT,32k", - "max_tokens": 32000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Qwen/Qwen2-7B-Instruct", - "tags": "LLM,CHAT,32k", - "max_tokens": 32000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Pro/Qwen/Qwen2.5-Coder-7B-Instruct", - "tags": "LLM,CHAT,32k", - "max_tokens": 32000, - "model_type": "chat", - "is_tools": false - }, - { - "llm_name": "Pro/Qwen/Qwen2.5-7B-Instruct", - "tags": "LLM,CHAT,32k", - "max_tokens": 32000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Pro/Qwen/Qwen2-7B-Instruct", - "tags": "LLM,CHAT,32k", - "max_tokens": 32000, - "model_type": "chat", - "is_tools": false - }, - { - "llm_name": "Pro/MiniMaxAI/MiniMax-M2.5", - "tags": "LLM,CHAT,197k", - "max_tokens": 197000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Pro/zai-org/GLM-5", - "tags": "LLM,CHAT,205k", - "max_tokens": 205000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Pro/moonshotai/Kimi-K2.5", - "tags": "LLM,CHAT,IMAGE2TEXT,262k", - "max_tokens": 262000, - "model_type": "chat", - "is_tools": true - }, { "llm_name": "Pro/moonshotai/Kimi-K2.6", - "tags": "LLM,CHAT,IMAGE2TEXT,262k", + "tags": "LLM,IMAGE2TEXT,CHAT,262k", "max_tokens": 262000, - "model_type": "chat", - "is_tools": true - }, - { - "llm_name": "Pro/zai-org/GLM-4.7", - "tags": "LLM,CHAT,205k", - "max_tokens": 205000, - "model_type": "chat", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -3171,6 +3004,30 @@ "model_type": "chat", "is_tools": true }, + { + "llm_name": "nex-agi/Nex-N2-Pro", + "tags": "LLM,CHAT,32k", + "max_tokens": 32000, + "model_type": [ + "image2text", + "chat" + ], + "is_tools": true + }, + { + "llm_name": "MiniMaxAI/MiniMax-M2.5", + "tags": "LLM,CHAT,197k", + "max_tokens": 197000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "Pro/MiniMaxAI/MiniMax-M2.5", + "tags": "LLM,CHAT,197k", + "max_tokens": 197000, + "model_type": "chat", + "is_tools": true + }, { "llm_name": "deepseek-ai/DeepSeek-V3.2", "tags": "LLM,CHAT,164k", @@ -3200,109 +3057,478 @@ "is_tools": true }, { - "llm_name": "Pro/MiniMaxAI/MiniMax-M2.1", - "tags": "LLM,CHAT,197k", - "max_tokens": 197000, + "llm_name": "Qwen/Qwen3.6-35B-A3B", + "tags": "LLM,CHAT,256k", + "max_tokens": 256000, + "model_type": [ + "image2text", + "chat" + ], + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen3.6-27B", + "tags": "LLM,CHAT,256k", + "max_tokens": 256000, + "model_type": [ + "image2text", + "chat" + ], + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen3.5-397B-A17B", + "tags": "LLM,CHAT,256k", + "max_tokens": 256000, + "model_type": [ + "image2text", + "chat" + ], + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen3.5-122B-A10B", + "tags": "LLM,CHAT,256k", + "max_tokens": 256000, + "model_type": [ + "image2text", + "chat" + ], + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen3.5-35B-A3B", + "tags": "LLM,CHAT,256k", + "max_tokens": 256000, + "model_type": [ + "image2text", + "chat" + ], + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen3.5-27B", + "tags": "LLM,CHAT,256k", + "max_tokens": 256000, + "model_type": [ + "image2text", + "chat" + ], + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen3.5-9B", + "tags": "LLM,CHAT,256k", + "max_tokens": 256000, + "model_type": [ + "image2text", + "chat" + ], + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen3.5-4B", + "tags": "LLM,CHAT,256k", + "max_tokens": 256000, + "model_type": [ + "image2text", + "chat" + ], + "is_tools": true + }, + { + "llm_name": "deepseek-ai/DeepSeek-R1", + "tags": "LLM,CHAT,160k", + "max_tokens": 160000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "Pro/deepseek-ai/DeepSeek-R1", + "tags": "LLM,CHAT,160k", + "max_tokens": 160000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "deepseek-ai/DeepSeek-V3", + "tags": "LLM,CHAT,160k", + "max_tokens": 160000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "Pro/deepseek-ai/DeepSeek-V3", + "tags": "LLM,CHAT,160k", + "max_tokens": 160000, "model_type": "chat", "is_tools": true }, { "llm_name": "stepfun-ai/Step-3.5-Flash", - "tags": "LLM,CHAT,262k", - "max_tokens": 262000, + "tags": "LLM,CHAT,256k", + "max_tokens": 256000, "model_type": "chat", "is_tools": true }, { - "llm_name": "zai-org/GLM-4.6V", - "tags": "LLM,CHAT,131k", - "max_tokens": 131000, + "llm_name": "Qwen/Qwen3-VL-32B-Instruct", + "tags": "LLM,IMAGE2TEXT,CHAT,256k", + "max_tokens": 256000, + "model_type": [ + "image2text", + "chat" + ], + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen3-VL-32B-Thinking", + "tags": "LLM,IMAGE2TEXT,CHAT,256k", + "max_tokens": 256000, + "model_type": [ + "image2text", + "chat" + ], + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen3-VL-8B-Instruct", + "tags": "LLM,IMAGE2TEXT,CHAT,256k", + "max_tokens": 256000, + "model_type": [ + "image2text", + "chat" + ], + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen3-VL-8B-Thinking", + "tags": "LLM,IMAGE2TEXT,CHAT,256k", + "max_tokens": 256000, + "model_type": [ + "image2text", + "chat" + ], + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen3-VL-30B-A3B-Instruct", + "tags": "LLM,IMAGE2TEXT,CHAT,256k", + "max_tokens": 256000, + "model_type": [ + "image2text", + "chat" + ], + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen3-VL-30B-A3B-Thinking", + "tags": "LLM,IMAGE2TEXT,CHAT,256k", + "max_tokens": 256000, + "model_type": [ + "image2text", + "chat" + ], + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen3-Omni-30B-A3B-Instruct", + "tags": "LLM,IMAGE2TEXT,CHAT,256k", + "max_tokens": 256000, + "model_type": [ + "image2text", + "chat" + ], + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen3-Omni-30B-A3B-Thinking", + "tags": "LLM,IMAGE2TEXT,CHAT,64k", + "max_tokens": 64000, + "model_type": [ + "image2text", + "chat" + ], + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen3-Omni-30B-A3B-Captioner", + "tags": "LLM,IMAGE2TEXT,CHAT,64k", + "max_tokens": 64000, + "model_type": [ + "image2text", + "chat" + ], + "is_tools": true + }, + { + "llm_name": "inclusionAI/Ling-flash-2.0", + "tags": "LLM,CHAT,128k", + "max_tokens": 128000, "model_type": "chat", "is_tools": true }, { - "llm_name": "moonshotai/Kimi-K2-Thinking", - "tags": "LLM,CHAT,262k", - "max_tokens": 262000, + "llm_name": "inclusionAI/Ling-mini-2.0", + "tags": "LLM,CHAT,128k", + "max_tokens": 128000, "model_type": "chat", "is_tools": true }, { - "llm_name": "Pro/moonshotai/Kimi-K2-Thinking", - "tags": "LLM,CHAT,262k", - "max_tokens": 262000, + "llm_name": "tencent/Hunyuan-MT-7B", + "tags": "LLM,CHAT,32k", + "max_tokens": 32000, + "model_type": "chat", + "is_tools": false + }, + { + "llm_name": "ByteDance-Seed/Seed-OSS-36B-Instruct", + "tags": "LLM,CHAT,256k", + "max_tokens": 256000, "model_type": "chat", "is_tools": true }, { - "llm_name": "zai-org/GLM-4.6", - "tags": "LLM,CHAT,131k", - "max_tokens": 131000, + "llm_name": "zai-org/GLM-4.5V", + "tags": "LLM,IMAGE2TEXT,CHAT,64k", + "max_tokens": 64000, + "model_type": [ + "image2text", + "chat" + ], + "is_tools": true + }, + { + "llm_name": "zai-org/GLM-4.5-Air", + "tags": "LLM,CHAT,128k", + "max_tokens": 128000, "model_type": "chat", "is_tools": true }, { - "llm_name": "Kwaipilot/KAT-Dev", - "tags": "LLM,CHAT,131k", - "max_tokens": 131000, + "llm_name": "Qwen/Qwen3-Coder-30B-A3B-Instruct", + "tags": "LLM,CHAT,256k", + "max_tokens": 256000, "model_type": "chat", "is_tools": true }, + { + "llm_name": "Qwen/Qwen3-30B-A3B-Instruct-2507", + "tags": "LLM,CHAT,256k", + "max_tokens": 256000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "tencent/Hunyuan-A13B-Instruct", + "tags": "LLM,CHAT,128k", + "max_tokens": 128000, + "model_type": "chat", + "is_tools": false + }, + { + "llm_name": "deepseek-ai/DeepSeek-R1-0528-Qwen3-8B", + "tags": "LLM,CHAT,128k", + "max_tokens": 128000, + "model_type": "chat", + "is_tools": false + }, + { + "llm_name": "Qwen/Qwen3-32B", + "tags": "LLM,CHAT,128k", + "max_tokens": 128000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen3-14B", + "tags": "LLM,CHAT,128k", + "max_tokens": 128000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen3-8B", + "tags": "LLM,CHAT,128k", + "max_tokens": 128000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "THUDM/GLM-4-32B-0414", + "tags": "LLM,CHAT,32k", + "max_tokens": 32000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "THUDM/GLM-Z1-9B-0414", + "tags": "LLM,CHAT,128k", + "max_tokens": 128000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "THUDM/GLM-4-9B-0414", + "tags": "LLM,CHAT,32k", + "max_tokens": 32000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen2.5-72B-Instruct-128K", + "tags": "LLM,CHAT,128k", + "max_tokens": 128000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen2.5-72B-Instruct", + "tags": "LLM,CHAT,32k", + "max_tokens": 32000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen2.5-32B-Instruct", + "tags": "LLM,CHAT,32k", + "max_tokens": 32000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen2.5-14B-Instruct", + "tags": "LLM,CHAT,32k", + "max_tokens": 32000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen2.5-7B-Instruct", + "tags": "LLM,CHAT,32k", + "max_tokens": 32000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "Pro/Qwen/Qwen2.5-7B-Instruct", + "tags": "LLM,CHAT,32k", + "max_tokens": 32000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "Qwen/Qwen3-VL-Embedding-8B", + "tags": "TEXT EMBEDDING,32k", + "max_tokens": 32000, + "model_type": "embedding", + "is_tools": false + }, + { + "llm_name": "Qwen/Qwen3-Embedding-8B", + "tags": "TEXT EMBEDDING,32k", + "max_tokens": 32000, + "model_type": "embedding", + "is_tools": false + }, + { + "llm_name": "Qwen/Qwen3-Embedding-4B", + "tags": "TEXT EMBEDDING,32k", + "max_tokens": 32000, + "model_type": "embedding", + "is_tools": false + }, + { + "llm_name": "Qwen/Qwen3-Embedding-0.6B", + "tags": "TEXT EMBEDDING,32k", + "max_tokens": 32000, + "model_type": "embedding", + "is_tools": false + }, { "llm_name": "BAAI/bge-m3", - "tags": "LLM,EMBEDDING,8k", + "tags": "TEXT EMBEDDING,8k", "max_tokens": 8192, "model_type": "embedding", "is_tools": false }, - { - "llm_name": "BAAI/bge-reranker-v2-m3", - "tags": "LLM,RE-RANK,8k", - "max_tokens": 8192, - "model_type": "rerank", - "is_tools": false - }, - { - "llm_name": "Pro/BAAI/bge-m3", - "tags": "LLM,EMBEDDING,8k", - "max_tokens": 8192, - "model_type": "embedding", - "is_tools": false - }, - { - "llm_name": "Pro/BAAI/bge-reranker-v2-m3", - "tags": "LLM,RE-RANK,8k", - "max_tokens": 8192, - "model_type": "rerank", - "is_tools": false - }, - { - "llm_name": "BAAI/bge-large-zh-v1.5", - "tags": "LLM,EMBEDDING,0.5k", - "max_tokens": 512, - "model_type": "embedding", - "is_tools": false - }, { "llm_name": "BAAI/bge-large-en-v1.5", - "tags": "LLM,EMBEDDING,0.5k", + "tags": "TEXT EMBEDDING,512", "max_tokens": 512, "model_type": "embedding", "is_tools": false }, { - "llm_name": "netease-youdao/bce-embedding-base_v1", - "tags": "LLM,EMBEDDING,0.5k", + "llm_name": "BAAI/bge-large-zh-v1.5", + "tags": "TEXT EMBEDDING,512", "max_tokens": 512, "model_type": "embedding", "is_tools": false }, { - "llm_name": "netease-youdao/bce-reranker-base_v1", - "tags": "LLM,RE-RANK,0.5k", - "max_tokens": 512, + "llm_name": "Pro/BAAI/bge-m3", + "tags": "TEXT EMBEDDING,8k", + "max_tokens": 8192, + "model_type": "embedding", + "is_tools": false + }, + { + "llm_name": "Qwen/Qwen3-VL-Reranker-8B", + "tags": "TEXT RE-RANK,32k", + "max_tokens": 32000, "model_type": "rerank", "is_tools": false + }, + { + "llm_name": "Qwen/Qwen3-Reranker-8B", + "tags": "TEXT RE-RANK,32k", + "max_tokens": 32000, + "model_type": "rerank", + "is_tools": false + }, + { + "llm_name": "Qwen/Qwen3-Reranker-4B", + "tags": "TEXT RE-RANK,32k", + "max_tokens": 32000, + "model_type": "rerank", + "is_tools": false + }, + { + "llm_name": "Qwen/Qwen3-Reranker-0.6B", + "tags": "TEXT RE-RANK,32k", + "max_tokens": 32000, + "model_type": "rerank", + "is_tools": false + }, + { + "llm_name": "BAAI/bge-reranker-v2-m3", + "tags": "TEXT RE-RANK,8k", + "max_tokens": 8192, + "model_type": "rerank", + "is_tools": false + }, + { + "llm_name": "Pro/BAAI/bge-reranker-v2-m3", + "tags": "TEXT RE-RANK,8k", + "max_tokens": 8192, + "model_type": "rerank", + "is_tools": false + }, + { + "llm_name": "fnlp/MOSS-TTSD-v0.5", + "tags": "TTS", + "max_tokens": 26214400, + "model_type": "tts", + "is_tools": false + }, + { + "llm_name": "FunAudioLLM/CosyVoice2-0.5B", + "tags": "TTS", + "max_tokens": 26214400, + "model_type": "tts", + "is_tools": false } ] }, @@ -3909,7 +4135,10 @@ "llm_name": "hunyuan-vision", "tags": "LLM,IMAGE2TEXT,8k", "max_tokens": 8192, - "model_type": "image2text" + "model_type": [ + "image2text", + "chat" + ] } ] }, @@ -3925,7 +4154,10 @@ "max_tokens": 8192, "model_type": "chat", "is_tools": true, - "features": ["is_tools", "thinking"] + "features": [ + "is_tools", + "thinking" + ] }, { "llm_name": "Spark-Max-32K", @@ -3933,7 +4165,10 @@ "max_tokens": 32768, "model_type": "chat", "is_tools": true, - "features": ["is_tools", "thinking"] + "features": [ + "is_tools", + "thinking" + ] }, { "llm_name": "Spark-Lite", @@ -3941,7 +4176,10 @@ "max_tokens": 8192, "model_type": "chat", "is_tools": true, - "features": ["is_tools", "thinking"] + "features": [ + "is_tools", + "thinking" + ] }, { "llm_name": "Spark-Pro", @@ -3949,7 +4187,10 @@ "max_tokens": 8192, "model_type": "chat", "is_tools": true, - "features": ["is_tools", "thinking"] + "features": [ + "is_tools", + "thinking" + ] }, { "llm_name": "Spark-Pro-128K", @@ -3957,7 +4198,10 @@ "max_tokens": 131072, "model_type": "chat", "is_tools": true, - "features": ["is_tools", "thinking"] + "features": [ + "is_tools", + "thinking" + ] }, { "llm_name": "Spark-4.0-Ultra", @@ -3965,7 +4209,10 @@ "max_tokens": 131072, "model_type": "chat", "is_tools": true, - "features": ["is_tools", "thinking"] + "features": [ + "is_tools", + "thinking" + ] } ] }, @@ -4423,63 +4670,90 @@ "llm_name": "ERNIE-4.5-Turbo-VL", "tags": "LLM,IMAGE2TEXT", "max_tokens": 4096, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": false }, { "llm_name": "Qwen2.5-VL-32B-Instruct", "tags": "LLM,IMAGE2TEXT", "max_tokens": 32768, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "Qwen2-VL-72B", "tags": "LLM,IMAGE2TEXT", "max_tokens": 4096, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": false }, { "llm_name": "Align-DS-V", "tags": "LLM,IMAGE2TEXT", "max_tokens": 4096, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": false }, { "llm_name": "InternVL3-78B", "tags": "LLM,IMAGE2TEXT", "max_tokens": 32768, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": false }, { "llm_name": "InternVL3-38B", "tags": "LLM,IMAGE2TEXT", "max_tokens": 32768, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": false }, { "llm_name": "InternVL2.5-78B", "tags": "LLM,IMAGE2TEXT", "max_tokens": 32768, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": false }, { "llm_name": "InternVL2.5-26B", "tags": "LLM,IMAGE2TEXT", "max_tokens": 16384, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": false }, { "llm_name": "InternVL2-8B", "tags": "LLM,IMAGE2TEXT", "max_tokens": 8192, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": false }, { @@ -5003,9 +5277,12 @@ }, { "llm_name": "gemini-2.0-flash", - "tags": "LLM,CHAT", + "tags": "LLM", "max_tokens": 1000000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -5101,16 +5378,22 @@ }, { "llm_name": "claude-opus-4-20250514", - "tags": "LLM,CHAT", + "tags": "LLM", "max_tokens": 200000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "gemini-2.5-pro", - "tags": "LLM,CHAT", + "tags": "LLM", "max_tokens": 1000000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -5214,30 +5497,42 @@ }, { "llm_name": "claude-opus-4-1-20250805", - "tags": "LLM,CHAT,200k,IMAGE2TEXT", + "tags": "LLM,200k,IMAGE2TEXT", "max_tokens": 200000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "claude-opus-4-1-20250805-thinking", - "tags": "LLM,CHAT,200k,IMAGE2TEXT", + "tags": "LLM,200k,IMAGE2TEXT", "max_tokens": 200000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "claude-sonnet-4-20250514", - "tags": "LLM,CHAT,200k,IMAGE2TEXT", + "tags": "LLM,200k,IMAGE2TEXT", "max_tokens": 200000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "claude-sonnet-4-20250514-thinking", - "tags": "LLM,CHAT,200k,IMAGE2TEXT", + "tags": "LLM,200k,IMAGE2TEXT", "max_tokens": 200000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -5256,30 +5551,42 @@ }, { "llm_name": "gemini-2.5-pro", - "tags": "LLM,CHAT,1M,IMAGE2TEXT", + "tags": "LLM,1M,IMAGE2TEXT", "max_tokens": 1000000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "gemini-2.5-flash", - "tags": "LLM,CHAT,1M,IMAGE2TEXT", + "tags": "LLM,1M,IMAGE2TEXT", "max_tokens": 1000000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "gemini-2.5-flash-lite", - "tags": "LLM,CHAT,1M,IMAGE2TEXT", + "tags": "LLM,1M,IMAGE2TEXT", "max_tokens": 1000000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "gemini-2.0-flash", - "tags": "LLM,CHAT,1M,IMAGE2TEXT", + "tags": "LLM,1M,IMAGE2TEXT", "max_tokens": 1000000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -5305,9 +5612,12 @@ }, { "llm_name": "grok-2-image-1212", - "tags": "LLM,CHAT,32k,IMAGE2TEXT", + "tags": "LLM,32k,IMAGE2TEXT", "max_tokens": 32768, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -5504,30 +5814,42 @@ }, { "llm_name": "claude-opus-4-1-20250805", - "tags": "LLM,CHAT,200k,IMAGE2TEXT", + "tags": "LLM,200k,IMAGE2TEXT", "max_tokens": 200000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "claude-opus-4-1-20250805-thinking", - "tags": "LLM,CHAT,200k,IMAGE2TEXT", + "tags": "LLM,200k,IMAGE2TEXT", "max_tokens": 200000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "claude-sonnet-4-20250514", - "tags": "LLM,CHAT,200k,IMAGE2TEXT", + "tags": "LLM,200k,IMAGE2TEXT", "max_tokens": 200000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "claude-sonnet-4-20250514-thinking", - "tags": "LLM,CHAT,200k,IMAGE2TEXT", + "tags": "LLM,200k,IMAGE2TEXT", "max_tokens": 200000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -5546,30 +5868,42 @@ }, { "llm_name": "gemini-2.5-pro", - "tags": "LLM,CHAT,1M,IMAGE2TEXT", + "tags": "LLM,1M,IMAGE2TEXT", "max_tokens": 1000000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "gemini-2.5-flash", - "tags": "LLM,CHAT,1M,IMAGE2TEXT", + "tags": "LLM,1M,IMAGE2TEXT", "max_tokens": 1000000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "gemini-2.5-flash-lite", - "tags": "LLM,CHAT,1M,IMAGE2TEXT", + "tags": "LLM,1M,IMAGE2TEXT", "max_tokens": 1000000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "gemini-2.0-flash", - "tags": "LLM,CHAT,1M,IMAGE2TEXT", + "tags": "LLM,1M,IMAGE2TEXT", "max_tokens": 1000000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -5595,9 +5929,12 @@ }, { "llm_name": "grok-2-image-1212", - "tags": "LLM,CHAT,32k,IMAGE2TEXT", + "tags": "LLM,32k,IMAGE2TEXT", "max_tokens": 32768, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -5750,9 +6087,12 @@ }, { "llm_name": "claude-haiku-4-5-20251001", - "tags": "LLM,CHAT,20K,IMAGE2TEXT", + "tags": "LLM,20K,IMAGE2TEXT", "max_tokens": 20000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -5778,9 +6118,12 @@ }, { "llm_name": "claude-sonnet-4-5-20250929", - "tags": "LLM,CHAT,200K,IMAGE2TEXT", + "tags": "LLM,200K,IMAGE2TEXT", "max_tokens": 200000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -5855,9 +6198,12 @@ }, { "llm_name": "gemini-2.5-flash-lite-preview-09-2025", - "tags": "LLM,CHAT,1M,IMAGE2TEXT", + "tags": "LLM,1M,IMAGE2TEXT", "max_tokens": 1048576, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -5946,9 +6292,12 @@ }, { "llm_name": "gpt-5-codex", - "tags": "LLM,CHAT,400K,IMAGE2TEXT", + "tags": "LLM,400K,IMAGE2TEXT", "max_tokens": 400000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -5967,9 +6316,12 @@ }, { "llm_name": "gpt-5-pro", - "tags": "LLM,CHAT,400K,IMAGE2TEXT", + "tags": "LLM,400K,IMAGE2TEXT", "max_tokens": 400000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -6016,16 +6368,22 @@ }, { "llm_name": "grok-4-fast-non-reasoning", - "tags": "LLM,CHAT,2M,IMAGE2TEXT", + "tags": "LLM,2M,IMAGE2TEXT", "max_tokens": 2000000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { "llm_name": "grok-4-fast-reasoning", - "tags": "LLM,CHAT,2M,IMAGE2TEXT", + "tags": "LLM,2M,IMAGE2TEXT", "max_tokens": 2000000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, { @@ -6598,9 +6956,12 @@ }, { "llm_name": "gpt-4o", - "tags": "IMAGE2TEXT,CHAT,128k", + "tags": "IMAGE2TEXT,128k", "max_tokens": 128000, - "model_type": "image2text", + "model_type": [ + "image2text", + "chat" + ], "is_tools": true }, {