def __init__()

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()