Mizan / src /api /client.py
nmmursit's picture
Refactor codebase structure
bc37111
Raw History Blame Contribute Delete
2.11 kB
"""
API Client Module
Handles communication with the evaluation backend.
"""
import logging
from typing import Optional
import requests
from ..core.config import settings
logger = logging.getLogger(__name__)
class EvaluationApiClient:
"""
Client for evaluation API operations.
Handles submission of evaluation requests to the backend.
"""
def __init__(self):
self.api_url = settings.api.url
self.auth = (settings.api.username, settings.api.password)
self.timeout = settings.api.timeout
def submit_evaluation(
self,
model_name: str,
email: str,
batch_size: int = 32
) -> bool:
"""
Submit an evaluation request to the API.
Args:
model_name: HuggingFace model identifier.
email: Email for notifications.
batch_size: Batch size for evaluation.
Returns:
True if submission was successful.
"""
if not settings.api.is_configured:
logger.error("API not configured - cannot submit evaluation")
return False
try:
payload = {
"model_name": model_name,
"model_repo": model_name.split("/")[0] if "/" in model_name else "unknown",
"batch_size": batch_size,
"email": email,
"model_type": "sentence-transformer"
}
response = requests.post(
f"{self.api_url}/api/mteb/request",
json=payload,
timeout=self.timeout,
auth=self.auth
)
if response.status_code == 200:
logger.info(f"Evaluation submitted successfully for {model_name}")
return True
else:
logger.error(f"API returned status {response.status_code}")
return False
except Exception as e:
logger.error(f"Error submitting evaluation: {e}")
return False