Spaces:
Running
Running
| """ | |
| Model Service - Each model handles its own logic | |
| """ | |
| import models.registry as model_registry | |
| class ModelService: | |
| async def get_model_response(user_id: str, message: str, model_id: str, **kwargs) -> dict: | |
| try: | |
| model_cfg = model_registry.get(model_id) | |
| if "r1" in model_id.lower(): | |
| return await ModelService._handle_r1(user_id, message, model_cfg, **kwargs) | |
| elif "vision" in model_id.lower(): | |
| return await ModelService._handle_vision(user_id, message, model_cfg, **kwargs) | |
| else: | |
| return await ModelService._handle_default(user_id, message, model_cfg, **kwargs) | |
| except Exception as e: | |
| logging.error(f"[ModelService] Error for {model_id}: {e}") | |
| return { | |
| "response": "Model temporarily unavailable. Please try again.", | |
| "error": True, | |
| "model": model_id | |
| } | |
| async def _handle_r1(user_id, message, model_cfg, **kwargs): | |
| # R1 specific: Deep thinking + dataset examples | |
| return { | |
| "response": f"[R1 Deep Think] {message[:120]}...", | |
| "model": model_cfg["display_name"], | |
| "mode": "deep_think" | |
| } | |
| async def _handle_vision(user_id, message, model_cfg, **kwargs): | |
| # Vision specific logic | |
| return { | |
| "response": f"[Vision Analysis] {message[:100]}...", | |
| "model": model_cfg["display_name"], | |
| "mode": "vision" | |
| } | |
| async def _handle_default(user_id, message, model_cfg, **kwargs): | |
| return { | |
| "response": f"[Default] {message[:100]}...", | |
| "model": model_cfg["display_name"], | |
| "mode": "standard" | |
| } |