Spaces:
Sleeping
Sleeping
title: GAIA Agent for Hugging Face Agents Course | |
emoji: 🕵🏻♂️ | |
colorFrom: indigo | |
colorTo: indigo | |
sdk: gradio | |
sdk_version: 5.25.2 | |
app_file: app.py | |
pinned: false | |
hf_oauth: true | |
# optional, default duration is 8 hours/480 minutes. Max duration is 30 days/43200 minutes. | |
hf_oauth_expiration_minutes: 480 | |
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference | |
# GAIA Agent for Hugging Face Agents Course | |
This project implements a powerful intelligent agent using the SmolAgents framework to tackle the GAIA benchmark questions for the Hugging Face Agents course final assessment. | |
## Project Overview | |
The GAIA benchmark consists of challenging questions that require an agent to use various tools, including web search, file processing, and reasoning capabilities. This agent is designed to: | |
1. Receive questions from the GAIA API | |
2. Process and understand the questions | |
3. Use appropriate tools to find answers | |
4. Format and return precise answers | |
## Features | |
- **SmolAgents Integration**: Uses CodeAgent for flexible problem-solving with Python code execution | |
- **Multi-Model Support**: | |
- Compatible with Hugging Face models | |
- OpenAI models (GPT-4o and others) | |
- X.AI's Grok models | |
- Anthropic, Cohere, and Mistral models via LiteLLM | |
- **Enhanced Tool Suite**: | |
- Web search via DuckDuckGo | |
- Python interpreter for code execution | |
- File handling (reading, saving, downloading) | |
- Data analysis for CSV and Excel files | |
- Image processing with OCR capabilities (when available) | |
- **Flexible Environment Configuration**: | |
- Easy setup via environment variables or .env file | |
- Fallback mechanisms for missing dependencies | |
- Support for both local and secure E2B code execution | |
- **Answer Processing**: | |
- Special handling for reversed text questions | |
- Precise answer formatting for benchmark submission | |
- Automatic cleanup of model responses for exact matching | |
- **Interactive UI**: Gradio interface for running the agent and submitting answers | |
## Setup | |
### Prerequisites | |
- Python 3.8+ | |
- Hugging Face account | |
- API keys for your preferred models (HuggingFace, OpenAI, X.AI, etc.) | |
### Installation | |
1. Clone this repository | |
2. Install the required dependencies: | |
```bash | |
pip install -r requirements.txt | |
``` | |
3. Copy the example environment file and add your API keys: | |
```bash | |
cp env.example .env | |
# Edit .env with your API keys and configuration | |
``` | |
### Configuration | |
Configure the agent by setting these environment variables or editing the `.env` file: | |
#### API Keys | |
``` | |
HUGGINGFACEHUB_API_TOKEN=your_huggingface_token_here | |
OPENAI_API_KEY=your_openai_key_here | |
XAI_API_KEY=your_xai_api_key_here # For X.AI/Grok models | |
``` | |
#### Agent Configuration | |
``` | |
AGENT_MODEL_TYPE=OpenAIServerModel # HfApiModel, InferenceClientModel, LiteLLMModel, OpenAIServerModel | |
AGENT_MODEL_ID=gpt-4o # Model ID depends on the model type | |
AGENT_TEMPERATURE=0.2 | |
AGENT_EXECUTOR_TYPE=local # local or e2b for secure execution | |
AGENT_VERBOSE=true # Set to true for detailed logging | |
``` | |
#### Advanced Configuration | |
``` | |
AGENT_PROVIDER=hf-inference # Provider for InferenceClientModel | |
AGENT_TIMEOUT=120 # Timeout in seconds for API calls | |
AGENT_API_BASE=https://api.groq.com/openai/v1 # For X.AI when using OpenAIServerModel | |
``` | |
### Hugging Face Spaces Setup | |
When deploying to Hugging Face Spaces, you need to add your API keys as secrets: | |
1. Go to your Space's Settings → Repository Secrets | |
2. Add the following secrets (add at least one of these API keys): | |
- `HUGGINGFACEHUB_API_TOKEN` - Your Hugging Face API token | |
- `OPENAI_API_KEY` - Your OpenAI API key | |
- `XAI_API_KEY` - Your X.AI/Grok API key | |
3. Add additional configuration secrets as needed: | |
- `AGENT_MODEL_TYPE` - Model type (e.g., "OpenAIServerModel") | |
- `AGENT_MODEL_ID` - Model ID to use (e.g., "gpt-4o") | |
- `AGENT_TEMPERATURE` - Temperature setting (e.g., "0.2") | |
- `AGENT_VERBOSE` - Set to "true" for detailed logging | |
4. For X.AI's API, also set: | |
- `XAI_API_BASE` - The API base URL | |
5. **Important**: If you're using OpenAIServerModel, ensure the requirements.txt includes: | |
``` | |
smolagents[openai] | |
openai | |
``` | |
If the space gives an error about OpenAI modules, rebuild the space after updating requirements.txt. | |
6. After adding all secrets, go to the "Factory" tab in the Space settings and click "Rebuild Space" to apply the changes. | |
 | |
## Usage | |
### Running the Agent | |
Launch the Gradio interface with: | |
```bash | |
python app.py | |
``` | |
Then: | |
1. Log in to your Hugging Face account using the button in the interface | |
2. Click "Run Evaluation & Submit All Answers" | |
### Testing | |
To test the agent with sample questions before running the full evaluation: | |
```bash | |
python test_agent.py | |
``` | |
For more focused testing with specific APIs: | |
```bash | |
python test_groq_api.py # Test X.AI/Groq API integration | |
python test_xai_api.py # Test X.AI API integration | |
``` | |
## Project Structure | |
- `app.py`: Main application with Gradio interface | |
- `core_agent.py`: Agent implementation with SmolAgents framework | |
- `api_integration.py`: Client for interacting with GAIA API | |
- `test_agent.py`: Testing script with sample questions | |
- `test_groq_api.py` & `test_xai_api.py`: API-specific test scripts | |
- `update_groq_key.py`: Utility for updating API keys | |
- `project_planning.md`: Development roadmap and progress tracking | |
- `requirements.txt`: Project dependencies | |
## Tools Implementation | |
The agent includes several custom tools: | |
1. **save_and_read_file**: Save content to a temporary file and return the path | |
2. **download_file_from_url**: Download a file from a URL and save it locally | |
3. **extract_text_from_image**: OCR for extracting text from images (requires pytesseract) | |
4. **analyze_csv_file**: Load and analyze CSV files using pandas | |
5. **analyze_excel_file**: Load and analyze Excel files using pandas | |
## Resources | |
- [GAIA Benchmark Information](https://huggingface.co/spaces/gaia-benchmark/leaderboard) | |
- [SmolAgents Documentation](https://huggingface.co/docs/smolagents/en/index) | |
- [Hugging Face Agents Course](https://huggingface.co/agents-course) | |
## License | |
This project is licensed under the MIT License. |