Download config.py from smlflg/AgentArena: direct link, hf CLI and curl.
- Browser
- Download file 2.33 kB
-
https://huggingface.co/smlflg/AgentArena/resolve/main/config.py
- Command line
-
hf download hf://smlflg/AgentArena/config.py
-
curl -L -o config.py https://huggingface.co/smlflg/AgentArena/resolve/main/config.py
2.33 kB
| import os | |
| # Paths | |
| PROJECT_DIR = os.path.dirname(os.path.abspath(__file__)) | |
| TASKS_DIR = os.path.join(PROJECT_DIR, "tasks") | |
| # Docker sandbox defaults | |
| SANDBOX_IMAGE = os.environ.get("ARENA_SANDBOX_IMAGE", "python:3.12-slim") | |
| SANDBOX_NETWORK = os.environ.get("ARENA_SANDBOX_NETWORK", "arena-net") | |
| SANDBOX_MEMORY_LIMIT = os.environ.get("ARENA_SANDBOX_MEMORY", "2g") | |
| # CLI paths | |
| CLAUDE_CLI_PATH = os.environ.get("CLAUDE_CLI_PATH", "claude") | |
| AIDER_CLI_PATH = os.environ.get("AIDER_CLI_PATH", "aider") | |
| CODEX_CLI_PATH = os.environ.get("CODEX_CLI_PATH", "codex") | |
| # Anthropic pricing (per 1M tokens) — March 2026 | |
| ANTHROPIC_PRICING = { | |
| "claude-opus-4-6": (5.00, 6.25, 0.50, 25.0), | |
| "claude-sonnet-4-6": (3.00, 3.75, 0.30, 15.0), | |
| "claude-haiku-4-5-20251001": (1.00, 1.25, 0.10, 5.0), | |
| } | |
| DEFAULT_PRICING = (3.00, 3.75, 0.30, 15.0) # Sonnet as default | |
| # OpenAI pricing (per 1M tokens): (input, cache_write, cache_read, output) | |
| OPENAI_PRICING = { | |
| "gpt-4o": (2.50, 0, 0, 10.0), | |
| "o3": (2.00, 0, 0, 8.0), | |
| "o4-mini": (1.10, 0, 0, 4.40), | |
| } | |
| # Aider default model — uses MiniMax via litellm (cheapest available) | |
| AIDER_DEFAULT_MODEL = os.environ.get("AIDER_MODEL", "openai/MiniMax-M2.5") | |
| # MiniMax settings | |
| MINIMAX_BASE_URL = "https://api.minimax.io/v1" | |
| MINIMAX_PRICING = { | |
| "MiniMax-M2.5": (0.05, 0, 0, 0.05), # ~$0.05/1M tokens (input, cache_w, cache_r, output) | |
| } | |
| # Unified pricing registry (all providers) | |
| ALL_PRICING = {} | |
| ALL_PRICING.update(ANTHROPIC_PRICING) | |
| ALL_PRICING.update(OPENAI_PRICING) | |
| ALL_PRICING.update(MINIMAX_PRICING) | |
| def get_pricing(model_id: str) -> tuple: | |
| """Look up pricing rates for a model. Returns (input, cache_write, cache_read, output) per 1M tokens.""" | |
| if model_id in ALL_PRICING: | |
| return ALL_PRICING[model_id] | |
| # Strip provider prefix (e.g., "openai/MiniMax-M2.5" -> "MiniMax-M2.5") | |
| short = model_id.split("/")[-1] if "/" in model_id else model_id | |
| if short in ALL_PRICING: | |
| return ALL_PRICING[short] | |
| # Case-insensitive fallback | |
| lower = short.lower() | |
| for key, val in ALL_PRICING.items(): | |
| if key.lower() == lower: | |
| return val | |
| return DEFAULT_PRICING | |
| # Pass@k defaults | |
| DEFAULT_K = 3 | |
| MAX_K = 10 | |
| # Server | |
| HOST = os.environ.get("ARENA_HOST", "127.0.0.1") | |
| PORT = int(os.environ.get("ARENA_PORT", "8420")) | |