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 )