CoolFace
Apppublic

KingHero121/dataforge-env

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes
App README

DataForge-Env ๐Ÿ”ง

A production-grade OpenEnv environment for evaluating LLM-based agents on real-world data cleaning, validation, and multi-table reconciliation tasks.

Overview

DataForge-Env wraps a stateful data-cleaning sandbox. Agents interact via structured actions to fix dirty datasets โ€” filling nulls, casting types, normalising values, joining tables, and satisfying business rules.

Rewards are dense and deterministic: agents receive granular feedback after every step, enabling RL-style training and scientific benchmarking.

Tasks

IDNameDifficultyMax StepsDescription
easyThe Untidy RetailerEasy15Fill missing emails, remove duplicates, trim whitespace
mediumFinancial AnomalyMedium20Parse currency strings, unify dates, cap outliers
hardSupply Chain ReconciliationHard25Normalise SKU keys, join tables, compute inventory value

Quick Start

Local

bash
pip install -r requirements.txt
python -m server.app
# Server runs on http://localhost:7860

Docker

bash
docker build -t dataforge-env .
docker run -p 7860:7860 dataforge-env

API Usage

Reset (start an episode):

bash
curl -X POST http://localhost:7860/reset \
  -H "Content-Type: application/json" \
  -d '{"task_id": "easy"}'

Step (apply an action):

bash
curl -X POST http://localhost:7860/step \
  -H "Content-Type: application/json" \
  -d '{"action": {"action_type": "fill_missing", "params": {"column": "email", "strategy": "constant", "fill_value": "unknown@example.com"}}}'

Action Space

ActionKey Params
fill_missingcolumn, strategy (mean/median/mode/constant/drop), fill_value
drop_duplicatessubset (optional list of columns)
cast_typecolumn, target_dtype (int/float/str/datetime)
normalizecolumn, method (trim/lower/upper/stripcurrency/unifydate/stripprefix/mapvalues/clip)
joinright_table, left_on, right_on, how
validate(no params โ€” returns current validation errors)

Reward Formula

R = 0.3 ร— C_schema + 0.2 ร— C_nulls + 0.1 ร— C_dupes + 0.4 ร— C_logic โˆ’ 0.01 ร— step_penalty

All components and the final reward are normalised to [0, 1].

Inference Script

bash
export API_BASE_URL=https://api-inference.huggingface.co/v1
export MODEL_NAME=meta-llama/Llama-3-70B-Instruct
export HF_TOKEN=hf_...
export ENV_URL=http://localhost:7860
export TASK_ID=easy

python inference.py

Output follows strict [START] / [STEP] / [END] format.

Project Structure

โ”œโ”€โ”€ openenv.yaml          # Environment specification
โ”œโ”€โ”€ env/
โ”‚   โ”œโ”€โ”€ models.py         # Pydantic schemas
โ”‚   โ”œโ”€โ”€ env.py            # Core environment class
โ”‚   โ”œโ”€โ”€ tasks.py          # Task definitions & data generators
โ”‚   โ””โ”€โ”€ graders.py        # Deterministic grading
โ”œโ”€โ”€ server/
โ”‚   โ””โ”€โ”€ app.py            # FastAPI server
โ”œโ”€โ”€ inference.py          # LLM agent inference script
โ”œโ”€โ”€ Dockerfile            # Container definition
โ”œโ”€โ”€ requirements.txt      # Python dependencies
โ””โ”€โ”€ README.md             # This file

License

MIT