Spaces:
Running
Running
File size: 3,397 Bytes
4ee1718 44c2d9e 4ee1718 44c2d9e 4ee1718 44c2d9e 4ee1718 44c2d9e 4ee1718 44c2d9e 4ee1718 44c2d9e 4ee1718 44c2d9e 4ee1718 44c2d9e 4ee1718 44c2d9e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | from __future__ import annotations
import json
from typing import Any, Dict, List, Optional
from pydantic import BaseModel, Field
class DesignGymAction(BaseModel):
action_type: str = "noop"
element_id: Optional[str] = None
element_ids: List[str] = Field(default_factory=list)
group_id: Optional[str] = None
region_id: Optional[str] = None
template_id: Optional[str] = None
pattern: Optional[str] = None
axis: Optional[str] = None
mode: Optional[str] = None
anchor: str = "center"
grid: int = 0
dx: float = 0.0
dy: float = 0.0
dw: float = 0.0
dh: float = 0.0
strength: float = 0.0
def canonical(self) -> str:
return json.dumps(
self.model_dump(exclude_none=True),
sort_keys=True,
separators=(",", ":"),
)
class DesignGymObservation(BaseModel):
message: str = ""
task_id: str = ""
step_count: int = 0
max_steps: int = 0
done: bool = False
reward: float = 0.0
current_score: float = 0.0
best_score_so_far: float = 0.0
last_action_error: Optional[str] = None
legal_actions: List[str] = Field(default_factory=list)
layout_summary: str = ""
metrics: Dict[str, float] = Field(default_factory=dict)
metric_deltas: Dict[str, float] = Field(default_factory=dict)
worst_metrics: List[str] = Field(default_factory=list)
focus_elements: List[str] = Field(default_factory=list)
element_blame: Dict[str, float] = Field(default_factory=dict)
constraint_warnings: List[str] = Field(default_factory=list)
suggested_edits: List[str] = Field(default_factory=list)
# DesignGym 2.0 fields
brief: Dict[str, Any] = Field(default_factory=dict)
phase: str = "structure"
allowed_actions: List[str] = Field(default_factory=list)
instruction_score: float = 0.0
phase_score: float = 0.0
reward_components: Dict[str, float] = Field(default_factory=dict)
memory: Dict[str, Any] = Field(default_factory=dict)
critic_feedback: List[str] = Field(default_factory=list)
class DesignGymState(BaseModel):
episode_id: str = ""
seed: int = 0
step_count: int = 0
task_id: str = ""
instance_id: str = ""
max_steps: int = 0
done: bool = False
total_reward: float = 0.0
last_reward: float = 0.0
current_score: float = 0.0
current_utility: float = 0.0
best_score_so_far: float = 0.0
last_action_error: Optional[str] = None
invalid_actions: int = 0
no_progress_steps: int = 0
canvas: Dict[str, Any] = Field(default_factory=dict)
constraints: Dict[str, Any] = Field(default_factory=dict)
metrics: Dict[str, float] = Field(default_factory=dict)
previous_metrics: Dict[str, float] = Field(default_factory=dict)
metric_deltas: Dict[str, float] = Field(default_factory=dict)
elements: List[Dict[str, Any]] = Field(default_factory=list)
action_history: List[str] = Field(default_factory=list)
# DesignGym 2.0 fields
brief: Dict[str, Any] = Field(default_factory=dict)
phase: str = "structure"
allowed_actions: List[str] = Field(default_factory=list)
instruction_score: float = 0.0
phase_score: float = 0.0
reward_components: Dict[str, float] = Field(default_factory=dict)
memory: Dict[str, Any] = Field(default_factory=dict)
critic_feedback: List[str] = Field(default_factory=list) |