Siddh12334's picture
feat: rewrite env to be fully openenv-core compliant
7a8a0f0
Raw
History Blame Contribute Delete
1.36 kB
from enum import Enum
from typing import Optional
from pydantic import BaseModel, field_validator
from openenv.core import Action, Observation, State
class ActionType(str, Enum):
read_doc = "read_doc"
flag_suspicious = "flag_suspicious"
unflag_doc = "unflag_doc"
submit_answer = "submit_answer"
class ContextCorruptionAction(Action):
action_type: ActionType
doc_id: Optional[int] = None
answer: Optional[str] = None
confidence: Optional[float] = None
@field_validator("confidence")
@classmethod
def confidence_range(cls, v):
if v is not None and not (0.0 <= v <= 1.0):
raise ValueError("confidence must be between 0.0 and 1.0")
return v
class Document(BaseModel):
id: int
title: str
content: str
is_flagged: bool = False
class EpisodeObservation(Observation):
question: str = ""
documents: list[Document] = []
flagged_ids: list[int] = []
budget_remaining: int = 0
turn: int = 0
message: Optional[str] = None
# `done` and `reward` inherited from Observation
class ContextCorruptionState(State):
question: str = ""
ground_truth: str = ""
corrupt_ids: list[int] = []
flagged_ids: list[int] = []
budget_used: int = 0
done: bool = False
reward: Optional[float] = None
breakdown: Optional[dict] = None