{"record":{"id":"6bde3e867066116c","repo":"infiniflow/ragflow","slug":"model-model-name-cannot-be-used-as-model-type-v","errorCode":null,"errorMessage":"Model {model_name} cannot be used as {model_type_val} model.","messagePattern":"Model (.+?) cannot be used as (.+?) model\\.","errorType":"exception","errorClass":"LookupError","httpStatus":null,"severity":"error","filePath":"api/db/joint_services/tenant_model_service.py","lineNumber":294,"sourceCode":"            \"llm_name\": pure_model_name,\n            \"api_base\": embedding_cfg[\"base_url\"],\n            \"model_type\": LLMType.EMBEDDING.value,\n        }\n\n    provider_obj = TenantModelProviderService.get_by_tenant_id_and_provider_name(tenant_id, provider_name)\n    if not provider_obj:\n        raise LookupError(f\"Provider {provider_name} not found for model {model_name}.\")\n    instance_obj = _resolve_instance_for_model(provider_obj, instance_name, model_name)\n    model_obj = TenantModelService.get_by_provider_id_and_instance_id_and_model_type_and_model_name(provider_obj.id, instance_obj.id, model_type_val, pure_model_name)\n\n    api_key, is_tool, api_key_payload = _decode_api_key_config(instance_obj.api_key)\n    extra_fields = json.loads(instance_obj.extra) if instance_obj.extra else {}\n\n    if model_obj:\n        if model_obj.status == ActiveStatusEnum.INACTIVE.value:\n            raise LookupError(f\"Model {model_name} is disabled.\")\n        if model_obj.status == ActiveStatusEnum.UNSUPPORTED.value:\n            raise LookupError(f\"Model {model_name} cannot be used as {model_type_val} model.\")\n\n        model_extra = json.loads(model_obj.extra) if model_obj.extra else {}\n        llm_info = _lookup_factory_llm_info(provider_obj.provider_name, pure_model_name, extra_fields)\n        if \"max_tokens\" in model_extra:\n            max_tokens = model_extra[\"max_tokens\"]\n        else:\n            max_tokens = (llm_info or {}).get(\"max_tokens\", 8192)\n        model_config = {\n            \"llm_factory\": provider_obj.provider_name,\n            \"api_key\": api_key,\n            \"llm_name\": model_obj.model_name,\n            \"api_base\": extra_fields.get(\"base_url\", \"\"),\n            \"model_type\": model_type_val,\n            \"is_tools\": model_extra.get(\"is_tools\", is_tool),\n            \"max_tokens\": max_tokens,\n        }\n        if provider_name.lower() == \"somark\":\n            # SoMark/OCR factories read parser config (somark_*, parse_method, ...)","sourceCodeStart":276,"sourceCodeEnd":312,"githubUrl":"https://github.com/infiniflow/ragflow/blob/554fb1133ac3861732235ad9c377eb5e0a770665/api/db/joint_services/tenant_model_service.py#L276-L312","documentation":"Error \"Model {model_name} cannot be used as {model_type_val} model.\" thrown in infiniflow/ragflow.","triggerScenarios":"Thrown at api/db/joint_services/tenant_model_service.py:294 when the library encounters an invalid state.","commonSituations":"A model is requested for a purpose (e.g. embedding) that its configuration does not allow; matching model type to usage prevents this error.","solutions":["Use the model only for its declared model type.","Configure a model that supports the requested type."],"exampleFix":"# do not use a chat llm where an embedding model is required","handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"554fb1133ac3861732235ad9c377eb5e0a770665","analyzedAt":"2026-08-15T09:20:16.380Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}