Skip to content

Commit 81de271

Browse files
feat(api): point models.list() to /v1/openai/v1/models
step towards openai compatibility of models endpoint
1 parent 4b8ce4a commit 81de271

27 files changed

+689
-45
lines changed

.stats.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 111
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/llamastack%2Fllama-stack-client-35c6569e5e9fcc85084c9728eb7fc7c5908297fcc77043d621d25de3c850a990.yml
3-
openapi_spec_hash: 0f95bbeee16f3205d36ec34cfa62c711
4-
config_hash: ef275cc002a89629459fd73d0cf9cba9
1+
configured_endpoints: 112
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/llamastack%2Fllama-stack-client-a9f69d4a5f5d9bf957497cac83fdad1f72c8a44614098447762c53883e8bd987.yml
3+
openapi_spec_hash: 75de5bdff8e70591d6033b609fc24e5d
4+
config_hash: 34558d5f6e265184d712d43e231eb693

api.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -306,15 +306,21 @@ from llama_stack_client.types import ListModelsResponse, Model, ModelListRespons
306306
Methods:
307307

308308
- <code title="get /v1/models/{model_id}">client.models.<a href="./src/llama_stack_client/resources/models/models.py">retrieve</a>(model_id) -> <a href="./src/llama_stack_client/types/model.py">Model</a></code>
309-
- <code title="get /v1/models">client.models.<a href="./src/llama_stack_client/resources/models/models.py">list</a>() -> <a href="./src/llama_stack_client/types/model_list_response.py">ModelListResponse</a></code>
309+
- <code title="get /v1/openai/v1/models">client.models.<a href="./src/llama_stack_client/resources/models/models.py">list</a>() -> <a href="./src/llama_stack_client/types/model_list_response.py">ModelListResponse</a></code>
310310
- <code title="post /v1/models">client.models.<a href="./src/llama_stack_client/resources/models/models.py">register</a>(\*\*<a href="src/llama_stack_client/types/model_register_params.py">params</a>) -> <a href="./src/llama_stack_client/types/model.py">Model</a></code>
311311
- <code title="delete /v1/models/{model_id}">client.models.<a href="./src/llama_stack_client/resources/models/models.py">unregister</a>(model_id) -> None</code>
312312

313313
## OpenAI
314314

315+
Types:
316+
317+
```python
318+
from llama_stack_client.types.models import OpenAIListResponse
319+
```
320+
315321
Methods:
316322

317-
- <code title="get /v1/models">client.models.openai.<a href="./src/llama_stack_client/resources/models/openai.py">list</a>() -> <a href="./src/llama_stack_client/types/model_list_response.py">ModelListResponse</a></code>
323+
- <code title="get /v1/models">client.models.openai.<a href="./src/llama_stack_client/resources/models/openai.py">list</a>() -> <a href="./src/llama_stack_client/types/models/openai_list_response.py">OpenAIListResponse</a></code>
318324

319325
# Providers
320326

@@ -339,7 +345,7 @@ from llama_stack_client.types import ListRoutesResponse, RouteListResponse
339345

340346
Methods:
341347

342-
- <code title="get /v1/inspect/routes">client.routes.<a href="./src/llama_stack_client/resources/routes.py">list</a>() -> <a href="./src/llama_stack_client/types/route_list_response.py">RouteListResponse</a></code>
348+
- <code title="get /v1/inspect/routes">client.routes.<a href="./src/llama_stack_client/resources/routes.py">list</a>(\*\*<a href="src/llama_stack_client/types/route_list_params.py">params</a>) -> <a href="./src/llama_stack_client/types/route_list_response.py">RouteListResponse</a></code>
343349

344350
# Moderations
345351

