Spaces:
Sleeping
Sleeping
| """HuggingFace dataset logging with CommitScheduler for comparison events.""" | |
| import json | |
| import uuid | |
| import logging | |
| from pathlib import Path | |
| from datetime import datetime | |
| from huggingface_hub import CommitScheduler | |
| from src.config import HF_LOG_REPO_ID, HF_LOG_EVERY_MINUTES, HF_TOKEN | |
| logger = logging.getLogger(__name__) | |
| SESSION_ID = uuid.uuid4().hex | |
| scheduler = None | |
| feedback_file = None | |
| if HF_LOG_REPO_ID: | |
| feedback_file = Path("logs") / f"comparisons_{uuid.uuid4().hex}.jsonl" | |
| feedback_folder = feedback_file.parent | |
| feedback_folder.mkdir(parents=True, exist_ok=True) | |
| scheduler = CommitScheduler( | |
| repo_id=HF_LOG_REPO_ID, | |
| repo_type="dataset", | |
| folder_path=feedback_folder, | |
| path_in_repo="data", | |
| every=HF_LOG_EVERY_MINUTES, | |
| token=HF_TOKEN if HF_TOKEN else None, | |
| ) | |
| logger.info("HF comparison logging initialized (repo=%s)", HF_LOG_REPO_ID) | |
| else: | |
| logger.info("HF dataset logging disabled (HF_LOG_REPO_ID not set)") | |
| def log_query_event(payload: dict) -> None: | |
| """Append one JSON log line for CommitScheduler to push to HF Hub.""" | |
| if scheduler is None or feedback_file is None: | |
| return | |
| if "session_id" not in payload: | |
| payload["session_id"] = SESSION_ID | |
| if "timestamp" not in payload: | |
| payload["timestamp"] = datetime.utcnow().isoformat() | |
| try: | |
| with scheduler.lock: | |
| with feedback_file.open("a") as f: | |
| f.write(json.dumps(payload)) | |
| f.write("\n") | |
| except Exception as e: | |
| logger.error("Failed to write comparison log: %s", e) | |