Testing-Agent-1 / README_CSV_DEPLOYMENT.md
gauravlochab
chore: change the system from loading to adding the csv for solving the rate limiter error
175e92c
# CSV-First Deployment for Hugging Face Spaces
This document explains how to deploy your Optimus Agent Performance dashboard to Hugging Face Spaces using a CSV-first approach to avoid API rate limiting issues.
## Overview
The CSV-first approach works by:
1. **Local Data Generation**: Run data fetching and preprocessing locally where you have full API access
2. **CSV Export**: Save preprocessed data to CSV files
3. **Space Deployment**: Upload CSV files to your Hugging Face Space
4. **CSV-First Loading**: The Space app prioritizes loading from CSV files over making API calls
## Files Added for CSV-First Deployment
### 1. `load_from_csv.py`
Contains functions to load data from CSV files:
- `load_apr_data_from_csv()` - Loads APR data from CSV
- `load_roi_data_from_csv()` - Loads ROI data from CSV
- `load_statistics_from_csv()` - Loads statistics from CSV
- `check_csv_data_availability()` - Checks which CSV files are available
- `get_data_freshness_info()` - Analyzes how fresh the CSV data is
### 2. `generate_csv_for_space.py`
Interactive script to generate CSV files locally:
- Fetches fresh data from the API
- Applies all preprocessing (including `initial_value_fixer.py`)
- Saves to CSV files ready for Space deployment
- Provides deployment guidance
### 3. Modified `app.py`
Updated visualization functions with CSV-first logic:
- `generate_apr_visualizations()` - Now tries CSV first, falls back to API
- `generate_roi_visualizations()` - Now tries CSV first, falls back to API
- Imports CSV loading functions
- Maintains backward compatibility
## Deployment Workflow
### Step 1: Generate CSV Files Locally
Run the CSV generation script on your local machine:
```bash
python generate_csv_for_space.py
```
This will:
- Check existing CSV files and their freshness
- Fetch fresh data from the API (no rate limits locally)
- Apply preprocessing using `initial_value_fixer.py`
- Save CSV files: `optimus_apr_values.csv`, `optimus_apr_statistics.csv`, `optimus_roi_values.csv`
### Step 2: Upload Files to Hugging Face Space
Upload these files to your Hugging Face Space repository:
- `app.py` (modified with CSV-first logic)
- `load_from_csv.py` (new CSV loading functions)
- `initial_value_fixer.py` (existing preprocessing)
- `fetch_and_preprocess_data.py` (existing data functions)
- `optimus_apr_values.csv` (generated data)
- `optimus_apr_statistics.csv` (generated statistics)
- `optimus_roi_values.csv` (generated data)
### Step 3: Deploy Space
Your Space will now:
1. **Try CSV first**: Load data from uploaded CSV files
2. **Fast loading**: No API calls needed, instant visualization
3. **Fallback**: If CSV files are missing, fall back to API (with rate limits)
4. **Error handling**: Show appropriate messages if both CSV and API fail
## CSV File Structure
### APR Data (`optimus_apr_values.csv`)
```csv
apr,adjusted_apr,timestamp,agent_id,agent_name,is_dummy,metric_type,roi,address
15.5,12.3,2025-06-14 10:30:00,123,Agent_1,False,APR,0.85,0x123...
```
### ROI Data (`optimus_roi_values.csv`)
```csv
roi,timestamp,agent_id,agent_name,is_dummy,metric_type
0.85,2025-06-14 10:30:00,123,Agent_1,False,ROI
```
### Statistics (`optimus_apr_statistics.csv`)
```csv
agent_id,agent_name,total_points,apr_points,avg_apr,avg_adjusted_apr,latest_timestamp
123,Agent_1,100,50,15.5,12.3,2025-06-14 10:30:00
```
## Benefits
### βœ… Advantages
- **No Rate Limits**: Space doesn't make API calls
- **Fast Loading**: Instant visualization from CSV
- **Reliable**: No dependency on external API availability
- **Preprocessed**: Data includes all transformations from `initial_value_fixer.py`
- **Fresh Data**: Update CSV files as needed locally
### ⚠️ Considerations
- **Manual Updates**: Need to regenerate CSV files for fresh data
- **File Size**: CSV files add to Space storage
- **Data Staleness**: CSV data becomes stale over time
## Updating Data
To update your Space with fresh data:
1. **Run locally**: `python generate_csv_for_space.py`
2. **Upload new CSV files** to your Space repository
3. **Space auto-updates** with new data
## Monitoring
### Data Freshness
The app logs data freshness information:
```python
from load_from_csv import get_data_freshness_info
freshness = get_data_freshness_info()
# Shows how old the CSV data is
```
### CSV Availability
Check which CSV files are available:
```python
from load_from_csv import check_csv_data_availability
availability = check_csv_data_availability()
# Shows file status, size, modification date
```
## Troubleshooting
### CSV Files Not Loading
1. Check file names match exactly: `optimus_apr_values.csv`, `optimus_roi_values.csv`
2. Verify CSV files are in the Space root directory
3. Check Space logs for CSV loading errors
### Data Issues
1. Regenerate CSV files locally with fresh API data
2. Verify preprocessing ran correctly in `generate_csv_for_space.py`
3. Check CSV file structure matches expected format
### Fallback to API
If CSV loading fails, the app falls back to API calls:
1. This may trigger rate limits in Hugging Face Spaces
2. Check Space logs for API errors
3. Ensure CSV files are properly uploaded
## Best Practices
1. **Regular Updates**: Run `generate_csv_for_space.py` daily or weekly
2. **Monitor Logs**: Check Space logs for CSV loading status
3. **Backup CSV**: Keep local copies of generated CSV files
4. **Test Locally**: Test CSV loading locally before deploying
5. **Version Control**: Track CSV generation timestamps
## Example Space Configuration
Your Space should include these files:
```
β”œβ”€β”€ app.py # Modified with CSV-first logic
β”œβ”€β”€ load_from_csv.py # CSV loading functions
β”œβ”€β”€ initial_value_fixer.py # Preprocessing logic
β”œβ”€β”€ fetch_and_preprocess_data.py # Data functions
β”œβ”€β”€ optimus_apr_values.csv # Generated APR data
β”œβ”€β”€ optimus_apr_statistics.csv # Generated statistics
β”œβ”€β”€ optimus_roi_values.csv # Generated ROI data
β”œβ”€β”€ requirements.txt # Dependencies
└── README.md # Space documentation
```
This approach ensures your Hugging Face Space runs reliably without hitting API rate limits while maintaining all the preprocessing and visualization features of your application.