cloud-ops-optimizer / models.py
hirann's picture
Upload folder using huggingface_hub
dc42cb3 verified
from pydantic import BaseModel, Field
from typing import List, Optional
class Resource(BaseModel):
id: str = Field(description="Unique resource identifier")
type: str = Field(description="Instance type (e.g., t3.small, m5.large)")
cpu_usage: float = Field(description="CPU usage percentage")
mem_usage: float = Field(description="Memory usage percentage")
monthly_cost: float = Field(description="Monthly cost in USD")
class Metrics(BaseModel):
avg_latency_ms: float = Field(description="Average latency in milliseconds")
error_rate: float = Field(description="Error rate (0-1)")
throughput_rps: float = Field(description="Requests per second")
class SLA(BaseModel):
max_latency_ms: float = Field(description="Maximum allowed latency")
max_budget: float = Field(description="Maximum monthly budget in USD")
min_uptime_pct: float = Field(description="Minimum uptime percentage")
class Observation(BaseModel):
inventory: List[Resource] = Field(description="List of active cloud resources")
metrics: Metrics = Field(description="Current system metrics")
sla: SLA = Field(description="Service Level Agreement requirements")
echoed_message: str = Field(default="System ready", description="Feedback from last action")
task_id: str = Field(default="easy", description="Current task identifier")
task_name: str = Field(default="Right-Sizing", description="Human-readable task name")
difficulty: str = Field(default="easy", description="Task difficulty level")
step: int = Field(default=0, description="Current step number")
class Action(BaseModel):
message: str = Field(description="Agent's command to modify infrastructure")
class Reward(BaseModel):
value: float = Field(description="Reward value between 0 and 1")
reason: str = Field(default="", description="Explanation of the reward")
cost_change_pct: float = Field(default=0.0, description="Percentage change in cost")
latency_change_pct: float = Field(default=0.0, description="Percentage change in latency")
ObservationModel = Observation
ActionModel = Action
RewardModel = Reward