{"record":{"id":"682cb722e98e9199","repo":"invoke-ai/InvokeAI","slug":"encoder-encoder-config-name-is-not-a-qwen3-vl","errorCode":null,"errorMessage":"Encoder '{encoder_config.name}' is not a Qwen3-VL encoder compatible with Krea-2.","messagePattern":"Encoder '(.+?)' is not a Qwen3-VL encoder compatible with Krea-2\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"invokeai/app/invocations/krea2_model_loader.py","lineNumber":104,"sourceCode":"        if self.vae_model is not None:\n            vae_config = context.models.get_config(self.vae_model)\n            if vae_config.type is not ModelType.VAE or vae_config.base not in (\n                BaseModelType.QwenImage,\n                BaseModelType.Anima,\n            ):\n                raise ValueError(\n                    f\"VAE '{vae_config.name}' is not compatible with Krea-2. Select a Qwen Image or Anima VAE.\"\n                )\n            vae = self.vae_model.model_copy(update={\"submodel_type\": SubModelType.VAE})\n        else:\n            self._validate_diffusers_format(context, self.model, \"Krea-2\")\n            vae = self.model.model_copy(update={\"submodel_type\": SubModelType.VAE})\n\n        # Determine Qwen3-VL Encoder source.\n        if self.qwen3_vl_encoder_model is not None:\n            encoder_config = context.models.get_config(self.qwen3_vl_encoder_model)\n            if encoder_config.type is not ModelType.Qwen3VLEncoder:\n                raise ValueError(f\"Encoder '{encoder_config.name}' is not a Qwen3-VL encoder compatible with Krea-2.\")\n            tokenizer = self.qwen3_vl_encoder_model.model_copy(update={\"submodel_type\": SubModelType.Tokenizer})\n            text_encoder = self.qwen3_vl_encoder_model.model_copy(update={\"submodel_type\": SubModelType.TextEncoder})\n        else:\n            self._validate_diffusers_format(context, self.model, \"Krea-2\")\n            tokenizer = self.model.model_copy(update={\"submodel_type\": SubModelType.Tokenizer})\n            text_encoder = self.model.model_copy(update={\"submodel_type\": SubModelType.TextEncoder})\n\n        return Krea2ModelLoaderOutput(\n            transformer=TransformerField(transformer=transformer, loras=[]),\n            qwen3_vl_encoder=Qwen3VLEncoderField(tokenizer=tokenizer, text_encoder=text_encoder, loras=[]),\n            vae=VAEField(vae=vae),\n        )\n\n    def _validate_diffusers_format(\n        self, context: InvocationContext, model: ModelIdentifierField, model_name: str\n    ) -> None:\n        \"\"\"Validate that a model is in Diffusers format (required to extract VAE / encoder submodels).\"\"\"\n        config = context.models.get_config(model)","sourceCodeStart":86,"sourceCodeEnd":122,"githubUrl":"https://github.com/invoke-ai/InvokeAI/blob/0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06/invokeai/app/invocations/krea2_model_loader.py#L86-L122","documentation":"Krea-2 conditions on a Qwen3-VL text encoder. If a standalone encoder model is provided to Krea2ModelLoader, its config type must be ModelType.Qwen3VLEncoder; anything else is rejected with this ValueError during invoke().","triggerScenarios":"Setting Krea2ModelLoader.qwen3_vl_encoder_model to a model record whose type is not ModelType.Qwen3VLEncoder (e.g. a generic Main model, CLIP/T5 encoder, or VAE record).","commonSituations":"Selecting a text encoder from another model family (CLIP, T5, Gemma) in the node dropdown; an encoder imported without the Qwen3VLEncoder type classification; copying a ModelIdentifierField from a non-Krea-2 workflow.","solutions":["Select a model whose type is Qwen3VLEncoder for the qwen3_vl_encoder_model field.","Leave qwen3_vl_encoder_model unset to extract the encoder from a Diffusers-format Krea-2 main model.","Re-import the encoder in the model manager so it is classified as a Qwen3VLEncoder model."],"exampleFix":"// before\nKrea2ModelLoader(model=krea2_main, qwen3_vl_encoder_model=t5_encoder_model)\n// after\nKrea2ModelLoader(model=krea2_main, qwen3_vl_encoder_model=qwen3_vl_encoder)  # type=Qwen3VLEncoder","handlingStrategy":"validation","validationCode":"if encoder_field is not None:\n    cfg = context.models.get_config(encoder_field)\n    if cfg.type is not ModelType.Qwen3VLEncoder:\n        raise ValueError(f\"{cfg.name} is not a Qwen3-VL encoder\")","typeGuard":"from invokeai.backend.model_manager.config import ModelType\n\ndef is_qwen3vl_encoder(cfg) -> bool:\n    return cfg.type is ModelType.Qwen3VLEncoder","tryCatchPattern":"try:\n    output = loader.invoke(context)\nexcept ValueError as e:\n    if \"Qwen3-VL encoder\" in str(e):\n        output = loader.model_copy(update={\"qwen3_vl_encoder_model\": None}).invoke(context)\n    else:\n        raise","preventionTips":["Only select models explicitly typed Qwen3VLEncoder","Leave qwen3_vl_encoder_model unset for Diffusers-format Krea-2 models","Don't reuse CLIP/T5/Gemma encoder identifiers from other workflows"],"tags":["invokeai","model-loading","text-encoder","model-type"],"backgroundTag":"incompatible-model-type","analyzedSha":"0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06","analyzedAt":"2026-08-29T04:46:49.967Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}