diff --git a/python/sglang/srt/entrypoints/http_server.py b/python/sglang/srt/entrypoints/http_server.py index 1024370a10c..1f93b475c26 100644 --- a/python/sglang/srt/entrypoints/http_server.py +++ b/python/sglang/srt/entrypoints/http_server.py @@ -561,7 +561,13 @@ def available_models(): served_model_names = [_global_state.tokenizer_manager.served_model_name] model_cards = [] for served_model_name in served_model_names: - model_cards.append(ModelCard(id=served_model_name, root=served_model_name)) + model_cards.append( + ModelCard( + id=served_model_name, + root=served_model_name, + max_model_len=_global_state.tokenizer_manager.model_config.context_len, + ) + ) return ModelList(data=model_cards) diff --git a/python/sglang/srt/openai_api/protocol.py b/python/sglang/srt/openai_api/protocol.py index 60a01766db6..751b8befefa 100644 --- a/python/sglang/srt/openai_api/protocol.py +++ b/python/sglang/srt/openai_api/protocol.py @@ -28,6 +28,7 @@ class ModelCard(BaseModel): created: int = Field(default_factory=lambda: int(time.time())) owned_by: str = "sglang" root: Optional[str] = None + max_model_len: Optional[int] = None class ModelList(BaseModel): diff --git a/test/srt/test_openai_server.py b/test/srt/test_openai_server.py index af2ed20e917..fe6646d6089 100644 --- a/test/srt/test_openai_server.py +++ b/test/srt/test_openai_server.py @@ -542,6 +542,12 @@ def test_response_prefill(self): .startswith('"name": "SmartHome Mini",') ) + def test_model_list(self): + client = openai.Client(api_key=self.api_key, base_url=self.base_url) + models = list(client.models.list()) + assert len(models) == 1 + assert isinstance(getattr(models[0], "max_model_len", None), int) + # ------------------------------------------------------------------------- # EBNF Test Class: TestOpenAIServerEBNF