YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
Text QA OpenEnv Environment
๐ฎ A Robust Question Answering ENVIRONMENT for Meta PyTorch Hackathon 2026 - Round 1
Built for Environment Evaluation, Not Agent Training!
This is a production-grade RL environment (the "playground") that provides standardized question-answering tasks for AI agents. Focus is on environment robustness, not agent implementation.
๐ฏ Round 1 Submission - Environment Components
This environment implements ALL required components for Round 1:
1. Observation Space (What the agent sees)
{
'question': str, # The question to answer
'context': str, # Context containing the answer
'question_id': int # Unique question identifier
}
2. Action Space (What the agent can do)
- Type: Text string
- Description: Agent provides an answer as a string
3. Reward Function (Scoring system)
+1.0: Correct answer (exact match)+0.5: Partial match (contains key information)-0.1: Incorrect answer
4. Automated Grader (Success evaluation)
- Programmatic evaluation of agent performance
- Pass/Fail criteria: โฅ70% accuracy OR โฅ85% partial accuracy
- Detailed per-question feedback
- JSON export for evaluation
5. Robust Error Handling
- Never crashes on invalid actions
- Handles None, empty strings, wrong types
- Graceful fallbacks for all edge cases
Key Features
- ๐ฎ Robust Environment: Never crashes on invalid actions - comprehensive error handling
- ๐ Real-World Datasets: SQuAD (10k+ questions), TriviaQA (95k questions)
- ๐ Built-in Questions: 33 curated questions for quick testing
- ๐ Gymnasium Compliant: Full OpenEnv/Gymnasium API implementation
- โ Automated Grader: Programmatic agent evaluation system
- ๐ Multi-tier Rewards: Smart reward shaping for learning
- ๐ณ Dockerized: Containerized for consistent evaluation
- ๐ Validated: Passes all robustness tests for Round 1
Installation
Quick Install (Minimal - for Round 1)
pip install -r requirements.txt
Build time: ~2 minutes | Size: ~100MB
This includes only the essentials:
- gymnasium (environment framework)
- numpy (numerical operations)
Full Install (with External Datasets - Optional)
pip install -r requirements-full.txt
Build time: ~60 minutes | Size: ~2GB
Additional features:
- SQuAD dataset (10k+ questions)
- TriviaQA dataset (95k+ questions)
- Transformer models support
Quick Start - Testing the Environment
Validate Environment Robustness (Run This First!)
pip install -e .
python validate_environment.py
This runs comprehensive tests to ensure the environment:
- โ Never crashes on invalid actions
- โ Handles all edge cases
- โ Complies with Gymnasium API
- โ Grader works correctly
Basic Environment Usage
from text_qa_env import TextQAEnv
# Create environment
env = TextQAEnv(difficulty='easy')
# Reset to get initial observation
observation, info = env.reset()
# Agent takes an action (provides an answer)
action = "Paris"
observation, reward, terminated, truncated, info = env.step(action)
# Check results
print(f"Reward: {reward}")
print(f"Correct: {info['correct']}")
Using External Datasets (SQuAD, TriviaQA)
from text_qa_env import TextQAEnv
# Use SQuAD dataset with 10,000+ questions
env = TextQAEnv(
difficulty='external',
external_dataset='squad', # or 'squad_v2', 'trivia_qa'
max_questions=1000
)
observation, info = env.reset()
action = "agent's answer"
observation, reward, terminated, truncated, info = env.step(action)
Using the Automated Grader (Required for Hackathon)
from text_qa_env import run_automated_grading
# Define your agent
class MyAgent:
def select_action(self, observation):
# Your agent logic here
return "answer"
# Run automated grading
agent = MyAgent()
report = run_automated_grading(agent, difficulty='easy')
# Results include:
# - Pass/Fail status
# - Accuracy metrics
# - Detailed per-question results
# - Letter grade (A+ to F)
Training an Agent (NOT Required for Round 1)
Note: Agent training is for Round 2. Round 1 focuses on environment quality.
# This is optional - shows the environment can be used for training
from examples.train_agent import train_simple_agent
agent = train_simple_agent(episodes=100, difficulty='easy')
Environment Specification
Observation Space
- Type: Dictionary
question: String - The question to answercontext: String - Context containing the answerquestion_id: Integer - Unique question identifier
Action Space
- Type: String - The agent's answer
Rewards
+1.0: Correct answer (exact match)+0.5: Partial match (contains correct keywords)-0.1: Incorrect answer
Episode Termination
- Episode ends after answering the question
- Maximum 1 question per episode
Grading Criteria (Automated)
- Pass: โฅ70% accuracy OR โฅ85% partial accuracy
- Grades: A+ (90%+), A (80%+), B (70%+), C (60%+), D (50%+), F (<50%)
Datasets
Built-in Questions (33 total)
- Easy (15 questions): Simple factual questions (capitals, famous people, basic science)
- Medium (10 questions): Multi-step reasoning, historical dates, scientific concepts
- Hard (8 questions): Complex inference, advanced science, mathematical theorems
External Datasets (Production-Ready)
- SQuAD: 10,570 questions from Wikipedia paragraphs
- SQuAD v2: Includes unanswerable questions for robustness
- TriviaQA: 95,000 question-answer pairs from trivia sources
Usage:
# SQuAD (recommended for research)
env = TextQAEnv(difficulty='external', external_dataset='squad')
# TriviaQA (larger dataset)
env = TextQAEnv(difficulty='external', external_dataset='trivia_qa', max_questions=1000)
Project Structure
Open-Env/
โโโ text_qa_env/
โ โโโ __init__.py
โ โโโ environment.py # Main Gymnasium environment
โ โโโ dataset.py # Built-in QA questions
โ โโโ external_datasets.py # SQuAD/TriviaQA integration ๐
โ โโโ grader.py # Automated grading system โ
โโโ examples/
โ โโโ basic_usage.py # Simple usage example
โ โโโ train_agent.py # Training script with Q-learning agent
โ โโโ test_grader.py # Grader demonstration
โ โโโ external_dataset_demo.py # SQuAD integration demo ๐
โโโ Dockerfile
โโโ requirements.txt
โโโ setup.py
โโโ README.md
Hackathon Requirements Checklist โ
This environment fully implements all Meta PyTorch Hackathon Round 1 requirements:
- โ Environment (The Playground): TextQAEnv with complete task logic
- โ Observation Space: Clearly defined (question, context, question_id)
- โ Action Space: Text string answers
- โ Reward Function: Multi-tier scoring (+1.0, +0.5, -0.1)
- โ Automated Graders: Programmatic success evaluation (QAGrader)
- โ
OpenEnv/Gymnasium: Full API compliance (
reset,step,render) - โ Error Handling: Never crashes on any action (tested with 7 edge cases)
- โ Docker: Containerized for consistent execution
- โ Documentation: Comprehensive README and examples
- โ Validation: Passes all robustness tests
Round 1 Focus: Environment quality, not agent training!
Contributing
This project was created for the Meta PyTorch Hackathon. Contributions are welcome!
License
MIT License
Author
Built with โค๏ธ for Meta PyTorch Hackathon 2026