petter2025's picture
Upload folder using huggingface_hub
afa4de7 verified
raw
history blame
3.67 kB
"""
Seed RAG graph with historical healing action success rates.
Run once before starting the API server.
"""
import sys
import os
sys.path.append(os.path.dirname(__file__))
from app.core.deps import get_rag_graph
from agentic_reliability_framework.core.models.event import HealingAction
def seed_historical_data():
rag = get_rag_graph()
# Define seed incidents (each with an outcome)
seed_data = [
# restart_container successes
{"incident_id": "seed_restart_1", "component": "test", "action": HealingAction.RESTART_CONTAINER.value, "success": True, "resolution_time_minutes": 2},
{"incident_id": "seed_restart_2", "component": "test", "action": HealingAction.RESTART_CONTAINER.value, "success": True, "resolution_time_minutes": 3},
{"incident_id": "seed_restart_3", "component": "test", "action": HealingAction.RESTART_CONTAINER.value, "success": False, "resolution_time_minutes": 10},
# rollback successes
{"incident_id": "seed_rollback_1", "component": "test", "action": HealingAction.ROLLBACK.value, "success": True, "resolution_time_minutes": 1},
{"incident_id": "seed_rollback_2", "component": "test", "action": HealingAction.ROLLBACK.value, "success": True, "resolution_time_minutes": 2},
{"incident_id": "seed_rollback_3", "component": "test", "action": HealingAction.ROLLBACK.value, "success": False, "resolution_time_minutes": 5},
# scale_out successes
{"incident_id": "seed_scale_1", "component": "test", "action": HealingAction.SCALE_OUT.value, "success": True, "resolution_time_minutes": 5},
{"incident_id": "seed_scale_2", "component": "test", "action": HealingAction.SCALE_OUT.value, "success": False, "resolution_time_minutes": 15},
# circuit_breaker successes
{"incident_id": "seed_cb_1", "component": "test", "action": HealingAction.CIRCUIT_BREAKER.value, "success": True, "resolution_time_minutes": 1},
{"incident_id": "seed_cb_2", "component": "test", "action": HealingAction.CIRCUIT_BREAKER.value, "success": True, "resolution_time_minutes": 2},
# traffic_shift successes
{"incident_id": "seed_ts_1", "component": "test", "action": HealingAction.TRAFFIC_SHIFT.value, "success": True, "resolution_time_minutes": 4},
{"incident_id": "seed_ts_2", "component": "test", "action": HealingAction.TRAFFIC_SHIFT.value, "success": False, "resolution_time_minutes": 8},
]
# Add each outcome to the RAG graph
for item in seed_data:
# Create a dummy reliability event (simplified)
from agentic_reliability_framework.core.models.event import ReliabilityEvent
event = ReliabilityEvent(
component=item["component"],
latency_p99=500, # placeholder
error_rate=0.1,
service_mesh="default"
)
# Record the outcome
rag.record_outcome(
incident_id=item["incident_id"],
event=event,
action_taken=item["action"],
success=item["success"],
resolution_time_minutes=item["resolution_time_minutes"]
)
print(f"Seeded: {item['action']} -> success={item['success']}")
print(f"Seeded {len(seed_data)} historical outcomes.")
print(f"Stats per action:")
for action in HealingAction:
stats = rag.get_historical_effectiveness(action.value, component_filter="test")
print(f" {action.value}: uses={stats['total_uses']}, success_rate={stats['success_rate']:.2f}, avg_time={stats['avg_resolution_time_minutes']:.1f} min")
if __name__ == "__main__":
seed_historical_data()