From 04eb6062e4c22a471d0a733d5fad8ad517e7c0f2 Mon Sep 17 00:00:00 2001 From: Jon Durbin Date: Thu, 27 Mar 2025 23:23:18 -0400 Subject: [PATCH] Include context length in /v1/models response. (#4809) --- python/sglang/srt/entrypoints/http_server.py | 8 +++++++- python/sglang/srt/openai_api/protocol.py | 1 + test/srt/test_openai_server.py | 6 ++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/python/sglang/srt/entrypoints/http_server.py b/python/sglang/srt/entrypoints/http_server.py index 1024370a1..1f93b475c 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 60a01766d..751b8befe 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 af2ed20e9..fe6646d60 100644 --- a/test/srt/test_openai_server.py +++ b/test/srt/test_openai_server.py @@ -542,6 +542,12 @@ The SmartHome Mini is a compact smart home assistant available in black or white .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