2424import json
2525import logging
2626from aixplain .modules .model import Model
27- from aixplain .enums import Function , Language , OwnershipType , Supplier
27+ from aixplain .enums import Function , Language , OwnershipType , Supplier , SortBy , SortOrder
2828from aixplain .utils import config
2929from aixplain .utils .file_utils import _request_with_retry
3030from urllib .parse import urljoin
@@ -130,6 +130,8 @@ def _get_assets_from_page(
130130 target_languages : Union [Language , List [Language ]],
131131 is_finetunable : bool = None ,
132132 ownership : Optional [Tuple [OwnershipType , List [OwnershipType ]]] = None ,
133+ sort_by : Optional [SortBy ] = None ,
134+ sort_order : SortOrder = SortOrder .ASCENDING ,
133135 ) -> List [Model ]:
134136 try :
135137 url = urljoin (cls .backend_url , f"sdk/models/paginate" )
@@ -146,6 +148,7 @@ def _get_assets_from_page(
146148 if isinstance (ownership , OwnershipType ) is True :
147149 ownership = [ownership ]
148150 filter_params ["ownership" ] = [ownership_ .value for ownership_ in ownership ]
151+
149152 lang_filter_params = []
150153 if source_languages is not None :
151154 if isinstance (source_languages , Language ):
@@ -162,6 +165,8 @@ def _get_assets_from_page(
162165 if function == Function .TRANSLATION :
163166 code = "targetlanguage"
164167 lang_filter_params .append ({"code" : code , "value" : target_languages [0 ].value ["language" ]})
168+ if sort_by is not None :
169+ filter_params ["sort" ] = [{"dir" : sort_order .value , "field" : sort_by .value }]
165170 if len (lang_filter_params ) != 0 :
166171 filter_params ["ioFilter" ] = lang_filter_params
167172 if cls .aixplain_key != "" :
@@ -191,6 +196,8 @@ def list(
191196 target_languages : Optional [Union [Language , List [Language ]]] = None ,
192197 is_finetunable : Optional [bool ] = None ,
193198 ownership : Optional [Tuple [OwnershipType , List [OwnershipType ]]] = None ,
199+ sort_by : Optional [SortBy ] = None ,
200+ sort_order : SortOrder = SortOrder .ASCENDING ,
194201 page_number : int = 0 ,
195202 page_size : int = 20 ,
196203 ) -> List [Model ]:
@@ -202,6 +209,7 @@ def list(
202209 target_languages (Optional[Union[Language, List[Language]]], optional): language filter of output data. Defaults to None.
203210 is_finetunable (Optional[bool], optional): can be finetuned or not. Defaults to None.
204211 ownership (Optional[Tuple[OwnershipType, List[OwnershipType]]], optional): Ownership filters (e.g. SUBSCRIBED, OWNER). Defaults to None.
212+ sort_by (Optional[SortBy], optional): sort the retrived models by a specific attribute,
205213 page_number (int, optional): page number. Defaults to 0.
206214 page_size (int, optional): page size. Defaults to 20.
207215
@@ -219,6 +227,8 @@ def list(
219227 target_languages ,
220228 is_finetunable ,
221229 ownership ,
230+ sort_by ,
231+ sort_order ,
222232 )
223233 return {
224234 "results" : models ,
0 commit comments