self-trained2 / services /model_service.py
DeepImagix's picture
Upload 4 files
7a56a18 verified
Raw
History Blame Contribute Delete
1.85 kB
"""
Model Service - Each model handles its own logic
"""
import models.registry as model_registry
class ModelService:
@staticmethod
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
}
@staticmethod
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"
}
@staticmethod
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"
}
@staticmethod
async def _handle_default(user_id, message, model_cfg, **kwargs):
return {
"response": f"[Default] {message[:100]}...",
"model": model_cfg["display_name"],
"mode": "standard"
}