Spaces:
Build error
Build error
| from __future__ import annotations | |
| from openhands.core.config.condenser_config import ObservationMaskingCondenserConfig | |
| from openhands.events.event import Event | |
| from openhands.events.observation import Observation | |
| from openhands.events.observation.agent import AgentCondensationObservation | |
| from openhands.memory.condenser.condenser import Condensation, Condenser, View | |
| class ObservationMaskingCondenser(Condenser): | |
| """A condenser that masks the values of observations outside of a recent attention window.""" | |
| def __init__(self, attention_window: int = 5): | |
| self.attention_window = attention_window | |
| super().__init__() | |
| def condense(self, view: View) -> View | Condensation: | |
| """Replace the content of observations outside of the attention window with a placeholder.""" | |
| results: list[Event] = [] | |
| for i, event in enumerate(view): | |
| if isinstance(event, Observation) and i < len(view) - self.attention_window: | |
| results.append(AgentCondensationObservation('<MASKED>')) | |
| else: | |
| results.append(event) | |
| return View(events=results) | |
| def from_config( | |
| cls, config: ObservationMaskingCondenserConfig | |
| ) -> ObservationMaskingCondenser: | |
| return ObservationMaskingCondenser(**config.model_dump(exclude=['type'])) | |
| ObservationMaskingCondenser.register_config(ObservationMaskingCondenserConfig) | |