From b8d09e1f0472aedb1e42a922747e6138d32f4b7d Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Mon, 19 Aug 2024 10:37:49 -0700 Subject: [PATCH] load litellm if model metadata json is present --- aider/llm.py | 2 ++ aider/models.py | 22 ++++++++++++---------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/aider/llm.py b/aider/llm.py index 950f1a29a..c676b89b3 100644 --- a/aider/llm.py +++ b/aider/llm.py @@ -17,6 +17,8 @@ class LazyLiteLLM: _lazy_module = None def __getattr__(self, name): + if name == "_lazy_module": + return super() self._load_litellm() return getattr(self._lazy_module, name) diff --git a/aider/models.py b/aider/models.py index e2520ad74..1339f9bd8 100644 --- a/aider/models.py +++ b/aider/models.py @@ -451,16 +451,17 @@ class Model: self.get_weak_model(weak_model) def get_model_info(self, model): - # Try and do this quickly, without triggering the litellm import - spec = importlib.util.find_spec("litellm") - if spec: - origin = Path(spec.origin) - fname = origin.parent / "model_prices_and_context_window_backup.json" - if fname.exists(): - data = json.loads(fname.read_text()) - info = data.get(model) - if info: - return info + if not litellm._lazy_module: + # Try and do this quickly, without triggering the litellm import + spec = importlib.util.find_spec("litellm") + if spec: + origin = Path(spec.origin) + fname = origin.parent / "model_prices_and_context_window_backup.json" + if fname.exists(): + data = json.loads(fname.read_text()) + info = data.get(model) + if info: + return info # Do it the slow way... try: @@ -670,6 +671,7 @@ def register_litellm_models(model_fnames): try: with open(model_fname, "r") as model_def_file: model_def = json.load(model_def_file) + litellm._load_litellm() litellm.register_model(model_def) except Exception as e: raise Exception(f"Error loading model definition from {model_fname}: {e}")