src/llama_stack_client/resources/models/models.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,9 @@ def list(
108108
extra_body: Body | None = None,
109109
timeout: float | httpx.Timeout | None | NotGiven = not_given,
110110
) -> ModelListResponse:
111-
"""List all models."""
111+
"""List models using the OpenAI API."""
112112
return self._get(
113-
"/v1/models",
113+
"/v1/openai/v1/models",
114114
options=make_request_options(
115115
extra_headers=extra_headers,
116116
extra_query=extra_query,
@@ -281,9 +281,9 @@ async def list(
281281
extra_body: Body | None = None,
282282
timeout: float | httpx.Timeout | None | NotGiven = not_given,
283283
) -> ModelListResponse:
284-
"""List all models."""
284+
"""List models using the OpenAI API."""
285285
return await self._get(
286-
"/v1/models",
286+
"/v1/openai/v1/models",
287287
options=make_request_options(
288288
extra_headers=extra_headers,
289289
extra_query=extra_query,

src/llama_stack_client/resources/models/openai.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
)
2424
from ..._wrappers import DataWrapper
2525
from ..._base_client import make_request_options
26-
from ...types.model_list_response import ModelListResponse
26+
from ...types.models.openai_list_response import OpenAIListResponse
2727

2828
__all__ = ["OpenAIResource", "AsyncOpenAIResource"]
2929

@@ -57,7 +57,7 @@ def list(
5757
extra_query: Query | None = None,
5858
extra_body: Body | None = None,
5959
timeout: float | httpx.Timeout | None | NotGiven = not_given,
60-
) -> ModelListResponse:
60+
) -> OpenAIListResponse:
6161
"""List all models."""
6262
return self._get(
6363
"/v1/models",
@@ -66,9 +66,9 @@ def list(
6666
extra_query=extra_query,
6767
extra_body=extra_body,
6868
timeout=timeout,
69-
post_parser=DataWrapper[ModelListResponse]._unwrapper,
69+
post_parser=DataWrapper[OpenAIListResponse]._unwrapper,
7070
),
71-
cast_to=cast(Type[ModelListResponse], DataWrapper[ModelListResponse]),
71+
cast_to=cast(Type[OpenAIListResponse], DataWrapper[OpenAIListResponse]),
7272
)
7373

7474

@@ -101,7 +101,7 @@ async def list(
101101
extra_query: Query | None = None,
102102
extra_body: Body | None = None,
103103
timeout: float | httpx.Timeout | None | NotGiven = not_given,
104-
) -> ModelListResponse:
104+
) -> OpenAIListResponse:
105105
"""List all models."""
106106
return await self._get(
107107
"/v1/models",
@@ -110,9 +110,9 @@ async def list(
110110
extra_query=extra_query,
111111
extra_body=extra_body,
112112
timeout=timeout,
113-
post_parser=DataWrapper[ModelListResponse]._unwrapper,
113+
post_parser=DataWrapper[OpenAIListResponse]._unwrapper,
114114
),
115-
cast_to=cast(Type[ModelListResponse], DataWrapper[ModelListResponse]),
115+
cast_to=cast(Type[OpenAIListResponse], DataWrapper[OpenAIListResponse]),
116116
)
117117

118118

src/llama_stack_client/resources/responses/responses.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ def create(
7878
instructions: str | Omit = omit,
7979
max_infer_iters: int | Omit = omit,
8080
previous_response_id: str | Omit = omit,
81+
prompt: response_create_params.Prompt | Omit = omit,
8182
store: bool | Omit = omit,
8283
stream: Literal[False] | Omit = omit,
8384
temperature: float | Omit = omit,
@@ -108,6 +109,8 @@ def create(
108109
response. This can be used to easily fork-off new responses from existing
109110
responses.
110111
112+
prompt: (Optional) Prompt object with ID, version, and variables.
113+
111114
text: Text response configuration for OpenAI responses.
112115
113116
extra_headers: Send extra headers
@@ -132,6 +135,7 @@ def create(
132135
instructions: str | Omit = omit,
133136
max_infer_iters: int | Omit = omit,
134137
previous_response_id: str | Omit = omit,
138+
prompt: response_create_params.Prompt | Omit = omit,
135139
store: bool | Omit = omit,
136140
temperature: float | Omit = omit,
137141
text: response_create_params.Text | Omit = omit,
@@ -161,6 +165,8 @@ def create(
161165
response. This can be used to easily fork-off new responses from existing
162166
responses.
163167
168+
prompt: (Optional) Prompt object with ID, version, and variables.
169+
164170
text: Text response configuration for OpenAI responses.
165171
166172
extra_headers: Send extra headers
@@ -185,6 +191,7 @@ def create(
185191
instructions: str | Omit = omit,
186192
max_infer_iters: int | Omit = omit,
187193
previous_response_id: str | Omit = omit,
194+
prompt: response_create_params.Prompt | Omit = omit,
188195
store: bool | Omit = omit,
189196
temperature: float | Omit = omit,
190197
text: response_create_params.Text | Omit = omit,
@@ -214,6 +221,8 @@ def create(
214221
response. This can be used to easily fork-off new responses from existing
215222
responses.
216223
224+
prompt: (Optional) Prompt object with ID, version, and variables.
225+
217226
text: Text response configuration for OpenAI responses.
218227
219228
extra_headers: Send extra headers
@@ -237,6 +246,7 @@ def create(
237246
instructions: str | Omit = omit,
238247
max_infer_iters: int | Omit = omit,
239248
previous_response_id: str | Omit = omit,
249+
prompt: response_create_params.Prompt | Omit = omit,
240250
store: bool | Omit = omit,
241251
stream: Literal[False] | Literal[True] | Omit = omit,
242252
temperature: float | Omit = omit,
@@ -260,6 +270,7 @@ def create(
260270
"instructions": instructions,
261271
"max_infer_iters": max_infer_iters,
262272
"previous_response_id": previous_response_id,
273+
"prompt": prompt,
263274
"store": store,
264275
"stream": stream,
265276
"temperature": temperature,
@@ -435,6 +446,7 @@ async def create(
435446
instructions: str | Omit = omit,
436447
max_infer_iters: int | Omit = omit,
437448
previous_response_id: str | Omit = omit,
449+
prompt: response_create_params.Prompt | Omit = omit,
438450
store: bool | Omit = omit,
439451
stream: Literal[False] | Omit = omit,
440452
temperature: float | Omit = omit,
@@ -465,6 +477,8 @@ async def create(
465477
response. This can be used to easily fork-off new responses from existing
466478
responses.
467479
480+
prompt: (Optional) Prompt object with ID, version, and variables.
481+
468482
text: Text response configuration for OpenAI responses.
469483
470484
extra_headers: Send extra headers
@@ -489,6 +503,7 @@ async def create(
489503
instructions: str | Omit = omit,
490504
max_infer_iters: int | Omit = omit,
491505
previous_response_id: str | Omit = omit,
506+
prompt: response_create_params.Prompt | Omit = omit,
492507
store: bool | Omit = omit,
493508
temperature: float | Omit = omit,
494509
text: response_create_params.Text | Omit = omit,
@@ -518,6 +533,8 @@ async def create(
518533
response. This can be used to easily fork-off new responses from existing
519534
responses.
520535
536+
prompt: (Optional) Prompt object with ID, version, and variables.
537+
521538
text: Text response configuration for OpenAI responses.
522539
523540
extra_headers: Send extra headers
@@ -542,6 +559,7 @@ async def create(
542559
instructions: str | Omit = omit,
543560
max_infer_iters: int | Omit = omit,
544561
previous_response_id: str | Omit = omit,
562+
prompt: response_create_params.Prompt | Omit = omit,
545563
store: bool | Omit = omit,
546564
temperature: float | Omit = omit,
547565
text: response_create_params.Text | Omit = omit,
@@ -571,6 +589,8 @@ async def create(
571589
response. This can be used to easily fork-off new responses from existing
572590
responses.
573591
592+
prompt: (Optional) Prompt object with ID, version, and variables.
593+
574594
text: Text response configuration for OpenAI responses.
575595
576596
extra_headers: Send extra headers
@@ -594,6 +614,7 @@ async def create(
594614
instructions: str | Omit = omit,
595615
max_infer_iters: int | Omit = omit,
596616
previous_response_id: str | Omit = omit,
617+
prompt: response_create_params.Prompt | Omit = omit,
597618
store: bool | Omit = omit,
598619
stream: Literal[False] | Literal[True] | Omit = omit,
599620
temperature: float | Omit = omit,
@@ -617,6 +638,7 @@ async def create(
617638
"instructions": instructions,
618639
"max_infer_iters": max_infer_iters,
619640
"previous_response_id": previous_response_id,
641+
"prompt": prompt,
620642
"store": store,
621643
"stream": stream,
622644
"temperature": temperature,

src/llama_stack_client/resources/routes.py

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,13 @@
99
from __future__ import annotations
1010

1111
from typing import Type, cast
12+
from typing_extensions import Literal
1213

1314
import httpx
1415

15-
from .._types import Body, Query, Headers, NotGiven, not_given
16+
from ..types import route_list_params
17+
from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
18+
from .._utils import maybe_transform, async_maybe_transform
1619
from .._compat import cached_property
1720
from .._resource import SyncAPIResource, AsyncAPIResource
1821
from .._response import (
@@ -51,6 +54,7 @@ def with_streaming_response(self) -> RoutesResourceWithStreamingResponse:
5154
def list(
5255
self,
5356
*,
57+
api_filter: Literal["v1", "v1alpha", "v1beta", "deprecated"] | Omit = omit,
5458
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
5559
# The extra values given here take precedence over values defined on the client or passed to this method.
5660
extra_headers: Headers | None = None,
@@ -62,6 +66,20 @@ def list(
6266
6367
List all available API routes with their methods and implementing
6468
providers.
69+
70+
Args:
71+
api_filter: Optional filter to control which routes are returned. Can be an API level ('v1',
72+
'v1alpha', 'v1beta') to show non-deprecated routes at that level, or
73+
'deprecated' to show deprecated routes across all levels. If not specified,
74+
returns only non-deprecated v1 routes.
75+
76+
extra_headers: Send extra headers
77+
78+
extra_query: Add additional query parameters to the request
79+
80+
extra_body: Add additional JSON properties to the request
81+
82+
timeout: Override the client-level default timeout for this request, in seconds
6583
"""
6684
return self._get(
6785
"/v1/inspect/routes",
@@ -70,6 +88,7 @@ def list(
7088
extra_query=extra_query,
7189
extra_body=extra_body,
7290
timeout=timeout,
91+
query=maybe_transform({"api_filter": api_filter}, route_list_params.RouteListParams),
7392
post_parser=DataWrapper[RouteListResponse]._unwrapper,
7493
),
7594
cast_to=cast(Type[RouteListResponse], DataWrapper[RouteListResponse]),
@@ -99,6 +118,7 @@ def with_streaming_response(self) -> AsyncRoutesResourceWithStreamingResponse:
99118
async def list(
100119
self,
101120
*,
121+
api_filter: Literal["v1", "v1alpha", "v1beta", "deprecated"] | Omit = omit,
102122
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
103123
# The extra values given here take precedence over values defined on the client or passed to this method.
104124
extra_headers: Headers | None = None,
@@ -110,6 +130,20 @@ async def list(
110130
111131
List all available API routes with their methods and implementing
112132
providers.
133+
134+
Args:
135+
api_filter: Optional filter to control which routes are returned. Can be an API level ('v1',
136+
'v1alpha', 'v1beta') to show non-deprecated routes at that level, or
137+
'deprecated' to show deprecated routes across all levels. If not specified,
138+
returns only non-deprecated v1 routes.
139+
140+
extra_headers: Send extra headers
141+
142+
extra_query: Add additional query parameters to the request
143+
144+
extra_body: Add additional JSON properties to the request
145+
146+
timeout: Override the client-level default timeout for this request, in seconds
113147
"""
114148
return await self._get(
115149
"/v1/inspect/routes",
@@ -118,6 +152,7 @@ async def list(
118152
extra_query=extra_query,
119153
extra_body=extra_body,
120154
timeout=timeout,
155+
query=await async_maybe_transform({"api_filter": api_filter}, route_list_params.RouteListParams),
121156
post_parser=DataWrapper[RouteListResponse]._unwrapper,
122157
),
123158
cast_to=cast(Type[RouteListResponse], DataWrapper[RouteListResponse]),

src/llama_stack_client/types/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
from .response_object import ResponseObject as ResponseObject
4545
from .file_list_params import FileListParams as FileListParams
4646
from .tool_list_params import ToolListParams as ToolListParams
47+
from .route_list_params import RouteListParams as RouteListParams
4748
from .scoring_fn_params import ScoringFnParams as ScoringFnParams
4849
from .file_create_params import FileCreateParams as FileCreateParams
4950
from .tool_list_response import ToolListResponse as ToolListResponse

src/llama_stack_client/types/conversation_create_params.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"ItemOpenAIResponseMessageContentUnionMember1",
2121
"ItemOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageContentText",
2222
"ItemOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageContentImage",
23+
"ItemOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageContentFile",
2324
"ItemOpenAIResponseMessageContentUnionMember2",
2425
"ItemOpenAIResponseMessageContentUnionMember2OpenAIResponseOutputMessageContentOutputText",
2526
"ItemOpenAIResponseMessageContentUnionMember2OpenAIResponseOutputMessageContentOutputTextAnnotation",
@@ -64,13 +65,34 @@ class ItemOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageCont
6465
type: Required[Literal["input_image"]]
6566
"""Content type identifier, always "input_image" """
6667

68+
file_id: str
69+
"""(Optional) The ID of the file to be sent to the model."""
70+
6771
image_url: str
6872
"""(Optional) URL of the image content"""
6973

7074

75+
class ItemOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageContentFile(TypedDict, total=False):
76+
type: Required[Literal["input_file"]]
77+
"""The type of the input item. Always `input_file`."""
78+
79+
file_data: str
80+
"""The data of the file to be sent to the model."""
81+
82+
file_id: str
83+
"""(Optional) The ID of the file to be sent to the model."""
84+
85+
file_url: str
86+
"""The URL of the file to be sent to the model."""
87+
88+
filename: str
89+
"""The name of the file to be sent to the model."""
90+
91+
7192
ItemOpenAIResponseMessageContentUnionMember1: TypeAlias = Union[
7293
ItemOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageContentText,
7394
ItemOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageContentImage,
95+
ItemOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageContentFile,
7496
]
7597

7698

0 commit comments

Comments
 (0)