# --- Required secrets (fill these in) --- GROQ_API_KEY= TAVILY_API_KEY= # Required when LLM_PROVIDER=gemini (default). Free key: aistudio.google.com GOOGLE_API_KEY= # HF token (read) for fetching task files from the gated GAIA dataset, since the # scoring API's /files endpoint 404s. Accept terms at hf.co/datasets/gaia-benchmark/GAIA HF_TOKEN= # --- LLM provider for text/reasoning + judge nodes --- # "openai_compatible" (freellmapi gateway, best for rate limits), "gemini", "groq". LLM_PROVIDER=gemini GEMINI_TEXT_MODEL=gemini-2.5-flash # Image understanding: "gemini" (best), "groq", or "openai_compatible" VISION_PROVIDER=gemini GEMINI_VISION_MODEL=gemini-2.0-flash GROQ_TEXT_MODEL=llama-3.1-8b-instant # Global pace across all text-LLM calls (req/sec). 0.15 = ~9/min (<10 RPM free). # Ignored when LLM_PROVIDER=openai_compatible (gateway manages its own limits). RATE_LIMIT_RPS=0.15 # --- freellmapi gateway (set LLM_PROVIDER=openai_compatible to use) --- OPENAI_COMPATIBLE_BASE_URL= OPENAI_COMPATIBLE_API_KEY= OPENAI_COMPATIBLE_MODEL=auto # --- Optional: LangSmith tracing (nice for debugging the graph) --- # Set TRACING=true and provide the API key to stream runs to smith.langchain.com. # LangChain/LangGraph pick these up automatically; no code change needed. LANGSMITH_TRACING=false LANGSMITH_API_KEY= LANGSMITH_PROJECT=gaia-agent # LANGSMITH_ENDPOINT=https://api.smith.langchain.com # set to EU host if needed # --- Optional overrides (sane defaults applied if omitted) --- # Groq text/reasoning model used by the agent + judge nodes GROQ_TEXT_MODEL=llama-3.3-70b-versatile # Groq multimodal model used by the describe_image tool GROQ_VISION_MODEL=meta-llama/llama-4-scout-17b-16e-instruct # Groq speech-to-text model used by the transcribe_audio tool GROQ_WHISPER_MODEL=whisper-large-v3 # GAIA scoring API base URL GAIA_API_URL=https://agents-course-unit4-scoring.hf.space # How many times the judge may bounce a wrong answer back to research MAX_JUDGE_RETRIES=2 # Hard cap on the LangGraph step budget per question RECURSION_LIMIT=40 # Per-question wall-clock timeout (seconds); agent returns best-effort on expiry QUESTION_TIMEOUT=180