@@ -38,6 +38,45 @@ async def model_local_list():
3838 return models
3939
4040
41+ @router .get ("/model/registry_versions" )
42+ @cached (key = "models:registry_versions" , ttl = "1h" , tags = ["models" , "models:registry_versions" , "asset_versions" ])
43+ async def model_registry_versions ():
44+ """List model registry versions as selectable model IDs."""
45+ from transformerlab .services import asset_version_service
46+
47+ groups = await asset_version_service .list_groups ("model" )
48+ versions : list [dict ] = []
49+
50+ for group in groups :
51+ group_id = group .get ("group_id" )
52+ group_name = group .get ("group_name" ) or group_id
53+ if not group_id :
54+ continue
55+
56+ group_versions = await asset_version_service .list_versions ("model" , group_id )
57+ for version in group_versions :
58+ model_id = version .get ("asset_id" )
59+ version_label = version .get ("version_label" )
60+ if not model_id or not version_label :
61+ continue
62+
63+ tag = version .get ("tag" )
64+ tag_suffix = f" ({ tag } )" if tag else ""
65+ versions .append (
66+ {
67+ "model_id" : model_id ,
68+ "name" : f"{ group_name } /{ version_label } { tag_suffix } " ,
69+ "group_id" : group_id ,
70+ "group_name" : group_name ,
71+ "version_label" : version_label ,
72+ "tag" : tag ,
73+ "created_at" : version .get ("created_at" ),
74+ }
75+ )
76+
77+ return versions
78+
79+
4180@router .get ("/model/create" )
4281async def model_local_create (id : str , name : str , json_data = {}):
4382 # Use filesystem instead of database
0 commit comments