cisco / mindmeld

An Open Source Conversational AI Platform for Deep-Domain Voice Interfaces and Chatbots.
http://mindmeld.com
Apache License 2.0
674 stars 185 forks source link

Improve error messages for installing extra [bert] when using a QuestionAnswerer #348

Open murali1996 opened 3 years ago

murali1996 commented 3 years ago

When a user tries to create a QuestionAnswerer without installing the extra [bert], the error message raised is ValueError: Invalid model configuration: Unknown embedder type 'bert'. This message is misleading as the user's input config might be correct but the bert requirements are not installed. Following is the example snippet that produces the error even when inputs are correct but the requirements are not satisfied:

from mindmeld import QuestionAnswerer

QUESTION_ANSWERER_CONFIG = {
   "model_type": "elasticsearch", 
   "model_settings": {
       "query_type": "embedder_text",
       "embedder_type": "bert",
       "pretrained_name_or_abspath": "bert-base-cased", 
       "bert_output_type": "mean",
       "quantize_model": False, 
       "embedding_fields": {
           # ...
       }
   }
}

qa = QuestionAnswerer(app_path="./blueprints/hr_assistant", config=QUESTION_ANSWERER_CONFIG)

Possible solution(s):

murali1996 commented 3 years ago

@vijay120

vijay120 commented 3 years ago

Could we do something analogous to this:

        GoogleTranslator._check_credential_exists()
        try:
            translate_v2 = importlib.import_module("google.cloud.translate_v2")
            return translate_v2.Client()
        except ModuleNotFoundError as error:
            raise ModuleNotFoundError(
                "Library not found: 'google-cloud'. Run 'pip install mindmeld[language_annotator]'"
                " to install."
            ) from error
murali1996 commented 3 years ago

Yeah. I'll add a solution like you suggested in the create_embedder_model method in componenets/helpers.py by caching the ImportError from the embedder_models.py classes. Will reflect this modification in PR #341