CoolFace
Apppublic

AMD21/codefixerenv

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes
models.py71 linesDownload Raw Back to env
1from pydantic import BaseModel, Field2from typing import Literal, List, Optional3 4 5class Observation(BaseModel):6    input: str = Field(7        ...,8        description="The buggy Python code snippet the agent must fix"9    )10    context: str = Field(11        ...,12        description="Plain-English description of what the correct code should do"13    )14    history: List[dict] = Field(15        default_factory=list,16        description="Ordered list of previous {step, action_type, action_content, reward, feedback} dicts"17    )18    step_number: int = Field(19        default=0,20        description="How many steps have elapsed since reset (0 = initial)"21    )22    max_steps: int = Field(23        default=5,24        description="Maximum steps allowed before the episode auto-terminates"25    )26 27class Action(BaseModel):28    type: Literal["fix", "explain", "give_up"] = Field(29        ...,30        description="Action type: 'fix' submits code, 'explain' requests a hint, 'give_up' ends episode"31    )32    content: str = Field(33        ...,34        description="Corrected code (fix), clarification question (explain), or empty string (give_up)"35    )36 37class Reward(BaseModel):38    value: float = Field(39        ...,40        description="Net scalar reward for this step"41    )42    grader_score: Optional[float] = Field(43        default=None,44        description="Raw grader output 0.0–1.0 (only set on 'fix' actions)"45    )46    improvement: Optional[float] = Field(47        default=None,48        description="Score delta vs. previous best (only set on 'fix' actions)"49    )50    efficiency_bonus: float = Field(51        default=0.0,52        description="+0.2 if solved in ≤ 2 steps, else 0.0"53    )54    penalty: float = Field(55        default=0.0,56        description="Negative component from redundancy, explain cost, or give_up"57    )58    reason: str = Field(59        ...,60        description="Human-readable explanation of how this reward was computed"61    )62 63 64class StepResult(BaseModel):65    observation: Observation66    reward: Reward67    done: bool = Field(..., description="True when the episode has ended")68    info: dict = Field(69        default_factory=dict,70        description="Auxiliary diagnostics: task_id, difficulty, grader detail, outcome"71    )