NoeMartinezSanchez
implementacion del primer log
b423380
import json
import os
import logging
import logging.handlers
from datetime import datetime
from pathlib import Path
LOG_DIR = Path("logs")
LOG_FILE = LOG_DIR / "evaluation.jsonl"
MODEL_NAME = "gemma-2b"
def setup_logger():
LOG_DIR.mkdir(parents=True, exist_ok=True)
logger = logging.getLogger("evaluation")
logger.setLevel(logging.INFO)
if not logger.handlers:
file_handler = logging.FileHandler(LOG_FILE, encoding="utf-8")
file_handler.setLevel(logging.INFO)
class JsonLinesFormatter(logging.Formatter):
def format(self, record):
return json.dumps(record.__dict__)
file_handler.setFormatter(JsonLinesFormatter())
logger.addHandler(file_handler)
return logger
def log_evaluation_result(
question: str,
response: str,
retrieved_chunks_ids: list,
ground_truth_chunks_ids: list,
latency_ms: float
):
hit_rate = len(set(retrieved_chunks_ids) & set(ground_truth_chunks_ids)) > 0
log_entry = {
"timestamp": datetime.utcnow().isoformat() + "Z",
"question": question,
"response": response[:500] if response else "",
"retrieved_chunks_ids": retrieved_chunks_ids,
"ground_truth_ids": ground_truth_chunks_ids,
"hit_rate": hit_rate,
"latency_ms": round(latency_ms, 2),
"model_name": MODEL_NAME
}
logger = logging.getLogger("evaluation")
if not logger.handlers:
setup_logger()
logger.info("", extra=log_entry)
return log_entry