main
1# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
3from __future__ import annotations
4
5import httpx
6
7from .. import _legacy_response
8from .._types import Body, Query, Headers, NotGiven, not_given
9from .._compat import cached_property
10from .._resource import SyncAPIResource, AsyncAPIResource
11from .._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
12from ..pagination import SyncPage, AsyncPage
13from ..types.model import Model
14from .._base_client import (
15 AsyncPaginator,
16 make_request_options,
17)
18from ..types.model_deleted import ModelDeleted
19
20__all__ = ["Models", "AsyncModels"]
21
22
23class Models(SyncAPIResource):
24 @cached_property
25 def with_raw_response(self) -> ModelsWithRawResponse:
26 """
27 This property can be used as a prefix for any HTTP method call to return
28 the raw response object instead of the parsed content.
29
30 For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
31 """
32 return ModelsWithRawResponse(self)
33
34 @cached_property
35 def with_streaming_response(self) -> ModelsWithStreamingResponse:
36 """
37 An alternative to `.with_raw_response` that doesn't eagerly read the response body.
38
39 For more information, see https://www.github.com/openai/openai-python#with_streaming_response
40 """
41 return ModelsWithStreamingResponse(self)
42
43 def retrieve(
44 self,
45 model: str,
46 *,
47 # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
48 # The extra values given here take precedence over values defined on the client or passed to this method.
49 extra_headers: Headers | None = None,
50 extra_query: Query | None = None,
51 extra_body: Body | None = None,
52 timeout: float | httpx.Timeout | None | NotGiven = not_given,
53 ) -> Model:
54 """
55 Retrieves a model instance, providing basic information about the model such as
56 the owner and permissioning.
57
58 Args:
59 extra_headers: Send extra headers
60
61 extra_query: Add additional query parameters to the request
62
63 extra_body: Add additional JSON properties to the request
64
65 timeout: Override the client-level default timeout for this request, in seconds
66 """
67 if not model:
68 raise ValueError(f"Expected a non-empty value for `model` but received {model!r}")
69 return self._get(
70 f"/models/{model}",
71 options=make_request_options(
72 extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
73 ),
74 cast_to=Model,
75 )
76
77 def list(
78 self,
79 *,
80 # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
81 # The extra values given here take precedence over values defined on the client or passed to this method.
82 extra_headers: Headers | None = None,
83 extra_query: Query | None = None,
84 extra_body: Body | None = None,
85 timeout: float | httpx.Timeout | None | NotGiven = not_given,
86 ) -> SyncPage[Model]:
87 """
88 Lists the currently available models, and provides basic information about each
89 one such as the owner and availability.
90 """
91 return self._get_api_list(
92 "/models",
93 page=SyncPage[Model],
94 options=make_request_options(
95 extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
96 ),
97 model=Model,
98 )
99
100 def delete(
101 self,
102 model: str,
103 *,
104 # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
105 # The extra values given here take precedence over values defined on the client or passed to this method.
106 extra_headers: Headers | None = None,
107 extra_query: Query | None = None,
108 extra_body: Body | None = None,
109 timeout: float | httpx.Timeout | None | NotGiven = not_given,
110 ) -> ModelDeleted:
111 """Delete a fine-tuned model.
112
113 You must have the Owner role in your organization to
114 delete a model.
115
116 Args:
117 extra_headers: Send extra headers
118
119 extra_query: Add additional query parameters to the request
120
121 extra_body: Add additional JSON properties to the request
122
123 timeout: Override the client-level default timeout for this request, in seconds
124 """
125 if not model:
126 raise ValueError(f"Expected a non-empty value for `model` but received {model!r}")
127 return self._delete(
128 f"/models/{model}",
129 options=make_request_options(
130 extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
131 ),
132 cast_to=ModelDeleted,
133 )
134
135
136class AsyncModels(AsyncAPIResource):
137 @cached_property
138 def with_raw_response(self) -> AsyncModelsWithRawResponse:
139 """
140 This property can be used as a prefix for any HTTP method call to return
141 the raw response object instead of the parsed content.
142
143 For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
144 """
145 return AsyncModelsWithRawResponse(self)
146
147 @cached_property
148 def with_streaming_response(self) -> AsyncModelsWithStreamingResponse:
149 """
150 An alternative to `.with_raw_response` that doesn't eagerly read the response body.
151
152 For more information, see https://www.github.com/openai/openai-python#with_streaming_response
153 """
154 return AsyncModelsWithStreamingResponse(self)
155
156 async def retrieve(
157 self,
158 model: str,
159 *,
160 # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
161 # The extra values given here take precedence over values defined on the client or passed to this method.
162 extra_headers: Headers | None = None,
163 extra_query: Query | None = None,
164 extra_body: Body | None = None,
165 timeout: float | httpx.Timeout | None | NotGiven = not_given,
166 ) -> Model:
167 """
168 Retrieves a model instance, providing basic information about the model such as
169 the owner and permissioning.
170
171 Args:
172 extra_headers: Send extra headers
173
174 extra_query: Add additional query parameters to the request
175
176 extra_body: Add additional JSON properties to the request
177
178 timeout: Override the client-level default timeout for this request, in seconds
179 """
180 if not model:
181 raise ValueError(f"Expected a non-empty value for `model` but received {model!r}")
182 return await self._get(
183 f"/models/{model}",
184 options=make_request_options(
185 extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
186 ),
187 cast_to=Model,
188 )
189
190 def list(
191 self,
192 *,
193 # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
194 # The extra values given here take precedence over values defined on the client or passed to this method.
195 extra_headers: Headers | None = None,
196 extra_query: Query | None = None,
197 extra_body: Body | None = None,
198 timeout: float | httpx.Timeout | None | NotGiven = not_given,
199 ) -> AsyncPaginator[Model, AsyncPage[Model]]:
200 """
201 Lists the currently available models, and provides basic information about each
202 one such as the owner and availability.
203 """
204 return self._get_api_list(
205 "/models",
206 page=AsyncPage[Model],
207 options=make_request_options(
208 extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
209 ),
210 model=Model,
211 )
212
213 async def delete(
214 self,
215 model: str,
216 *,
217 # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
218 # The extra values given here take precedence over values defined on the client or passed to this method.
219 extra_headers: Headers | None = None,
220 extra_query: Query | None = None,
221 extra_body: Body | None = None,
222 timeout: float | httpx.Timeout | None | NotGiven = not_given,
223 ) -> ModelDeleted:
224 """Delete a fine-tuned model.
225
226 You must have the Owner role in your organization to
227 delete a model.
228
229 Args:
230 extra_headers: Send extra headers
231
232 extra_query: Add additional query parameters to the request
233
234 extra_body: Add additional JSON properties to the request
235
236 timeout: Override the client-level default timeout for this request, in seconds
237 """
238 if not model:
239 raise ValueError(f"Expected a non-empty value for `model` but received {model!r}")
240 return await self._delete(
241 f"/models/{model}",
242 options=make_request_options(
243 extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
244 ),
245 cast_to=ModelDeleted,
246 )
247
248
249class ModelsWithRawResponse:
250 def __init__(self, models: Models) -> None:
251 self._models = models
252
253 self.retrieve = _legacy_response.to_raw_response_wrapper(
254 models.retrieve,
255 )
256 self.list = _legacy_response.to_raw_response_wrapper(
257 models.list,
258 )
259 self.delete = _legacy_response.to_raw_response_wrapper(
260 models.delete,
261 )
262
263
264class AsyncModelsWithRawResponse:
265 def __init__(self, models: AsyncModels) -> None:
266 self._models = models
267
268 self.retrieve = _legacy_response.async_to_raw_response_wrapper(
269 models.retrieve,
270 )
271 self.list = _legacy_response.async_to_raw_response_wrapper(
272 models.list,
273 )
274 self.delete = _legacy_response.async_to_raw_response_wrapper(
275 models.delete,
276 )
277
278
279class ModelsWithStreamingResponse:
280 def __init__(self, models: Models) -> None:
281 self._models = models
282
283 self.retrieve = to_streamed_response_wrapper(
284 models.retrieve,
285 )
286 self.list = to_streamed_response_wrapper(
287 models.list,
288 )
289 self.delete = to_streamed_response_wrapper(
290 models.delete,
291 )
292
293
294class AsyncModelsWithStreamingResponse:
295 def __init__(self, models: AsyncModels) -> None:
296 self._models = models
297
298 self.retrieve = async_to_streamed_response_wrapper(
299 models.retrieve,
300 )
301 self.list = async_to_streamed_response_wrapper(
302 models.list,
303 )
304 self.delete = async_to_streamed_response_wrapper(
305 models.delete,
306 )