Source code for gptcache.session

import uuid
from typing import Callable, Optional

from gptcache import cache
from gptcache.manager.data_manager import DataManager
from gptcache.processor.check_hit import check_hit_session
from gptcache.utils.log import gptcache_log


[docs]class Session: """ Session for gptcache. Session can isolate the context of each connection, and can also filter the results after recall, and if not satisfied will re-request rather than return the cache results directly. :param name: the name of the session, defaults to `uuid.uuid4().hex`. :type name: str :param data_manager: the DataManager of the session, defaults to cache.data_manager with the initialized cache. :type data_manager: DataManager :param check_hit_func: a Callable to check the hit, defaults to `processor.check_hit.check_hit_session`,which will not return cached data if you ask the same or similar question in the same session. :type check_hit_func: Callable Example: .. code-block:: python from gptcache import cache from gptcache.session import Session # init gptcache cache.init() cache.set_openai_key() session = Session() from gptcache.adapter import openai # run ChatCompletion model with gptcache on session response = openai.ChatCompletion.create( model='gpt-3.5-turbo', messages=[ { 'role': 'user', 'content': "what's github" }], session=session ) response_content = response['choices'][0]['message']['content'] """ def __init__( self, name: Optional[str] = None, data_manager: Optional[DataManager] = None, check_hit_func: Optional[Callable] = None, ): self._name = uuid.uuid4().hex if not name else name self._data_manager = cache.data_manager if not data_manager else data_manager self.check_hit_func = ( check_hit_session if not check_hit_func else check_hit_func ) @property def name(self): return self._name def __enter__(self): gptcache_log.warning( "The `with` method will delete the session data directly on exit." ) return self def __exit__(self, *_): self.drop()
[docs] def drop(self): """Drop the session and delete all data in the session""" self._data_manager.delete_session(self.name) gptcache_log.info("Deleting data in the session: %s.", self.name)