AgentArena / config.py
smlflg's picture
Initial public upload from Projekte/AgentArena
3b0d6b3 verified
Raw History Blame Contribute Delete
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"))