meetmendapara commited on
Commit
98cb9eb
·
verified ·
1 Parent(s): fec1b66

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +50 -3
main.py CHANGED
@@ -24,12 +24,28 @@ from pathlib import Path
24
  from typing import Any, Dict, List, Optional
25
 
26
  import numpy as np
27
- from artifact_validation import log_artifact_status, validate_required_artifacts
28
  from fastapi import BackgroundTasks, FastAPI, HTTPException, Query
29
  from fastapi.middleware.cors import CORSMiddleware
30
  from joblib import Logger
31
  from pydantic import BaseModel, Field
32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  try:
34
  from prometheus_client import (
35
  CONTENT_TYPE_LATEST,
@@ -86,8 +102,39 @@ from feedback import (
86
  )
87
  from lstm_model import LSTMDelayPredictor, LSTMTrainer
88
  from models import EnsemblePredictor
89
- from contextual_bandit import InterventionBandit
90
- from personality_behavior_fusion import PersonalityBehaviorFusionModel
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
  from similarity import (
92
  similar_task_recommender,
93
  task_clusterer,
 
24
  from typing import Any, Dict, List, Optional
25
 
26
  import numpy as np
 
27
  from fastapi import BackgroundTasks, FastAPI, HTTPException, Query
28
  from fastapi.middleware.cors import CORSMiddleware
29
  from joblib import Logger
30
  from pydantic import BaseModel, Field
31
 
32
+ try:
33
+ from artifact_validation import log_artifact_status, validate_required_artifacts
34
+ except ImportError:
35
+ def validate_required_artifacts(models_dir):
36
+ return {
37
+ "status": "fallback",
38
+ "models_dir": str(models_dir),
39
+ "present": [],
40
+ "missing": [],
41
+ "message": "Artifact validation module unavailable; skipping startup artifact checks.",
42
+ }
43
+
44
+ def log_artifact_status(status):
45
+ logging.getLogger(__name__).warning(
46
+ "Artifact validation unavailable: %s", status.get("message", "unknown")
47
+ )
48
+
49
  try:
50
  from prometheus_client import (
51
  CONTENT_TYPE_LATEST,
 
102
  )
103
  from lstm_model import LSTMDelayPredictor, LSTMTrainer
104
  from models import EnsemblePredictor
105
+ try:
106
+ from contextual_bandit import InterventionBandit
107
+ except ImportError:
108
+ class InterventionBandit:
109
+ def __init__(self, *args, **kwargs):
110
+ self.model_path = kwargs.get("model_path")
111
+
112
+ def select_action(self, *args, **kwargs):
113
+ return {
114
+ "event_id": None,
115
+ "action_id": "NO_NUDGE",
116
+ "scores": {},
117
+ "context": [],
118
+ "policy": "fallback",
119
+ }
120
+
121
+ def apply_feedback(self, event_id, reward):
122
+ return {"action_id": "NO_NUDGE", "reward": reward}
123
+
124
+
125
+ try:
126
+ from personality_behavior_fusion import PersonalityBehaviorFusionModel
127
+ except ImportError:
128
+ class PersonalityBehaviorFusionModel:
129
+ def __init__(self, *args, **kwargs):
130
+ pass
131
+
132
+ def predict_from_features(self, features, behavior_sequence=None):
133
+ return {
134
+ "completion_probability": 0.5,
135
+ "model_type": "fusion_fallback",
136
+ "sequence_length": 0 if behavior_sequence is None else len(behavior_sequence),
137
+ }
138
  from similarity import (
139
  similar_task_recommender,
140
  task_clusterer,