from models.blip_model import blip_answer from models.reasoning_model import reasoning_answer from models.gemini_vision import gemini_vision_answer from models.groq_vision import groq_vision_answer from models.blip_yolo_model import blip_yolo_answer from models.hf_boss_api import hf_boss_answer try: from deep_translator import GoogleTranslator except: GoogleTranslator = None def route_model(model_choice, image, question, lang="en"): # Translate inbound question for all models if lang != "en" and GoogleTranslator: try: question = GoogleTranslator(source='auto', target='en').translate(question) except: pass # Model Execution if model_choice == "local": cap, ans, exp = blip_answer(image, question, lang) elif model_choice == "local_yolo": cap, ans, exp = blip_yolo_answer(image, question, lang) elif model_choice == "gemini": cap, ans, exp = gemini_vision_answer(image, question, lang) elif model_choice == "groq": cap, ans, exp = groq_vision_answer(image, question, lang) elif model_choice == "hf_boss": cap, ans, exp = hf_boss_answer(image, question, lang) else: cap, ans, exp = "Unknown", "Invalid", "Invalid" # Translate outbound answer for local model (convert back to user's native language) if lang != "en" and GoogleTranslator and model_choice == "local": try: out_trans = GoogleTranslator(source='en', target=lang) cap = out_trans.translate(cap) ans = out_trans.translate(ans) exp = out_trans.translate(exp) except: pass return cap, ans, exp