From 13b82620104bcb455e0d0c9e5e14dcf3f504fdb5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20Grie=C3=9Fhaber?= <griesshaber@hdm-stuttgart.de>
Date: Mon, 19 Aug 2024 14:02:49 +0200
Subject: [PATCH] refactor _call_model_cached function implementation

---
 evoprompt/models.py | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/evoprompt/models.py b/evoprompt/models.py
index 78dd7ed..3eb5925 100644
--- a/evoprompt/models.py
+++ b/evoprompt/models.py
@@ -44,11 +44,16 @@ class LLMModel(ABC):
         self.kwargs = kwargs
 
         # set up caching for model calls
+        self._call_model_cached = None
         if not options.disable_cache:
             cache = Cache(Path(".cache_dir", self.model_cache_key))
-            self._call_model_cached = cache.memoize(typed=True, ignore=[0, "func"])(
-                self._call_model_cached
-            )
+
+            @cache.memoize(typed=True, ignore=["func"])
+            def _call_function(func, *args, **kwargs):
+                # `cache_key` is added to the cache key (e.g., to distinguish between different models), but it is not used in the function
+                return func(*args, **kwargs)
+
+            self._call_model_cached = _call_function
 
     @abstractmethod
     def build_model_input(
@@ -114,16 +119,11 @@ class LLMModel(ABC):
             warnings.warn("Caching is disabled when a grammar is provided.")
             use_cache = False
 
-        if use_cache:
-            # use cached function call
+        if use_cache and self._call_model_cached is not None:
             return self._call_model_cached(model_completion_fn, **kwargs)
         else:
             return model_completion_fn(**kwargs)
 
-    def _call_model_cached(self, func, *args, **kwargs):
-        # `cache_key` is added to the cache key (e.g., to distinguish between different models), but it is not used in the function
-        return func(*args, **kwargs)
-
     @property
     def model_cache_key(self):
         unique_options_key = json.dumps(
-- 
GitLab