Source code for gptcache.similarity_evaluation.time

from datetime import datetime
from typing import Tuple, Dict, Any

from gptcache.adapter.api import _get_eval
from gptcache.similarity_evaluation import SimilarityEvaluation


[docs]class TimeEvaluation(SimilarityEvaluation): """Add time dimension restrictions on the basis of other Evaluation, for example, only use the cache within 1 day from the current time, and filter out the previous cache. :param evaluation: Similarity evaluation, like distance/onnx. :param evaluation_config: Similarity evaluation config. :param time_range: Time range, time unit: s Example: .. code-block:: python import datetime from gptcache.manager.scalar_data.base import CacheData from gptcache.similarity_evaluation import TimeEvaluation evaluation = TimeEvaluation(evaluation="distance", time_range=86400) similarity = eval.evaluation( {}, { "search_result": (3.5, None), "cache_data": CacheData("a", "b", create_on=datetime.datetime.now()), }, ) # 0.5 """ def __init__(self, evaluation: str, evaluation_config=None, time_range: float = 86400.0): if evaluation_config is None: evaluation_config = {} self._eval = _get_eval(evaluation, evaluation_config) self._time_range = time_range
[docs] def evaluation(self, src_dict: Dict[str, Any], cache_dict: Dict[str, Any], **kwargs) -> float: cache_data = cache_dict.get("cache_data", None) if not cache_data or not cache_data.create_on: return self.range()[0] delta_time = datetime.now().timestamp() - cache_data.create_on.timestamp() if delta_time > self._time_range: return self.range()[0] return self._eval.evaluation(src_dict, cache_dict, **kwargs)
[docs] def range(self) -> Tuple[float, float]: return self._eval.range()