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        )