diff options
author | kqlio67 <kqlio67@users.noreply.github.com> | 2024-10-30 13:10:57 +0100 |
---|---|---|
committer | kqlio67 <kqlio67@users.noreply.github.com> | 2024-10-30 13:10:57 +0100 |
commit | 6e72483617b7e66d08952844e8dce6e096929c26 (patch) | |
tree | 732ac4d180f5acc48b84470529eafc61463beca8 /g4f/models.py | |
parent | feat(g4f/client/client.py): integrate ModelUtils for model retrieval (diff) | |
download | gpt4free-6e72483617b7e66d08952844e8dce6e096929c26.tar gpt4free-6e72483617b7e66d08952844e8dce6e096929c26.tar.gz gpt4free-6e72483617b7e66d08952844e8dce6e096929c26.tar.bz2 gpt4free-6e72483617b7e66d08952844e8dce6e096929c26.tar.lz gpt4free-6e72483617b7e66d08952844e8dce6e096929c26.tar.xz gpt4free-6e72483617b7e66d08952844e8dce6e096929c26.tar.zst gpt4free-6e72483617b7e66d08952844e8dce6e096929c26.zip |
Diffstat (limited to 'g4f/models.py')
-rw-r--r-- | g4f/models.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/g4f/models.py b/g4f/models.py index bea09f28..2378079b 100644 --- a/g4f/models.py +++ b/g4f/models.py @@ -891,6 +891,17 @@ any_dark = Model( ) + +class ModelVersions: + # Global Prefixes for All Models + GLOBAL_PREFIXES = [":latest"] + + # Specific Prefixes for Particular Models + MODEL_SPECIFIC_PREFIXES = { + #frozenset(["gpt-3.5-turbo", "gpt-4"]): [":custom1", ":custom2"] + #frozenset(["gpt-3.5-turbo"]): [":custom"], + } + class ModelUtils: """ Utility class for mapping string identifiers to Model instances. @@ -1163,4 +1174,35 @@ class ModelUtils: 'any-dark': any_dark, } + @classmethod + def get_model(cls, model_name: str) -> Model: + # Checking for specific prefixes + for model_set, specific_prefixes in ModelVersions.MODEL_SPECIFIC_PREFIXES.items(): + for prefix in specific_prefixes: + if model_name.endswith(prefix): + base_name = model_name[:-len(prefix)] + if base_name in model_set: + return cls.convert.get(base_name, None) + + # Check for global prefixes + for prefix in ModelVersions.GLOBAL_PREFIXES: + if model_name.endswith(prefix): + base_name = model_name[:-len(prefix)] + return cls.convert.get(base_name, None) + + # Check without prefix + if model_name in cls.convert: + return cls.convert[model_name] + + raise KeyError(f"Model {model_name} not found") + + @classmethod + def get_available_versions(cls, model_name: str) -> list[str]: + # Obtaining prefixes for a specific model + prefixes = ModelVersions.GLOBAL_PREFIXES.copy() + for model_set, specific_prefixes in ModelVersions.MODEL_SPECIFIC_PREFIXES.items(): + if model_name in model_set: + prefixes.extend(specific_prefixes) + return prefixes + _all_models = list(ModelUtils.convert.keys()) |