--- title: Modular GAIA Level-1 Agent Source colorFrom: indigo colorTo: blue sdk: static app_file: index.html pinned: false --- > This free static Space publishes the complete inspectable agent source. Run `python app.py` locally for the Gradio evaluation UI; no paid hosted hardware is required. # Modular GAIA Level-1 Agent Production-oriented Hugging Face Agents Course final assignment. It preserves the official OAuth username and submission payload while separating checkpointed dry-run evaluation, review/reruns, and explicit submission. ## Space configuration Set `HF_TOKEN` as a Space secret. No credentials are stored in source code. Supported variables: - `MODEL_ID` or `GAIA_MODEL_ID` - `HF_PROVIDER` or `HF_INFERENCE_PROVIDER` - `FALLBACK_MODEL_ID` (defaults to `openai/gpt-oss-20b`) and `HF_FALLBACK_PROVIDER` - `GAIA_VISION_MODEL_ID` and `GAIA_ASR_MODEL_ID` - `GAIA_API_URL`, `GAIA_CACHE_DIR`, `GAIA_RESULTS_PATH`, `GAIA_USE_CACHE` - `GAIA_RETRIES`, `GAIA_BACKOFF_SECONDS`, `GAIA_REQUEST_TIMEOUT`, `GAIA_MAX_STEPS` - `GAIA_WORKERS`, `GAIA_MODEL_REQUESTS_PER_MINUTE`, `GAIA_SEARCH_REQUESTS_PER_MINUTE` - `STOCKFISH_PATH` when Stockfish is not on `PATH` - `GAIA_AGENT_CODE_URL` for local submission with a public GitHub/Hugging Face code URL - `GAIA_ALLOW_INLINE_AGENT_CODE=1` to explicitly send a local source bundle instead - `GAIA_LOCAL_MODEL_ID` for an optional OpenAI-compatible local/Ollama fallback - `GAIA_LOCAL_MODEL_URL` (defaults to `http://127.0.0.1:11434/v1`) - `GAIA_PREFER_LOCAL_MODEL=1` to avoid hosted inference calls for text tasks `packages.txt` installs Stockfish in the Space. Chess evaluation fails closed if an engine is unavailable. Keep the Space public so its submitted `agent_code` is visible. ## Local validation and dry-run ```bash python -m pip install -r requirements-dev.txt python -m pytest -q python run_local_eval.py python run_local_eval.py --force --task-id TASK_ID ``` ## Run and submit locally without paid Space hardware The scoring API is public, so evaluation and explicit submission can run locally. Authenticate and expose the CLI token to the process (PowerShell example): ```powershell hf auth login $env:HF_TOKEN = hf auth token --quiet $env:GAIA_AGENT_CODE_URL = "https://github.com/YOUR_NAME/YOUR_PUBLIC_REPO" python app.py ``` `GAIA_AGENT_CODE_URL` is recommended: it satisfies the course's inspectable-code intent without running a hosted Space. If no public repository is available, the current API schema also accepts Python source in `agent_code`; opt into that behavior explicitly: ```powershell $env:GAIA_ALLOW_INLINE_AGENT_CODE = "1" python app.py ``` Inline mode bundles only the declared implementation `.py` files. It never reads `.env`, cached attachments, results, or credentials. In either mode, the app still requires a successful 20-question dry run and a separate click on the submission button. The dry-run CLI cannot submit. The only `/submit` POST is encapsulated by `GaiaClient.submit_answers()` and reached from **Submit Reviewed Complete Run**. Submission requires exactly 20 unique, successful, non-empty answers. ## Architecture - `GaiaClient` exposes `get_questions`, `get_random_question`, `download_task_file`, and `submit_answers`, with typed errors and attachment metadata. - `TaskRouter` selects deterministic file/media/logic/text specialists before inference. - A managed `ToolCallingAgent` performs web, Wikipedia, HTML, and PDF research under a planning `CodeAgent`; only candidate answers leave the evidence record. - YouTube supports captions and scene/interval frame sampling. Audio uses Whisper ASR. - Excel arithmetic, Python stdout, Markdown algebra, text transforms, and Stockfish move selection are deterministic. - `results/results.json` is keyed by task ID and records status, task type, duration, evidence, confidence, and errors after every task. Independent tasks run concurrently; shared model calls are rate-limited and serialized safely.