diff --git a/python/qianfan/resources/llm/base.py b/python/qianfan/resources/llm/base.py index 3c66dde5..db6e101e 100644 --- a/python/qianfan/resources/llm/base.py +++ b/python/qianfan/resources/llm/base.py @@ -179,7 +179,20 @@ def access_token(self) -> str: """ return self._real.access_token() - def models(self) -> Set[str]: + @utils.class_or_instancemethod + def models( + self_or_cls, + /, + version: Optional[Literal["1", "2", 1, 2]] = None, + *args: Any, + **kwargs: Any, + ) -> Set[str]: + if version is not None: + return self_or_cls._real_base(str(version)).models() + if isinstance(self_or_cls, type): + cls = self_or_cls + return cls._real_base(version="1").models() + self = self_or_cls return self._real.models() def get_model_info(self, model: str) -> QfLLMInfo: diff --git a/python/qianfan/utils/utils.py b/python/qianfan/utils/utils.py index e46c3952..37422e7c 100644 --- a/python/qianfan/utils/utils.py +++ b/python/qianfan/utils/utils.py @@ -239,3 +239,9 @@ def get_ip_address() -> str: return "127.0.0.1" return s.getsockname()[0] # type: ignore + + +class class_or_instancemethod(classmethod): + def __get__(self, instance: _T, type_: Optional[Type[_T]] = None, /) -> Callable: + descr_get = super().__get__ if instance is None else self.__func__.__get__ + return descr_get(instance, type_)