File size: 3,151 Bytes
08fe068
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d2c906a
 
08fe068
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
"""Non-secret configuration for the GAIA agent.

WHAT LIVES WHERE
- Secrets (Space → Settings → Variables and secrets):
    * HF_TOKEN          — required, for HF Inference Providers
    * SERPER_API_KEY    — required, for web search
- Everything else (model IDs, providers, step limits, tool knobs) lives in
  this file. Edit values here and push — no secret changes needed.

OVERRIDE RULES
Any env var with the same name as a constant below will override the value at
import time. This lets you A/B test from Space secrets without editing code.
"""
from __future__ import annotations

import os


def _env(name: str, default: str) -> str:
    return os.getenv(name, default)


# ---------------------------------------------------------------------------
# LLM that powers the CodeAgent (the "brain")
# ---------------------------------------------------------------------------
# Strong open-source options ranked by GAIA performance (as of 2026):
#   - "deepseek-ai/DeepSeek-V3-0324"        (provider="together")  ← default
#   - "Qwen/Qwen2.5-72B-Instruct"           (provider="auto")
#   - "meta-llama/Llama-3.3-70B-Instruct"   (provider="auto")
#   - "deepseek-ai/DeepSeek-R1-Distill-Llama-70B" (reasoning-tuned)
AGENT_MODEL_ID = _env("AGENT_MODEL_ID", "Qwen/Qwen2.5-72B-Instruct")
AGENT_PROVIDER = _env("AGENT_PROVIDER", "auto")
AGENT_MAX_TOKENS = int(_env("AGENT_MAX_TOKENS", "4096"))

# ---------------------------------------------------------------------------
# Vision-language model (used by `analyze_image`)
# ---------------------------------------------------------------------------
VLM_MODEL_ID = _env("VLM_MODEL_ID", "Qwen/Qwen2.5-VL-72B-Instruct")
VLM_PROVIDER = _env("VLM_PROVIDER", "auto")

# ---------------------------------------------------------------------------
# Speech-to-text model (used by `transcribe_audio`)
# ---------------------------------------------------------------------------
ASR_MODEL_ID = _env("ASR_MODEL_ID", "openai/whisper-large-v3")

# ---------------------------------------------------------------------------
# Agent loop knobs
# ---------------------------------------------------------------------------
# Max reasoning steps before the agent must commit to a final answer.
MAX_STEPS = int(_env("AGENT_MAX_STEPS", "15"))
# How often to interleave a planning step (0 = disabled).
PLANNING_INTERVAL = int(_env("AGENT_PLANNING_INTERVAL", "4"))
# Self-consistency: independent attempts per question. 3 = balanced, 5 = max.
SELF_CONSISTENCY_N = int(_env("GAIA_SELF_CONSISTENCY_N", "3"))

# ---------------------------------------------------------------------------
# Tool defaults
# ---------------------------------------------------------------------------
SEARCH_RESULTS = int(_env("WEB_SEARCH_RESULTS", "10"))
PAGE_MAX_CHARS = int(_env("READ_WEBPAGE_MAX_CHARS", "15000"))
WIKI_SENTENCES = int(_env("WIKI_SENTENCES", "8"))

# ---------------------------------------------------------------------------
# GAIA scoring API
# ---------------------------------------------------------------------------
GAIA_API_URL = _env("GAIA_API_URL", "https://agents-course-unit4-scoring.hf.space")