Feature/Add GET endpoint to query loaded LoRA adapters (#12229)

This commit is contained in:
Chenxi Li
2025-10-28 01:22:00 -07:00
committed by GitHub
parent d85d6dba3b
commit cc7b04a29c
4 changed files with 98 additions and 0 deletions

View File

@@ -1168,6 +1168,8 @@ async def available_models():
"""Show available models. OpenAI-compatible endpoint."""
served_model_names = [_global_state.tokenizer_manager.served_model_name]
model_cards = []
# Add base model
for served_model_name in served_model_names:
model_cards.append(
ModelCard(
@@ -1176,6 +1178,20 @@ async def available_models():
max_model_len=_global_state.tokenizer_manager.model_config.context_len,
)
)
# Add loaded LoRA adapters
if _global_state.tokenizer_manager.server_args.enable_lora:
lora_registry = _global_state.tokenizer_manager.lora_registry
for _, lora_ref in lora_registry.get_all_adapters().items():
model_cards.append(
ModelCard(
id=lora_ref.lora_name,
root=lora_ref.lora_path,
parent=served_model_names[0],
max_model_len=None,
)
)
return ModelList(data=model_cards)

View File

@@ -54,6 +54,7 @@ class ModelCard(BaseModel):
created: int = Field(default_factory=lambda: int(time.time()))
owned_by: str = "sglang"
root: Optional[str] = None
parent: Optional[str] = None
max_model_len: Optional[int] = None

View File

@@ -205,3 +205,12 @@ class LoRARegistry:
Returns the total number of LoRA adapters currently registered.
"""
return len(self._registry)
def get_all_adapters(self) -> Dict[str, LoRARef]:
"""
Returns a dictionary of all registered LoRA adapters.
Returns:
Dict[str, LoRARef]: A dictionary mapping LoRA names to LoRARef objects.
"""
return dict(self._registry)