Spaces:
Sleeping
Sleeping
metadata
title: AutoClean-Ai
emoji: ๐งน
colorFrom: green
colorTo: blue
sdk: docker
app_port: 7860
pinned: true
tags:
- openenv
- reinforcement-learning
- data-cleaning
- data-preprocessing
- llm-training
- benchmark
- ai-safety
- data-quality
- mlops
base_path: /web
๐งน AutoClean-Ai
Production-grade OpenEnv RL environment for training AI models to clean tabular data automatically.
Server Version: v1.0.0
๐ก The Problem
80% of data scientist time is spent cleaning data. Bad data causes 60% of ML project failures. AutoClean-Ai was built to train AI agents that can automatically detect and fix common data quality issues in tabular datasets.
๐ Quick Start
Run Locally
git clone https://github.com/SairajMN/WorkflowOps.git
cd WorkflowOps
pip install -e .
uvicorn server.app:app --host 0.0.0.0 --port 7860
curl http://localhost:7860/health
Raw HTTP
import requests
BASE = "http://localhost:7860"
# 1. Start episode
obs = requests.post(f"{BASE}/reset", json={"difficulty": "beginner"}).json()
print(obs["dataset_preview"], obs["column_info"])
# 2. Submit cleaning action
result = requests.post(f"{BASE}/step", json={
"action_type": "fix_missing_values",
"column_index": 2,
"confidence": 0.92,
"reasoning": "Mean imputation for numerical column",
"session_id": obs.get("session_id"),
}).json()
print(f"Reward: {result['reward']}, Cleaned: {result['rows_cleaned']}")
# 3. Score the episode
grade = requests.post(f"{BASE}/grader", json={
"task_id": "task_1_basic_cleaning",
"step_rewards": [result['reward']],
"step_infos": [result],
}).json()
print(f"Episode score: {grade['score']}")
Validate OpenEnv Compliance
# Local structure check
openenv validate
# Runtime check against live server
openenv validate --url http://localhost:7860 --verbose
python3 inference.py
2026-04-12 22:19:47,173 [INFO] Connecting to environment: https://sairaj2-openenv-datacleaner.hf.space
2026-04-12 22:19:49,338 [INFO] Environment: AutoClean-AI v1.0.0 โ healthy
2026-04-12 22:19:49,711 [INFO] Available tasks: ['easy_001', 'medium_001', 'hard_001', 'employee_demo']
2026-04-12 22:19:49,711 [INFO] Using LLM agent: qwen/qwen3-next-80b-a3b-instruct:free via https://openrouter.ai/api/v1
2026-04-12 22:19:50,044 [INFO]
=======================================================
2026-04-12 22:19:50,044 [INFO] TASK: easy_001 (difficulty=beginner)
2026-04-12 22:19:50,044 [INFO] =======================================================
[START] task=easy_001 env=openenv-datacleaner model=qwen/qwen3-next-80b-a3b-instruct:free
2026-04-12 22:19:52,471 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:19:52,472 [INFO] Retrying request to /chat/completions in 0.464138 seconds
2026-04-12 22:19:53,580 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:19:53,580 [INFO] Retrying request to /chat/completions in 0.815704 seconds
2026-04-12 22:19:55,038 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:19:55,041 [WARNING] LLM call failed: Error code: 429 - {'error': {'message': 'Provider returned error', 'code': 429, 'metadata': {'raw': 'qwen/qwen3-next-80b-a3b-instruct:free is temporarily rate-limited upstream. Please retry shortly, or add your own key to accumulate your rate limits: https://openrouter.ai/settings/integrations', 'provider_name': 'Venice', 'is_byok': False}}, 'user_id': 'user_36ZHxohbiGTyLfq9vP3Sf6ojZMM'}
[STEP] step=1 action=remove_duplicates reward=0.50 done=false error=null
2026-04-12 22:19:55,383 [INFO] [easy_001] ep=1 step=1 reward=0.500
2026-04-12 22:19:55,965 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:19:55,967 [INFO] Retrying request to /chat/completions in 0.458206 seconds
2026-04-12 22:19:57,083 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 402 Payment Required"
2026-04-12 22:19:57,084 [WARNING] LLM call failed: Error code: 402 - {'error': {'message': 'Provider returned error', 'code': 402, 'metadata': {'raw': '{"error":"API key USD spend limit exceeded. Your account may still have USD balance, but this API key has reached its configured USD spending limit."}', 'provider_name': 'Venice', 'is_byok': False}}, 'user_id': 'user_36ZHxohbiGTyLfq9vP3Sf6ojZMM'}
[STEP] step=2 action=submit reward=1.00 done=true error=null
2026-04-12 22:19:57,485 [INFO] [easy_001] ep=1 step=2 reward=1.000
2026-04-12 22:19:58,443 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:19:58,445 [INFO] Retrying request to /chat/completions in 0.475367 seconds
2026-04-12 22:19:59,627 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:19:59,628 [INFO] Retrying request to /chat/completions in 0.844512 seconds
2026-04-12 22:20:01,065 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:01,067 [WARNING] LLM call failed: Error code: 429 - {'error': {'message': 'Provider returned error', 'code': 429, 'metadata': {'raw': 'qwen/qwen3-next-80b-a3b-instruct:free is temporarily rate-limited upstream. Please retry shortly, or add your own key to accumulate your rate limits: https://openrouter.ai/settings/integrations', 'provider_name': 'Venice', 'is_byok': False}}, 'user_id': 'user_36ZHxohbiGTyLfq9vP3Sf6ojZMM'}
[STEP] step=1 action=remove_duplicates reward=0.50 done=false error=null
2026-04-12 22:20:01,372 [INFO] [easy_001] ep=2 step=1 reward=0.500
2026-04-12 22:20:01,969 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:01,971 [INFO] Retrying request to /chat/completions in 0.387579 seconds
2026-04-12 22:20:03,191 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:03,193 [INFO] Retrying request to /chat/completions in 0.930048 seconds
2026-04-12 22:20:04,715 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:04,717 [WARNING] LLM call failed: Error code: 429 - {'error': {'message': 'Provider returned error', 'code': 429, 'metadata': {'raw': 'qwen/qwen3-next-80b-a3b-instruct:free is temporarily rate-limited upstream. Please retry shortly, or add your own key to accumulate your rate limits: https://openrouter.ai/settings/integrations', 'provider_name': 'Venice', 'is_byok': False}}, 'user_id': 'user_36ZHxohbiGTyLfq9vP3Sf6ojZMM'}
[STEP] step=2 action=submit reward=1.00 done=true error=null
2026-04-12 22:20:05,054 [INFO] [easy_001] ep=2 step=2 reward=1.000
2026-04-12 22:20:06,558 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:06,560 [INFO] Retrying request to /chat/completions in 0.377761 seconds
2026-04-12 22:20:08,138 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:08,139 [INFO] Retrying request to /chat/completions in 0.790773 seconds
2026-04-12 22:20:09,531 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:09,533 [WARNING] LLM call failed: Error code: 429 - {'error': {'message': 'Provider returned error', 'code': 429, 'metadata': {'raw': 'qwen/qwen3-next-80b-a3b-instruct:free is temporarily rate-limited upstream. Please retry shortly, or add your own key to accumulate your rate limits: https://openrouter.ai/settings/integrations', 'provider_name': 'Venice', 'is_byok': False}}, 'user_id': 'user_36ZHxohbiGTyLfq9vP3Sf6ojZMM'}
[STEP] step=1 action=remove_duplicates reward=0.50 done=false error=null
2026-04-12 22:20:09,877 [INFO] [easy_001] ep=3 step=1 reward=0.500
2026-04-12 22:20:10,478 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:10,480 [INFO] Retrying request to /chat/completions in 0.432287 seconds
2026-04-12 22:20:11,245 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:11,247 [INFO] Retrying request to /chat/completions in 0.841678 seconds
2026-04-12 22:20:12,445 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:12,447 [WARNING] LLM call failed: Error code: 429 - {'error': {'message': 'Rate limit exceeded: limit_rpm/qwen/qwen3-next-80b-a3b-instruct-2509/94248808-ba97-4e3c-be60-1cb0928db51d. High demand for qwen/qwen3-next-80b-a3b-instruct:free on OpenRouter - limited to 8 requests per minute. Please retry shortly.', 'code': 429, 'metadata': {'headers': {'X-RateLimit-Limit': '8', 'X-RateLimit-Remaining': '0', 'X-RateLimit-Reset': '1776012660000'}, 'provider_name': None}}, 'user_id': 'user_36ZHxohbiGTyLfq9vP3Sf6ojZMM'}
[STEP] step=2 action=submit reward=1.00 done=true error=null
2026-04-12 22:20:12,771 [INFO] [easy_001] ep=3 step=2 reward=1.000
[END] success=true steps=6 score=0.750 rewards=0.50,1.00,0.50,1.00,0.50,1.00
2026-04-12 22:20:12,771 [INFO]
Task score: 0.7500 ยฑ 0.0000
2026-04-12 22:20:12,771 [INFO]
=======================================================
2026-04-12 22:20:12,771 [INFO] TASK: medium_001 (difficulty=intermediate)
2026-04-12 22:20:12,771 [INFO] =======================================================
[START] task=medium_001 env=openenv-datacleaner model=qwen/qwen3-next-80b-a3b-instruct:free
2026-04-12 22:20:13,504 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:13,504 [INFO] Retrying request to /chat/completions in 0.469513 seconds
2026-04-12 22:20:14,323 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:14,323 [INFO] Retrying request to /chat/completions in 0.933486 seconds
2026-04-12 22:20:16,371 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:16,371 [WARNING] LLM call failed: Error code: 429 - {'error': {'message': 'Rate limit exceeded: limit_rpm/qwen/qwen3-next-80b-a3b-instruct-2509/94248808-ba97-4e3c-be60-1cb0928db51d. High demand for qwen/qwen3-next-80b-a3b-instruct:free on OpenRouter - limited to 8 requests per minute. Please retry shortly.', 'code': 429, 'metadata': {'headers': {'X-RateLimit-Limit': '8', 'X-RateLimit-Remaining': '0', 'X-RateLimit-Reset': '1776012660000'}, 'provider_name': None}}, 'user_id': 'user_36ZHxohbiGTyLfq9vP3Sf6ojZMM'}
[STEP] step=1 action=submit reward=0.50 done=true error=null
2026-04-12 22:20:16,811 [INFO] [medium_001] ep=1 step=1 reward=0.500
2026-04-12 22:20:17,561 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:17,562 [INFO] Retrying request to /chat/completions in 0.445498 seconds
2026-04-12 22:20:18,419 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:18,421 [INFO] Retrying request to /chat/completions in 0.807103 seconds
2026-04-12 22:20:19,640 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:19,641 [WARNING] LLM call failed: Error code: 429 - {'error': {'message': 'Rate limit exceeded: limit_rpm/qwen/qwen3-next-80b-a3b-instruct-2509/94248808-ba97-4e3c-be60-1cb0928db51d. High demand for qwen/qwen3-next-80b-a3b-instruct:free on OpenRouter - limited to 8 requests per minute. Please retry shortly.', 'code': 429, 'metadata': {'headers': {'X-RateLimit-Limit': '8', 'X-RateLimit-Remaining': '0', 'X-RateLimit-Reset': '1776012660000'}, 'provider_name': None}}, 'user_id': 'user_36ZHxohbiGTyLfq9vP3Sf6ojZMM'}
[STEP] step=1 action=submit reward=0.50 done=true error=null
2026-04-12 22:20:19,980 [INFO] [medium_001] ep=2 step=1 reward=0.500
2026-04-12 22:20:20,626 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:20,627 [INFO] Retrying request to /chat/completions in 0.397460 seconds
2026-04-12 22:20:21,491 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:21,493 [INFO] Retrying request to /chat/completions in 0.964606 seconds
2026-04-12 22:20:22,821 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:22,823 [WARNING] LLM call failed: Error code: 429 - {'error': {'message': 'Rate limit exceeded: limit_rpm/qwen/qwen3-next-80b-a3b-instruct-2509/94248808-ba97-4e3c-be60-1cb0928db51d. High demand for qwen/qwen3-next-80b-a3b-instruct:free on OpenRouter - limited to 8 requests per minute. Please retry shortly.', 'code': 429, 'metadata': {'headers': {'X-RateLimit-Limit': '8', 'X-RateLimit-Remaining': '0', 'X-RateLimit-Reset': '1776012660000'}, 'provider_name': None}}, 'user_id': 'user_36ZHxohbiGTyLfq9vP3Sf6ojZMM'}
[STEP] step=1 action=submit reward=0.50 done=true error=null
2026-04-12 22:20:23,198 [INFO] [medium_001] ep=3 step=1 reward=0.500
[END] success=true steps=3 score=0.500 rewards=0.50,0.50,0.50
2026-04-12 22:20:23,199 [INFO]
Task score: 0.5000 ยฑ 0.0000
2026-04-12 22:20:23,199 [INFO]
=======================================================
2026-04-12 22:20:23,199 [INFO] TASK: hard_001 (difficulty=advanced)
2026-04-12 22:20:23,199 [INFO] =======================================================
[START] task=hard_001 env=openenv-datacleaner model=qwen/qwen3-next-80b-a3b-instruct:free
2026-04-12 22:20:24,051 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:24,052 [INFO] Retrying request to /chat/completions in 0.472201 seconds
2026-04-12 22:20:25,173 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:25,174 [INFO] Retrying request to /chat/completions in 0.768212 seconds
2026-04-12 22:20:26,285 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:26,286 [WARNING] LLM call failed: Error code: 429 - {'error': {'message': 'Rate limit exceeded: limit_rpm/qwen/qwen3-next-80b-a3b-instruct-2509/94248808-ba97-4e3c-be60-1cb0928db51d. High demand for qwen/qwen3-next-80b-a3b-instruct:free on OpenRouter - limited to 8 requests per minute. Please retry shortly.', 'code': 429, 'metadata': {'headers': {'X-RateLimit-Limit': '8', 'X-RateLimit-Remaining': '0', 'X-RateLimit-Reset': '1776012660000'}, 'provider_name': None}}, 'user_id': 'user_36ZHxohbiGTyLfq9vP3Sf6ojZMM'}
[STEP] step=1 action=remove_duplicates reward=0.50 done=false error=null
2026-04-12 22:20:26,614 [INFO] [hard_001] ep=1 step=1 reward=0.500
2026-04-12 22:20:27,026 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:27,026 [INFO] Retrying request to /chat/completions in 0.446455 seconds
2026-04-12 22:20:28,422 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:28,424 [INFO] Retrying request to /chat/completions in 0.765570 seconds
2026-04-12 22:20:29,526 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:29,527 [WARNING] LLM call failed: Error code: 429 - {'error': {'message': 'Rate limit exceeded: limit_rpm/qwen/qwen3-next-80b-a3b-instruct-2509/94248808-ba97-4e3c-be60-1cb0928db51d. High demand for qwen/qwen3-next-80b-a3b-instruct:free on OpenRouter - limited to 8 requests per minute. Please retry shortly.', 'code': 429, 'metadata': {'headers': {'X-RateLimit-Limit': '8', 'X-RateLimit-Remaining': '0', 'X-RateLimit-Reset': '1776012660000'}, 'provider_name': None}}, 'user_id': 'user_36ZHxohbiGTyLfq9vP3Sf6ojZMM'}
[STEP] step=2 action=submit reward=1.00 done=true error=null
2026-04-12 22:20:29,927 [INFO] [hard_001] ep=1 step=2 reward=1.000
2026-04-12 22:20:30,587 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:30,589 [INFO] Retrying request to /chat/completions in 0.408676 seconds
2026-04-12 22:20:31,424 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:31,426 [INFO] Retrying request to /chat/completions in 0.778604 seconds
2026-04-12 22:20:32,608 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:32,611 [WARNING] LLM call failed: Error code: 429 - {'error': {'message': 'Rate limit exceeded: limit_rpm/qwen/qwen3-next-80b-a3b-instruct-2509/94248808-ba97-4e3c-be60-1cb0928db51d. High demand for qwen/qwen3-next-80b-a3b-instruct:free on OpenRouter - limited to 8 requests per minute. Please retry shortly.', 'code': 429, 'metadata': {'headers': {'X-RateLimit-Limit': '8', 'X-RateLimit-Remaining': '0', 'X-RateLimit-Reset': '1776012660000'}, 'provider_name': None}}, 'user_id': 'user_36ZHxohbiGTyLfq9vP3Sf6ojZMM'}
[STEP] step=1 action=remove_duplicates reward=0.50 done=false error=null
2026-04-12 22:20:33,065 [INFO] [hard_001] ep=2 step=1 reward=0.500
2026-04-12 22:20:33,472 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:33,473 [INFO] Retrying request to /chat/completions in 0.458515 seconds
2026-04-12 22:20:34,394 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:34,395 [INFO] Retrying request to /chat/completions in 0.825773 seconds
2026-04-12 22:20:35,545 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:35,547 [WARNING] LLM call failed: Error code: 429 - {'error': {'message': 'Rate limit exceeded: limit_rpm/qwen/qwen3-next-80b-a3b-instruct-2509/94248808-ba97-4e3c-be60-1cb0928db51d. High demand for qwen/qwen3-next-80b-a3b-instruct:free on OpenRouter - limited to 8 requests per minute. Please retry shortly.', 'code': 429, 'metadata': {'headers': {'X-RateLimit-Limit': '8', 'X-RateLimit-Remaining': '0', 'X-RateLimit-Reset': '1776012660000'}, 'provider_name': None}}, 'user_id': 'user_36ZHxohbiGTyLfq9vP3Sf6ojZMM'}
[STEP] step=2 action=submit reward=1.00 done=true error=null
2026-04-12 22:20:35,874 [INFO] [hard_001] ep=2 step=2 reward=1.000
2026-04-12 22:20:36,572 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:36,573 [INFO] Retrying request to /chat/completions in 0.417865 seconds
2026-04-12 22:20:37,307 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:37,309 [INFO] Retrying request to /chat/completions in 0.985335 seconds
2026-04-12 22:20:38,616 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:38,618 [WARNING] LLM call failed: Error code: 429 - {'error': {'message': 'Rate limit exceeded: limit_rpm/qwen/qwen3-next-80b-a3b-instruct-2509/94248808-ba97-4e3c-be60-1cb0928db51d. High demand for qwen/qwen3-next-80b-a3b-instruct:free on OpenRouter - limited to 8 requests per minute. Please retry shortly.', 'code': 429, 'metadata': {'headers': {'X-RateLimit-Limit': '8', 'X-RateLimit-Remaining': '0', 'X-RateLimit-Reset': '1776012660000'}, 'provider_name': None}}, 'user_id': 'user_36ZHxohbiGTyLfq9vP3Sf6ojZMM'}
[STEP] step=1 action=remove_duplicates reward=0.50 done=false error=null
2026-04-12 22:20:38,959 [INFO] [hard_001] ep=3 step=1 reward=0.500
2026-04-12 22:20:39,310 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:39,311 [INFO] Retrying request to /chat/completions in 0.375729 seconds
2026-04-12 22:20:40,045 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:40,046 [INFO] Retrying request to /chat/completions in 0.926493 seconds
2026-04-12 22:20:41,322 [INFO] HTTP Request: POST https://openrouter.ai/api/v1/chat/completions "HTTP/1.1 429 Too Many Requests"
2026-04-12 22:20:41,325 [WARNING] LLM call failed: Error code: 429 - {'error': {'message': 'Rate limit exceeded: limit_rpm/qwen/qwen3-next-80b-a3b-instruct-2509/94248808-ba97-4e3c-be60-1cb0928db51d. High demand for qwen/qwen3-next-80b-a3b-instruct:free on OpenRouter - limited to 8 requests per minute. Please retry shortly.', 'code': 429, 'metadata': {'headers': {'X-RateLimit-Limit': '8', 'X-RateLimit-Remaining': '0', 'X-RateLimit-Reset': '1776012660000'}, 'provider_name': None}}, 'user_id': 'user_36ZHxohbiGTyLfq9vP3Sf6ojZMM'}
[STEP] step=2 action=submit reward=1.00 done=true error=null
2026-04-12 22:20:41,690 [INFO] [hard_001] ep=3 step=2 reward=1.000
[END] success=true steps=6 score=0.750 rewards=0.50,1.00,0.50,1.00,0.50,1.00
2026-04-12 22:20:41,690 [INFO]
Task score: 0.7500 ยฑ 0.0000
=======================================================
INFERENCE RESULTS
=======================================================
Model : qwen/qwen3-next-80b-a3b-instruct:free
Seed : 42 | 3 episodes x 8 steps
Elapsed : 51.6s
easy_001 0.7500 +- 0.0000 |############### |
medium_001 0.5000 +- 0.0000 |########## |
hard_001 0.7500 +- 0.0000 |############### |
OVERALL 0.6667
=======================================================
๐ฏ Tasks
3 progressive difficulty tasks:
| # | task_id | Difficulty | Description | Expected Agent Score |
|---|---|---|---|---|
| 1 | task_1_basic_cleaning |
๐ข Beginner | Fix missing values, standardize formats | 0.70โ0.85 |
| 2 | task_2_advanced_cleaning |
๐ก Intermediate | Handle outliers, correct data types, deduplication | 0.55โ0.70 |
| 3 | task_3_full_pipeline |
๐ด Advanced | Complete end-to-end data cleaning pipeline | 0.40โ0.60 |
๐ฎ Environment Workflow
The agent receives a tabular dataset with known quality issues. It must select the appropriate cleaning operation, apply it correctly, and justify its choice.
Action Space
{
"action_type": "fix_missing_values | remove_outliers | standardize | deduplicate | correct_types | fill_dates",
"column_index": 3,
"confidence": 0.85,
"reasoning": "string explaining the choice",
"session_id": "session id from reset"
}
Observation Space
{
"dataset_preview": "First 5 rows of data",
"column_info": "Column names, types, missing stats",
"reward": 0.75,
"feedback": "Detailed human-readable feedback",
"rows_cleaned": 12,
"issues_remaining": 3,
"done": false,
"session_id": "ses_a1b2c3d4"
}
๐ Reward System (7 Components)
| Component | Weight | Description |
|---|---|---|
| Correctness | 0.35 | Operation actually fixed the issue |
| Appropriate action | 0.25 | Right operation selected for the problem |
| Confidence calibration | 0.15 | Confidence matches actual correctness |
| No side effects | 0.15 | Cleaning didn't break other columns |
| Efficiency | 0.10 | Minimum steps to clean dataset |
๐ Metrics
โ Data Quality Score โ Completeness Ratio โ Uniqueness Ratio โ Type Consistency โ Cleaning Efficiency โ Action Appropriateness
๐ Supported Data Cleaning Operations
| Operation | Description |
|---|---|
fix_missing_values |
Mean/median/mode imputation |
remove_outliers |
IQR / Z-score outlier removal |
standardize |
Normalize numerical columns |
deduplicate |
Remove duplicate rows |
correct_types |
Fix incorrect data types |
fill_dates |
Standardize date formats |
handle_categories |
Encode categorical columns |
remove_duplicates |
Drop identical rows |
trim_strings |
Clean whitespace from text columns |
correct_values |
Fix known invalid values |
๐ API Endpoints
OpenEnv Required
| Method | Endpoint | Description |
|---|---|---|
GET |
/tasks |
List all 3 tasks + action schema |
POST |
/grader |
Score a completed episode (0.0โ1.0) |
POST |
/baseline |
Run built-in heuristic baseline |
GET |
/metadata |
Environment name, version, description |
GET |
/schema |
Action, observation, and state JSON schemas |
GET |
/health |
Health check |
Environment
| Method | Endpoint | Description |
|---|---|---|
POST |
/reset |
Start new episode |
POST |
/step |
Submit cleaning action |
GET |
/state |
Get current episode state |
๐ป Development
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest tests/ -v
# Validate OpenEnv compliance
openenv validate --url http://localhost:7860 --verbose
๐ Links
| ๐ฆ GitHub | https://github.com/SairajMN/AutoClean-AI |
| ๐ Interactive API Docs | http://localhost:7860/redoc |
| ๐ง OpenEnv Framework | https://github.com/meta-pytorch/OpenEnv |
Built for Data Cleaning AI Agents ยท MIT License