in generate/evaluate.py [0:0]
def __init__(self, org_id: str, model_id: str, api_base: Optional[str] = None, subset: Optional[str] = None,
num_generations: int = 50, num_retries: int = 10,
concurrency: int = 10, num_problems: Optional[int] = None,
last_subtask: bool = False, dry_run: bool = False,
override: bool = False, model_postfix: Optional[str] = None,
revision: Optional[str] = None, timeout: Optional[int] = 600,
use_requests: bool = False, max_tokens: Optional[int] = None):
self.org_id = org_id
self.model_id = model_id
self.api_base = api_base
self.subset = subset
self.num_generations = num_generations
self.num_retries = num_retries
self.concurrency = concurrency
self.num_problems = num_problems
self.last_subtask = last_subtask
self.dry_run = dry_run
self.override = override
self.revision = revision
# Create organization and model directories
self.timeout = timeout
self.use_litellm = not use_requests
self.max_tokens = max_tokens
# Tracking totals
self.total_prompt_tokens = 0
self.total_completion_tokens = 0
self.total_cost = 0.0
self.model_postfix = model_postfix
# Semaphore for controlling concurrency
self._semaphore = asyncio.Semaphore(concurrency)
# HTTP session for direct API calls when not using litellm
self._session = None
if self.api_base:
logger.info(f"Using API base: {self.api_base}")
if not self.use_litellm:
logger.info("Using direct asyncio requests instead of LiteLLM")
if dry_run:
logger.warning("Running in dry-run mode - no actual LLM calls will be made")
# Create results directory
self.model_dir = Path("results") / self.get_model_name()
self.model_dir.mkdir(parents=True, exist_ok=True)
# File path for the single JSONL file
self.results_file = self.model_dir / "results.jsonl"
# Lock for file access
self._file_lock = asyncio.Lock()