Spaces:
Sleeping
Sleeping
| from pydantic import BaseModel, Field | |
| from typing import Any, Dict, List, Optional | |
| class Action(BaseModel): | |
| """Action that the agent can take in the environment.""" | |
| operation: str = Field( | |
| ..., | |
| description=( | |
| "Operation to perform. One of: " | |
| "remove_duplicates, fill_missing, fix_dtype, " | |
| "remove_outliers, rename_columns, validate_schema, finish" | |
| ) | |
| ) | |
| parameters: Dict[str, Any] = Field( | |
| default_factory=dict, | |
| description="Parameters for the operation" | |
| ) | |
| class Config: | |
| json_schema_extra = { | |
| "example": { | |
| "operation": "fill_missing", | |
| "parameters": { | |
| "column": "age", | |
| "strategy": "mean" | |
| } | |
| } | |
| } | |
| class Observation(BaseModel): | |
| """What the agent sees at each step.""" | |
| task_id: str = Field(..., description="Current task identifier") | |
| step: int = Field(..., description="Current step number") | |
| dataset_info: Dict[str, Any] = Field( | |
| ..., | |
| description="Info about current dataset state" | |
| ) | |
| columns: List[str] = Field( | |
| ..., | |
| description="Column names in dataset" | |
| ) | |
| shape: List[int] = Field( | |
| ..., | |
| description="[rows, columns] of dataset" | |
| ) | |
| missing_values: Dict[str, int] = Field( | |
| ..., | |
| description="Count of missing values per column" | |
| ) | |
| dtypes: Dict[str, str] = Field( | |
| ..., | |
| description="Data types of each column" | |
| ) | |
| duplicate_count: int = Field( | |
| ..., | |
| description="Number of duplicate rows" | |
| ) | |
| sample_rows: List[Dict[str, Any]] = Field( | |
| ..., | |
| description="First 3 rows of dataset as preview" | |
| ) | |
| available_operations: List[str] = Field( | |
| ..., | |
| description="List of valid operations agent can use" | |
| ) | |
| task_description: str = Field( | |
| ..., | |
| description="Natural language description of what agent must do" | |
| ) | |
| message: str = Field( | |
| default="", | |
| description="Feedback message from last action" | |
| ) | |
| class Reward(BaseModel): | |
| """Reward signal returned after each step.""" | |
| total: float = Field( | |
| ..., | |
| description="Total reward this step (0.0 to 1.0)" | |
| ) | |
| duplicate_score: float = Field( | |
| default=0.0, | |
| description="Score for duplicate removal" | |
| ) | |
| missing_score: float = Field( | |
| default=0.0, | |
| description="Score for handling missing values" | |
| ) | |
| dtype_score: float = Field( | |
| default=0.0, | |
| description="Score for fixing data types" | |
| ) | |
| outlier_score: float = Field( | |
| default=0.0, | |
| description="Score for outlier removal" | |
| ) | |
| schema_score: float = Field( | |
| default=0.0, | |
| description="Score for schema validation" | |
| ) | |
| penalty: float = Field( | |
| default=0.0, | |
| description="Penalty for bad actions" | |
| ) | |
| class StepResult(BaseModel): | |
| """Full result returned by step().""" | |
| observation: Observation | |
| reward: Reward | |
| done: bool = Field(..., description="Whether episode is complete") | |
| info: Dict[str, Any] = Field( | |
| default_factory=dict, | |
| description="Extra info for debugging" | |
| ) | |
| class TaskInfo(BaseModel): | |
| """Metadata about a task.""" | |
| task_id: str | |
| difficulty: str | |
| description: str | |
| max_steps: int | |
| operations_allowed: List[str] | |