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