Spaces:
Sleeping
Sleeping
| title: CACE — Cultural Context Arbitration Environment | |
| emoji: ⚖️ | |
| colorFrom: indigo | |
| colorTo: purple | |
| sdk: docker | |
| pinned: true | |
| license: apache-2.0 | |
| tags: | |
| - reinforcement-learning | |
| - openenv | |
| - content-moderation | |
| - multi-agent | |
| - rlvr | |
| - grpo | |
| # Cultural Context Arbitration Environment (CACE) | |
| **OpenEnv Hackathon 2026 | Theme 1 (Multi-Agent) + Theme 3.1 (World Modeling)** | |
| Trains a single LLM policy via GRPO to make culturally-aware content moderation decisions — using Meta's Oversight Board rulings (200+ binding public decisions) as the **verifiable reward oracle**. | |
| ## Quick Start | |
| ```python | |
| from cace_env import CACEEnvClient, CACEAction | |
| import asyncio | |
| async def main(): | |
| # Connect to HF Space | |
| async with CACEEnvClient(base_url="ws://YOUR_USERNAME-cace-env.hf.space") as env: | |
| # V1: single case episode | |
| result = await env.reset() | |
| print(result.observation.observation[:200]) | |
| # Make a moderation decision (0=ALLOW, 1=REMOVE, 2=ALLOW_WITH_LABEL, 3=ESCALATE, 4=RESTRICT) | |
| result = await env.step(CACEAction(action_int=0)) | |
| print(f"Reward: {result.reward:.4f} | Correct: {result.observation.reward_breakdown['correct']}") | |
| asyncio.run(main()) | |
| ``` | |
| ## V1 vs V2 Modes | |
| | | V1 (Simple) | V2 (Network) | | |
| |--|--|--| | |
| | Episode | 1 post → 1 decision | 20 posts on social graph → pick 8 → 8 decisions | | |
| | Observation | Enriched single case | Network batch with spread signals | | |
| | Reward | 3-track reward | 3-track + network spread bonus | | |
| | Use for | Quick training | Full demo | | |
| ## Three-Track Reward | |
| | Track | Weight | Measures | | |
| |-------|--------|---------| | |
| | Cultural Meaning Resolution | 40% | Correct interpretation of culturally local language | | |
| | Harm Detection Under Context | 35% | Catching real harm that looks ambiguous | | |
| | Policy Calibration + Escalation | 25% | Right tool for right case — no lazy escalation | | |
| Combined reward: **[-1.0, +1.0]** (normalised for GRPO) | |
| ## Architecture | |
| ``` | |
| 4 Frozen Agents (Groq/Azure — inference only, no gradients): | |
| Intake Agent → language, region, policy clause | |
| Cultural Context → charitable cultural interpretation | |
| Adversarial Challenge → stress-tests the cultural argument | |
| Policy Alignment → Meta Community Standards anchor | |
| 1 Trainable Agent (GRPO via Unsloth + TRL): | |
| Decision Agent → ALLOW | REMOVE | ALLOW_WITH_LABEL | ESCALATE | RESTRICT_DISTRIBUTION | |
| Reward Oracle: Meta Oversight Board — 200+ binding public decisions | |
| No LLM judge. Fully deterministic reward. | |
| ``` | |
| ## Environment API | |
| ``` | |
| POST /reset → start episode (returns CACEObservation) | |
| POST /step → apply CACEAction (returns CACEObservation with reward) | |
| GET /state → current CACEState (for debugging) | |
| GET /health → liveness check | |
| GET /docs → FastAPI Swagger UI | |
| GET /web → OpenEnv web interface | |
| ``` | |