MCPcopy Create free account
hub / github.com/abetlen/llama-cpp-python / LlamaProxy

Class LlamaProxy

llama_cpp/server/model.py:14–344  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12
13
14class LlamaProxy:
15 def __init__(self, models: List[ModelSettings]) -> None:
16 assert len(models) > 0, "No models provided!"
17
18 self._model_settings_dict: dict[str, ModelSettings] = {}
19 for model in models:
20 if not model.model_alias:
21 model.model_alias = model.model
22 self._model_settings_dict[model.model_alias] = model
23
24 self._current_model: Optional[llama_cpp.Llama] = None
25 self._current_model_alias: Optional[str] = None
26
27 self._default_model_settings: ModelSettings = models[0]
28 self._default_model_alias: str = self._default_model_settings.model_alias # type: ignore
29
30 # Load default model
31 self._current_model = self.load_llama_from_model_settings(
32 self._default_model_settings
33 )
34 self._current_model_alias = self._default_model_alias
35
36 def __call__(self, model: Optional[str] = None) -> llama_cpp.Llama:
37 if model is None:
38 model = self._default_model_alias
39
40 if model not in self._model_settings_dict:
41 model = self._default_model_alias
42
43 if model == self._current_model_alias:
44 if self._current_model is not None:
45 return self._current_model
46
47 if self._current_model:
48 self._current_model.close()
49 self._current_model = None
50
51 settings = self._model_settings_dict[model]
52 self._current_model = self.load_llama_from_model_settings(settings)
53 self._current_model_alias = model
54 return self._current_model
55
56 def __getitem__(self, model: str):
57 return self._model_settings_dict[model].model_dump()
58
59 def __setitem__(self, model: str, settings: Union[ModelSettings, str, bytes]):
60 if isinstance(settings, (bytes, str)):
61 settings = ModelSettings.model_validate_json(settings)
62 self._model_settings_dict[model] = settings
63
64 def __iter__(self):
65 for model in self._model_settings_dict:
66 yield model
67
68 def free(self):
69 if self._current_model:
70 self._current_model.close()
71 del self._current_model

Callers 1

set_llama_proxyFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…