deeprails 1.8.0__py3-none-any.whl → 1.10.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
deeprails/_client.py CHANGED
@@ -21,7 +21,7 @@ from ._types import (
21
21
  )
22
22
  from ._utils import is_given, get_async_library
23
23
  from ._version import __version__
24
- from .resources import defend, monitor, evaluate
24
+ from .resources import defend, monitor
25
25
  from ._streaming import Stream as Stream, AsyncStream as AsyncStream
26
26
  from ._exceptions import APIStatusError, DeeprailsError
27
27
  from ._base_client import (
@@ -45,7 +45,6 @@ __all__ = [
45
45
  class Deeprails(SyncAPIClient):
46
46
  defend: defend.DefendResource
47
47
  monitor: monitor.MonitorResource
48
- evaluate: evaluate.EvaluateResource
49
48
  with_raw_response: DeeprailsWithRawResponse
50
49
  with_streaming_response: DeeprailsWithStreamedResponse
51
50
 
@@ -105,7 +104,6 @@ class Deeprails(SyncAPIClient):
105
104
 
106
105
  self.defend = defend.DefendResource(self)
107
106
  self.monitor = monitor.MonitorResource(self)
108
- self.evaluate = evaluate.EvaluateResource(self)
109
107
  self.with_raw_response = DeeprailsWithRawResponse(self)
110
108
  self.with_streaming_response = DeeprailsWithStreamedResponse(self)
111
109
 
@@ -217,7 +215,6 @@ class Deeprails(SyncAPIClient):
217
215
  class AsyncDeeprails(AsyncAPIClient):
218
216
  defend: defend.AsyncDefendResource
219
217
  monitor: monitor.AsyncMonitorResource
220
- evaluate: evaluate.AsyncEvaluateResource
221
218
  with_raw_response: AsyncDeeprailsWithRawResponse
222
219
  with_streaming_response: AsyncDeeprailsWithStreamedResponse
223
220
 
@@ -277,7 +274,6 @@ class AsyncDeeprails(AsyncAPIClient):
277
274
 
278
275
  self.defend = defend.AsyncDefendResource(self)
279
276
  self.monitor = monitor.AsyncMonitorResource(self)
280
- self.evaluate = evaluate.AsyncEvaluateResource(self)
281
277
  self.with_raw_response = AsyncDeeprailsWithRawResponse(self)
282
278
  self.with_streaming_response = AsyncDeeprailsWithStreamedResponse(self)
283
279
 
@@ -390,28 +386,24 @@ class DeeprailsWithRawResponse:
390
386
  def __init__(self, client: Deeprails) -> None:
391
387
  self.defend = defend.DefendResourceWithRawResponse(client.defend)
392
388
  self.monitor = monitor.MonitorResourceWithRawResponse(client.monitor)
393
- self.evaluate = evaluate.EvaluateResourceWithRawResponse(client.evaluate)
394
389
 
395
390
 
396
391
  class AsyncDeeprailsWithRawResponse:
397
392
  def __init__(self, client: AsyncDeeprails) -> None:
398
393
  self.defend = defend.AsyncDefendResourceWithRawResponse(client.defend)
399
394
  self.monitor = monitor.AsyncMonitorResourceWithRawResponse(client.monitor)
400
- self.evaluate = evaluate.AsyncEvaluateResourceWithRawResponse(client.evaluate)
401
395
 
402
396
 
403
397
  class DeeprailsWithStreamedResponse:
404
398
  def __init__(self, client: Deeprails) -> None:
405
399
  self.defend = defend.DefendResourceWithStreamingResponse(client.defend)
406
400
  self.monitor = monitor.MonitorResourceWithStreamingResponse(client.monitor)
407
- self.evaluate = evaluate.EvaluateResourceWithStreamingResponse(client.evaluate)
408
401
 
409
402
 
410
403
  class AsyncDeeprailsWithStreamedResponse:
411
404
  def __init__(self, client: AsyncDeeprails) -> None:
412
405
  self.defend = defend.AsyncDefendResourceWithStreamingResponse(client.defend)
413
406
  self.monitor = monitor.AsyncMonitorResourceWithStreamingResponse(client.monitor)
414
- self.evaluate = evaluate.AsyncEvaluateResourceWithStreamingResponse(client.evaluate)
415
407
 
416
408
 
417
409
  Client = Deeprails
deeprails/_version.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "deeprails"
4
- __version__ = "1.8.0" # x-release-please-version
4
+ __version__ = "1.10.0" # x-release-please-version
@@ -16,14 +16,6 @@ from .monitor import (
16
16
  MonitorResourceWithStreamingResponse,
17
17
  AsyncMonitorResourceWithStreamingResponse,
18
18
  )
19
- from .evaluate import (
20
- EvaluateResource,
21
- AsyncEvaluateResource,
22
- EvaluateResourceWithRawResponse,
23
- AsyncEvaluateResourceWithRawResponse,
24
- EvaluateResourceWithStreamingResponse,
25
- AsyncEvaluateResourceWithStreamingResponse,
26
- )
27
19
 
28
20
  __all__ = [
29
21
  "DefendResource",
@@ -38,10 +30,4 @@ __all__ = [
38
30
  "AsyncMonitorResourceWithRawResponse",
39
31
  "MonitorResourceWithStreamingResponse",
40
32
  "AsyncMonitorResourceWithStreamingResponse",
41
- "EvaluateResource",
42
- "AsyncEvaluateResource",
43
- "EvaluateResourceWithRawResponse",
44
- "AsyncEvaluateResourceWithRawResponse",
45
- "EvaluateResourceWithStreamingResponse",
46
- "AsyncEvaluateResourceWithStreamingResponse",
47
33
  ]
@@ -54,7 +54,7 @@ class DefendResource(SyncAPIResource):
54
54
  automatic_hallucination_tolerance_levels: Dict[str, Literal["low", "medium", "high"]] | Omit = omit,
55
55
  custom_hallucination_threshold_values: Dict[str, float] | Omit = omit,
56
56
  description: str | Omit = omit,
57
- max_improvement_attempt: int | Omit = omit,
57
+ max_improvement_attempts: int | Omit = omit,
58
58
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
59
59
  # The extra values given here take precedence over values defined on the client or passed to this method.
60
60
  extra_headers: Headers | None = None,
@@ -92,7 +92,7 @@ class DefendResource(SyncAPIResource):
92
92
 
93
93
  description: Description for the workflow.
94
94
 
95
- max_improvement_attempt: Max. number of improvement action retries until a given event passes the
95
+ max_improvement_attempts: Max. number of improvement action retries until a given event passes the
96
96
  guardrails. Defaults to 10.
97
97
 
98
98
  extra_headers: Send extra headers
@@ -113,7 +113,7 @@ class DefendResource(SyncAPIResource):
113
113
  "automatic_hallucination_tolerance_levels": automatic_hallucination_tolerance_levels,
114
114
  "custom_hallucination_threshold_values": custom_hallucination_threshold_values,
115
115
  "description": description,
116
- "max_improvement_attempt": max_improvement_attempt,
116
+ "max_improvement_attempts": max_improvement_attempts,
117
117
  },
118
118
  defend_create_workflow_params.DefendCreateWorkflowParams,
119
119
  ),
@@ -214,7 +214,7 @@ class DefendResource(SyncAPIResource):
214
214
 
215
215
  Args:
216
216
  model_input: A dictionary of inputs sent to the LLM to generate output. The dictionary must
217
- contain at least `user_prompt` or `system_prompt` field. For the
217
+ contain at least a `user_prompt` field or a `system_prompt` field. For the
218
218
  ground_truth_adherence guardrail metric, `ground_truth` should be provided.
219
219
 
220
220
  model_output: Output generated by the LLM to be evaluated.
@@ -332,7 +332,7 @@ class AsyncDefendResource(AsyncAPIResource):
332
332
  automatic_hallucination_tolerance_levels: Dict[str, Literal["low", "medium", "high"]] | Omit = omit,
333
333
  custom_hallucination_threshold_values: Dict[str, float] | Omit = omit,
334
334
  description: str | Omit = omit,
335
- max_improvement_attempt: int | Omit = omit,
335
+ max_improvement_attempts: int | Omit = omit,
336
336
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
337
337
  # The extra values given here take precedence over values defined on the client or passed to this method.
338
338
  extra_headers: Headers | None = None,
@@ -370,7 +370,7 @@ class AsyncDefendResource(AsyncAPIResource):
370
370
 
371
371
  description: Description for the workflow.
372
372
 
373
- max_improvement_attempt: Max. number of improvement action retries until a given event passes the
373
+ max_improvement_attempts: Max. number of improvement action retries until a given event passes the
374
374
  guardrails. Defaults to 10.
375
375
 
376
376
  extra_headers: Send extra headers
@@ -391,7 +391,7 @@ class AsyncDefendResource(AsyncAPIResource):
391
391
  "automatic_hallucination_tolerance_levels": automatic_hallucination_tolerance_levels,
392
392
  "custom_hallucination_threshold_values": custom_hallucination_threshold_values,
393
393
  "description": description,
394
- "max_improvement_attempt": max_improvement_attempt,
394
+ "max_improvement_attempts": max_improvement_attempts,
395
395
  },
396
396
  defend_create_workflow_params.DefendCreateWorkflowParams,
397
397
  ),
@@ -492,7 +492,7 @@ class AsyncDefendResource(AsyncAPIResource):
492
492
 
493
493
  Args:
494
494
  model_input: A dictionary of inputs sent to the LLM to generate output. The dictionary must
495
- contain at least `user_prompt` or `system_prompt` field. For the
495
+ contain at least a `user_prompt` field or a `system_prompt` field. For the
496
496
  ground_truth_adherence guardrail metric, `ground_truth` should be provided.
497
497
 
498
498
  model_output: Output generated by the LLM to be evaluated.
@@ -19,9 +19,9 @@ from .._response import (
19
19
  async_to_streamed_response_wrapper,
20
20
  )
21
21
  from .._base_client import make_request_options
22
- from ..types.api_response import APIResponse
23
- from ..types.monitor_retrieve_response import MonitorRetrieveResponse
24
- from ..types.monitor_submit_event_response import MonitorSubmitEventResponse
22
+ from ..types.monitor_response import MonitorResponse
23
+ from ..types.monitor_event_response import MonitorEventResponse
24
+ from ..types.monitor_detail_response import MonitorDetailResponse
25
25
 
26
26
  __all__ = ["MonitorResource", "AsyncMonitorResource"]
27
27
 
@@ -57,7 +57,7 @@ class MonitorResource(SyncAPIResource):
57
57
  extra_query: Query | None = None,
58
58
  extra_body: Body | None = None,
59
59
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
60
- ) -> APIResponse:
60
+ ) -> MonitorResponse:
61
61
  """
62
62
  Use this endpoint to create a new monitor to evaluate model inputs and outputs
63
63
  using guardrails
@@ -87,7 +87,7 @@ class MonitorResource(SyncAPIResource):
87
87
  options=make_request_options(
88
88
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
89
89
  ),
90
- cast_to=APIResponse,
90
+ cast_to=MonitorResponse,
91
91
  )
92
92
 
93
93
  def retrieve(
@@ -101,7 +101,7 @@ class MonitorResource(SyncAPIResource):
101
101
  extra_query: Query | None = None,
102
102
  extra_body: Body | None = None,
103
103
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
104
- ) -> MonitorRetrieveResponse:
104
+ ) -> MonitorDetailResponse:
105
105
  """
106
106
  Use this endpoint to retrieve the details and evaluations associated with a
107
107
  specific monitor
@@ -128,7 +128,7 @@ class MonitorResource(SyncAPIResource):
128
128
  timeout=timeout,
129
129
  query=maybe_transform({"limit": limit}, monitor_retrieve_params.MonitorRetrieveParams),
130
130
  ),
131
- cast_to=MonitorRetrieveResponse,
131
+ cast_to=MonitorDetailResponse,
132
132
  )
133
133
 
134
134
  def update(
@@ -144,7 +144,7 @@ class MonitorResource(SyncAPIResource):
144
144
  extra_query: Query | None = None,
145
145
  extra_body: Body | None = None,
146
146
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
147
- ) -> APIResponse:
147
+ ) -> MonitorResponse:
148
148
  """
149
149
  Use this endpoint to update the name, description, or status of an existing
150
150
  monitor
@@ -180,7 +180,7 @@ class MonitorResource(SyncAPIResource):
180
180
  options=make_request_options(
181
181
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
182
182
  ),
183
- cast_to=APIResponse,
183
+ cast_to=MonitorResponse,
184
184
  )
185
185
 
186
186
  def submit_event(
@@ -208,7 +208,7 @@ class MonitorResource(SyncAPIResource):
208
208
  extra_query: Query | None = None,
209
209
  extra_body: Body | None = None,
210
210
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
211
- ) -> MonitorSubmitEventResponse:
211
+ ) -> MonitorEventResponse:
212
212
  """
213
213
  Use this endpoint to submit a model input and output pair to a monitor for
214
214
  evaluation
@@ -220,7 +220,7 @@ class MonitorResource(SyncAPIResource):
220
220
  `ground_truth_adherence`, and/or `comprehensive_safety`.
221
221
 
222
222
  model_input: A dictionary of inputs sent to the LLM to generate output. The dictionary must
223
- contain at least a `user_prompt` or `system_prompt` field. For
223
+ contain at least a `user_prompt` field or a `system_prompt` field. For
224
224
  ground_truth_adherence guardrail metric, `ground_truth` should be provided.
225
225
 
226
226
  model_output: Output generated by the LLM to be evaluated.
@@ -260,7 +260,7 @@ class MonitorResource(SyncAPIResource):
260
260
  options=make_request_options(
261
261
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
262
262
  ),
263
- cast_to=MonitorSubmitEventResponse,
263
+ cast_to=MonitorEventResponse,
264
264
  )
265
265
 
266
266
 
@@ -295,7 +295,7 @@ class AsyncMonitorResource(AsyncAPIResource):
295
295
  extra_query: Query | None = None,
296
296
  extra_body: Body | None = None,
297
297
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
298
- ) -> APIResponse:
298
+ ) -> MonitorResponse:
299
299
  """
300
300
  Use this endpoint to create a new monitor to evaluate model inputs and outputs
301
301
  using guardrails
@@ -325,7 +325,7 @@ class AsyncMonitorResource(AsyncAPIResource):
325
325
  options=make_request_options(
326
326
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
327
327
  ),
328
- cast_to=APIResponse,
328
+ cast_to=MonitorResponse,
329
329
  )
330
330
 
331
331
  async def retrieve(
@@ -339,7 +339,7 @@ class AsyncMonitorResource(AsyncAPIResource):
339
339
  extra_query: Query | None = None,
340
340
  extra_body: Body | None = None,
341
341
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
342
- ) -> MonitorRetrieveResponse:
342
+ ) -> MonitorDetailResponse:
343
343
  """
344
344
  Use this endpoint to retrieve the details and evaluations associated with a
345
345
  specific monitor
@@ -366,7 +366,7 @@ class AsyncMonitorResource(AsyncAPIResource):
366
366
  timeout=timeout,
367
367
  query=await async_maybe_transform({"limit": limit}, monitor_retrieve_params.MonitorRetrieveParams),
368
368
  ),
369
- cast_to=MonitorRetrieveResponse,
369
+ cast_to=MonitorDetailResponse,
370
370
  )
371
371
 
372
372
  async def update(
@@ -382,7 +382,7 @@ class AsyncMonitorResource(AsyncAPIResource):
382
382
  extra_query: Query | None = None,
383
383
  extra_body: Body | None = None,
384
384
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
385
- ) -> APIResponse:
385
+ ) -> MonitorResponse:
386
386
  """
387
387
  Use this endpoint to update the name, description, or status of an existing
388
388
  monitor
@@ -418,7 +418,7 @@ class AsyncMonitorResource(AsyncAPIResource):
418
418
  options=make_request_options(
419
419
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
420
420
  ),
421
- cast_to=APIResponse,
421
+ cast_to=MonitorResponse,
422
422
  )
423
423
 
424
424
  async def submit_event(
@@ -446,7 +446,7 @@ class AsyncMonitorResource(AsyncAPIResource):
446
446
  extra_query: Query | None = None,
447
447
  extra_body: Body | None = None,
448
448
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
449
- ) -> MonitorSubmitEventResponse:
449
+ ) -> MonitorEventResponse:
450
450
  """
451
451
  Use this endpoint to submit a model input and output pair to a monitor for
452
452
  evaluation
@@ -458,7 +458,7 @@ class AsyncMonitorResource(AsyncAPIResource):
458
458
  `ground_truth_adherence`, and/or `comprehensive_safety`.
459
459
 
460
460
  model_input: A dictionary of inputs sent to the LLM to generate output. The dictionary must
461
- contain at least a `user_prompt` or `system_prompt` field. For
461
+ contain at least a `user_prompt` field or a `system_prompt` field. For
462
462
  ground_truth_adherence guardrail metric, `ground_truth` should be provided.
463
463
 
464
464
  model_output: Output generated by the LLM to be evaluated.
@@ -498,7 +498,7 @@ class AsyncMonitorResource(AsyncAPIResource):
498
498
  options=make_request_options(
499
499
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
500
500
  ),
501
- cast_to=MonitorSubmitEventResponse,
501
+ cast_to=MonitorEventResponse,
502
502
  )
503
503
 
504
504
 
@@ -2,17 +2,15 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from .evaluation import Evaluation as Evaluation
6
- from .api_response import APIResponse as APIResponse
7
5
  from .defend_response import DefendResponse as DefendResponse
6
+ from .monitor_response import MonitorResponse as MonitorResponse
8
7
  from .monitor_create_params import MonitorCreateParams as MonitorCreateParams
9
8
  from .monitor_update_params import MonitorUpdateParams as MonitorUpdateParams
10
- from .evaluate_create_params import EvaluateCreateParams as EvaluateCreateParams
9
+ from .monitor_event_response import MonitorEventResponse as MonitorEventResponse
10
+ from .monitor_detail_response import MonitorDetailResponse as MonitorDetailResponse
11
11
  from .monitor_retrieve_params import MonitorRetrieveParams as MonitorRetrieveParams
12
12
  from .workflow_event_response import WorkflowEventResponse as WorkflowEventResponse
13
- from .monitor_retrieve_response import MonitorRetrieveResponse as MonitorRetrieveResponse
14
13
  from .defend_submit_event_params import DefendSubmitEventParams as DefendSubmitEventParams
15
14
  from .monitor_submit_event_params import MonitorSubmitEventParams as MonitorSubmitEventParams
16
15
  from .defend_create_workflow_params import DefendCreateWorkflowParams as DefendCreateWorkflowParams
17
16
  from .defend_update_workflow_params import DefendUpdateWorkflowParams as DefendUpdateWorkflowParams
18
- from .monitor_submit_event_response import MonitorSubmitEventResponse as MonitorSubmitEventResponse
@@ -48,7 +48,7 @@ class DefendCreateWorkflowParams(TypedDict, total=False):
48
48
  description: str
49
49
  """Description for the workflow."""
50
50
 
51
- max_improvement_attempt: int
51
+ max_improvement_attempts: int
52
52
  """Max.
53
53
 
54
54
  number of improvement action retries until a given event passes the guardrails.
@@ -31,7 +31,7 @@ class DefendResponse(BaseModel):
31
31
  Nothing does not attempt any improvement.
32
32
  """
33
33
 
34
- max_improvement_attempt: Optional[int] = None
34
+ max_improvement_attempts: Optional[int] = None
35
35
  """Max.
36
36
 
37
37
  number of improvement action retries until a given event passes the guardrails.
@@ -11,8 +11,9 @@ class DefendSubmitEventParams(TypedDict, total=False):
11
11
  model_input: Required[ModelInput]
12
12
  """A dictionary of inputs sent to the LLM to generate output.
13
13
 
14
- The dictionary must contain at least `user_prompt` or `system_prompt` field. For
15
- the ground_truth_adherence guardrail metric, `ground_truth` should be provided.
14
+ The dictionary must contain at least a `user_prompt` field or a `system_prompt`
15
+ field. For the ground_truth_adherence guardrail metric, `ground_truth` should be
16
+ provided.
16
17
  """
17
18
 
18
19
  model_output: Required[str]
@@ -36,7 +37,7 @@ class DefendSubmitEventParams(TypedDict, total=False):
36
37
 
37
38
  class ModelInput(TypedDict, total=False):
38
39
  ground_truth: str
39
- """The ground truth for evaluating Ground Truth Adherence guardrail."""
40
+ """The ground truth for evaluating the Ground Truth Adherence guardrail."""
40
41
 
41
42
  system_prompt: str
42
43
  """The system prompt used to generate the output."""
@@ -8,10 +8,10 @@ from pydantic import Field as FieldInfo
8
8
 
9
9
  from .._models import BaseModel
10
10
 
11
- __all__ = ["Evaluation", "ModelInput"]
11
+ __all__ = ["MonitorDetailResponse", "Evaluation", "EvaluationModelInput", "Stats"]
12
12
 
13
13
 
14
- class ModelInput(BaseModel):
14
+ class EvaluationModelInput(BaseModel):
15
15
  ground_truth: Optional[str] = None
16
16
  """The ground truth for evaluating Ground Truth Adherence guardrail."""
17
17
 
@@ -29,11 +29,12 @@ class Evaluation(BaseModel):
29
29
  evaluation_status: Literal["in_progress", "completed", "canceled", "queued", "failed"]
30
30
  """Status of the evaluation."""
31
31
 
32
- api_model_input: ModelInput = FieldInfo(alias="model_input")
32
+ api_model_input: EvaluationModelInput = FieldInfo(alias="model_input")
33
33
  """A dictionary of inputs sent to the LLM to generate output.
34
34
 
35
- The dictionary must contain at least `user_prompt` or `system_prompt` field. For
36
- ground_truth_adherence guardrail metric, `ground_truth` should be provided.
35
+ The dictionary must contain at least a `user_prompt` field or a `system_prompt`
36
+ field. For ground_truth_adherence guardrail metric, `ground_truth` should be
37
+ provided.
37
38
  """
38
39
 
39
40
  api_model_output: str = FieldInfo(alias="model_output")
@@ -102,3 +103,60 @@ class Evaluation(BaseModel):
102
103
 
103
104
  start_timestamp: Optional[datetime] = None
104
105
  """The time the evaluation started in UTC."""
106
+
107
+
108
+ class Stats(BaseModel):
109
+ completed_evaluations: Optional[int] = None
110
+ """Number of evaluations that completed successfully."""
111
+
112
+ failed_evaluations: Optional[int] = None
113
+ """Number of evaluations that failed."""
114
+
115
+ in_progress_evaluations: Optional[int] = None
116
+ """Number of evaluations currently in progress."""
117
+
118
+ queued_evaluations: Optional[int] = None
119
+ """Number of evaluations currently queued."""
120
+
121
+ total_evaluations: Optional[int] = None
122
+ """Total number of evaluations performed by this monitor."""
123
+
124
+
125
+ class MonitorDetailResponse(BaseModel):
126
+ monitor_id: str
127
+ """A unique monitor ID."""
128
+
129
+ monitor_status: Literal["active", "inactive"]
130
+ """Status of the monitor.
131
+
132
+ Can be `active` or `inactive`. Inactive monitors no longer record and evaluate
133
+ events.
134
+ """
135
+
136
+ name: str
137
+ """Name of this monitor."""
138
+
139
+ created_at: Optional[datetime] = None
140
+ """The time the monitor was created in UTC."""
141
+
142
+ description: Optional[str] = None
143
+ """Description of this monitor."""
144
+
145
+ evaluations: Optional[List[Evaluation]] = None
146
+ """An array of all evaluations performed by this monitor.
147
+
148
+ Each one corresponds to a separate monitor event.
149
+ """
150
+
151
+ stats: Optional[Stats] = None
152
+ """
153
+ Contains five fields used for stats of this monitor: total evaluations,
154
+ completed evaluations, failed evaluations, queued evaluations, and in progress
155
+ evaluations.
156
+ """
157
+
158
+ updated_at: Optional[datetime] = None
159
+ """The most recent time the monitor was modified in UTC."""
160
+
161
+ user_id: Optional[str] = None
162
+ """User ID of the user who created the monitor."""
@@ -5,10 +5,10 @@ from datetime import datetime
5
5
 
6
6
  from .._models import BaseModel
7
7
 
8
- __all__ = ["MonitorSubmitEventResponse", "Data"]
8
+ __all__ = ["MonitorEventResponse"]
9
9
 
10
10
 
11
- class Data(BaseModel):
11
+ class MonitorEventResponse(BaseModel):
12
12
  evaluation_id: str
13
13
  """A unique evaluation ID associated with this event."""
14
14
 
@@ -20,16 +20,3 @@ class Data(BaseModel):
20
20
 
21
21
  created_at: Optional[datetime] = None
22
22
  """The time the monitor event was created in UTC."""
23
-
24
-
25
- class MonitorSubmitEventResponse(BaseModel):
26
- success: bool
27
- """Represents whether the request was completed successfully."""
28
-
29
- data: Optional[Data] = None
30
-
31
- message: Optional[str] = None
32
- """The accompanying message for the request.
33
-
34
- Includes error details when applicable.
35
- """
@@ -6,10 +6,10 @@ from typing_extensions import Literal
6
6
 
7
7
  from .._models import BaseModel
8
8
 
9
- __all__ = ["APIResponse", "Data"]
9
+ __all__ = ["MonitorResponse"]
10
10
 
11
11
 
12
- class Data(BaseModel):
12
+ class MonitorResponse(BaseModel):
13
13
  monitor_id: str
14
14
  """A unique monitor ID."""
15
15
 
@@ -34,16 +34,3 @@ class Data(BaseModel):
34
34
 
35
35
  user_id: Optional[str] = None
36
36
  """User ID of the user who created the monitor."""
37
-
38
-
39
- class APIResponse(BaseModel):
40
- success: bool
41
- """Represents whether the request was completed successfully."""
42
-
43
- data: Optional[Data] = None
44
-
45
- message: Optional[str] = None
46
- """The accompanying message for the request.
47
-
48
- Includes error details when applicable.
49
- """
@@ -31,8 +31,9 @@ class MonitorSubmitEventParams(TypedDict, total=False):
31
31
  model_input: Required[ModelInput]
32
32
  """A dictionary of inputs sent to the LLM to generate output.
33
33
 
34
- The dictionary must contain at least a `user_prompt` or `system_prompt` field.
35
- For ground_truth_adherence guardrail metric, `ground_truth` should be provided.
34
+ The dictionary must contain at least a `user_prompt` field or a `system_prompt`
35
+ field. For ground_truth_adherence guardrail metric, `ground_truth` should be
36
+ provided.
36
37
  """
37
38
 
38
39
  model_output: Required[str]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: deeprails
3
- Version: 1.8.0
3
+ Version: 1.10.0
4
4
  Summary: The official Python library for the deeprails API
5
5
  Project-URL: Homepage, https://docs.deeprails.com/
6
6
  Project-URL: Repository, https://github.com/deeprails/deeprails-sdk-python
@@ -1,6 +1,6 @@
1
1
  deeprails/__init__.py,sha256=Rz38DnPkRJzvTJjgsLPjYyEId-pJndorgdE4Yhcq0J4,2692
2
2
  deeprails/_base_client.py,sha256=3bTH_cn_59gEjfZdcRS6g6Er4ZobAgTCRsnQmD_viNQ,67050
3
- deeprails/_client.py,sha256=oinOakaCufsSKAjWC2JOwT4bCeEmRB-xQCT9FNAG1rM,16125
3
+ deeprails/_client.py,sha256=BzJOTEiC2RszdX3GCBEk_R5k6e48rzP-XlbCN1Cplr4,15563
4
4
  deeprails/_compat.py,sha256=DQBVORjFb33zch24jzkhM14msvnzY7mmSmgDLaVFUM8,6562
5
5
  deeprails/_constants.py,sha256=S14PFzyN9-I31wiV7SmIlL5Ga0MLHxdvegInGdXH7tM,462
6
6
  deeprails/_exceptions.py,sha256=N99bKrZNjDzgEDrvdw99WO-zpuPeZySaUUKNLEUz8mU,3226
@@ -11,7 +11,7 @@ deeprails/_resource.py,sha256=7RXX5KZr4j0TIE66vnduHp7p9Yf9X0FyDDECuvRHARg,1118
11
11
  deeprails/_response.py,sha256=yj0HJDU91WPpiczwi6CBOLAl_bqf4I_I96vWMAwx6Fg,28806
12
12
  deeprails/_streaming.py,sha256=hCp5bK9dyw2TyrVL69m-6qGC-QtGYwhXmFzITCWPgAs,10112
13
13
  deeprails/_types.py,sha256=XR3mad9NsGqZsjrd1VVJ657-4O4kwyw9Qzg4M3i6Vh0,7239
14
- deeprails/_version.py,sha256=V8Z_1JKT_bgLyhd5iqPYjkEjv9Mii5vfV23cYHHyts8,161
14
+ deeprails/_version.py,sha256=dE6ROKmhSXt4B73GxgSswrtaxSRJBdQihEVLUUaQ-M0,162
15
15
  deeprails/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  deeprails/_utils/__init__.py,sha256=7fch0GT9zpNnErbciSpUNa-SjTxxjY6kxHxKMOM4AGs,2305
17
17
  deeprails/_utils/_compat.py,sha256=D8gtAvjJQrDWt9upS0XaG9Rr5l1QhiAx_I_1utT_tt0,1195
@@ -26,26 +26,23 @@ deeprails/_utils/_transform.py,sha256=NjCzmnfqYrsAikUHQig6N9QfuTVbKipuP3ur9mcNF-
26
26
  deeprails/_utils/_typing.py,sha256=N_5PPuFNsaygbtA_npZd98SVN1LQQvFTKL6bkWPBZGU,4786
27
27
  deeprails/_utils/_utils.py,sha256=0dDqauUbVZEXV0NVl7Bwu904Wwo5eyFCZpQThhFNhyA,12253
28
28
  deeprails/lib/.keep,sha256=wuNrz-5SXo3jJaJOJgz4vFHM41YH_g20F5cRQo0vLes,224
29
- deeprails/resources/__init__.py,sha256=ha0jL9Et8fHzPdkTa7ecihYapOC4I6O-PHf2X9igprE,1491
30
- deeprails/resources/defend.py,sha256=TRuF6F3YEmgGBkJRxf8Mx6JofmZjstUeLTUpHV0S4gQ,28158
31
- deeprails/resources/evaluate.py,sha256=uoElGfpFyH-bO8cbq-2xM2bgfKsQN3P6YF8nmEAPugg,13005
32
- deeprails/resources/monitor.py,sha256=bFCz3t8-wweF76KZoD3n8jHY-xtL8ZA7S-3eI1FiHik,22517
33
- deeprails/types/__init__.py,sha256=tLO-5DMMKt-F4qQYht3F-RFgLbthP-8a36853IhNoGI,1267
34
- deeprails/types/api_response.py,sha256=eHEQeL677tvm1RK0A_S03EAoprQbJzmHspiKrtjKRt4,1232
35
- deeprails/types/defend_create_workflow_params.py,sha256=b2wWr-DtON4XcbPyKD45oO7016F4ji5LoIqyNdM3B5k,2101
36
- deeprails/types/defend_response.py,sha256=sIS9nBgW2a_yBYxVWo33pgy1IKEn-m4AzamOr5Eov5g,1602
37
- deeprails/types/defend_submit_event_params.py,sha256=nbrszvTg_I8WEZJe6hPzP22pCC8Fkp60nmgH3p211uU,1521
29
+ deeprails/resources/__init__.py,sha256=JBzEBVMLg2n1w2QJGYCsyjPHY6zHZ0G3xaWuuFoa5Pg,1015
30
+ deeprails/resources/defend.py,sha256=e6NzUJziYx__FkGSVNeaqzA8sZU0L5dY5Nob1IPCxc4,28186
31
+ deeprails/resources/monitor.py,sha256=bW7HCn8lDpWqaPd11J_tVnGSduWTX3sfXlDYYycvk8k,22524
32
+ deeprails/types/__init__.py,sha256=PlF7idbYiAj3xyJYstHDaBer-rLUHe6eUEfRfJKisvk,1124
33
+ deeprails/types/defend_create_workflow_params.py,sha256=AmyoU1z3a0U39pqVtVnFsM86ysK1nYIx15Tolwb4PKA,2102
34
+ deeprails/types/defend_response.py,sha256=VoePIT9RKN795y-3ZvoFmzSTCetqkZZh6iQLYjJEFoY,1603
35
+ deeprails/types/defend_submit_event_params.py,sha256=yL_rLUGKlZjXHGbdi8h9ZItb4sICQ2POO_o0VbUtans,1539
38
36
  deeprails/types/defend_update_workflow_params.py,sha256=QH2k7EDMLub3mW1lPV5SUoKDHW_T2arSo-RGHLterwo,373
39
- deeprails/types/evaluate_create_params.py,sha256=B_WthHkJJzH7vjvKYd_PhJcQTilOhUsMBd6mz5hxGbQ,1987
40
- deeprails/types/evaluation.py,sha256=GAzuZMOD51bCNVLUeROO4Vi26j3DE3kEIRFf9-UfZjQ,3314
41
37
  deeprails/types/monitor_create_params.py,sha256=kTSj-PhuzpT-HPDTQJemRWfd8w32foUMH9FQZj8symk,384
38
+ deeprails/types/monitor_detail_response.py,sha256=s8dzFFaU9uI-GHCfUxCN9yLhpmq4LTu7CSww9z0SLvk,5028
39
+ deeprails/types/monitor_event_response.py,sha256=-cnugHD_3QeeZRMbo6aQBirqSPgKIKpaD2qNkgxCeCA,565
40
+ deeprails/types/monitor_response.py,sha256=LjnJVYniee1hgvZu8RT-9jX4xd0Ob_yvq4NBOxVn59c,950
42
41
  deeprails/types/monitor_retrieve_params.py,sha256=PEsRmbd-81z4pJvhfi4JbrQWNzmeiLkoNsTUoPZ6kFY,352
43
- deeprails/types/monitor_retrieve_response.py,sha256=BZp7-6PFVdqYU5ZDhbr1Eao3kU132zTm9idgoaA65Gg,2245
44
- deeprails/types/monitor_submit_event_params.py,sha256=d2AzwBe-d0tBfvnknfy0fGCrCCd0GC2kJb1AXbje3cg,2152
45
- deeprails/types/monitor_submit_event_response.py,sha256=qlraxIJaclNSR_JOizMPj9gOiz-0x7lIChSX3DmFllM,867
42
+ deeprails/types/monitor_submit_event_params.py,sha256=YetTV8HzmDGNnSYoKZp8tv3u9L6oYn4tnvWOppTRfOQ,2164
46
43
  deeprails/types/monitor_update_params.py,sha256=gJyFFxT_u_iWABknuKnLpPl9r-VPfCcGtOAmh6sPwUw,550
47
44
  deeprails/types/workflow_event_response.py,sha256=mIzOCnYJg4TDSq_tG_0WfA0_Gmc9-0q-befyookfUFM,867
48
- deeprails-1.8.0.dist-info/METADATA,sha256=taDsSz0VVSWTfKlHscWkFvDJPNLZz-ALaMMo9MfLjsc,12080
49
- deeprails-1.8.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
50
- deeprails-1.8.0.dist-info/licenses/LICENSE,sha256=rFTxPcYE516UQLju2SCY1r2pSDDfodL0-ZvxF_fgueg,11339
51
- deeprails-1.8.0.dist-info/RECORD,,
45
+ deeprails-1.10.0.dist-info/METADATA,sha256=oMlAwTn3V1FCFTw1ErsGTS_clu3q1dtpn3vQAssiJv0,12081
46
+ deeprails-1.10.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
47
+ deeprails-1.10.0.dist-info/licenses/LICENSE,sha256=rFTxPcYE516UQLju2SCY1r2pSDDfodL0-ZvxF_fgueg,11339
48
+ deeprails-1.10.0.dist-info/RECORD,,
@@ -1,334 +0,0 @@
1
- # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- from __future__ import annotations
4
-
5
- from typing import List
6
- from typing_extensions import Literal
7
-
8
- import httpx
9
-
10
- from ..types import evaluate_create_params
11
- from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
12
- from .._utils import maybe_transform, async_maybe_transform
13
- from .._compat import cached_property
14
- from .._resource import SyncAPIResource, AsyncAPIResource
15
- from .._response import (
16
- to_raw_response_wrapper,
17
- to_streamed_response_wrapper,
18
- async_to_raw_response_wrapper,
19
- async_to_streamed_response_wrapper,
20
- )
21
- from .._base_client import make_request_options
22
- from ..types.evaluation import Evaluation
23
-
24
- __all__ = ["EvaluateResource", "AsyncEvaluateResource"]
25
-
26
-
27
- class EvaluateResource(SyncAPIResource):
28
- @cached_property
29
- def with_raw_response(self) -> EvaluateResourceWithRawResponse:
30
- """
31
- This property can be used as a prefix for any HTTP method call to return
32
- the raw response object instead of the parsed content.
33
-
34
- For more information, see https://www.github.com/deeprails/deeprails-sdk-python#accessing-raw-response-data-eg-headers
35
- """
36
- return EvaluateResourceWithRawResponse(self)
37
-
38
- @cached_property
39
- def with_streaming_response(self) -> EvaluateResourceWithStreamingResponse:
40
- """
41
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
42
-
43
- For more information, see https://www.github.com/deeprails/deeprails-sdk-python#with_streaming_response
44
- """
45
- return EvaluateResourceWithStreamingResponse(self)
46
-
47
- def create(
48
- self,
49
- *,
50
- model_input: evaluate_create_params.ModelInput,
51
- model_output: str,
52
- run_mode: Literal["precision_plus", "precision", "smart", "economy"],
53
- guardrail_metrics: List[
54
- Literal[
55
- "correctness",
56
- "completeness",
57
- "instruction_adherence",
58
- "context_adherence",
59
- "ground_truth_adherence",
60
- "comprehensive_safety",
61
- ]
62
- ]
63
- | Omit = omit,
64
- model_used: str | Omit = omit,
65
- nametag: str | Omit = omit,
66
- # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
67
- # The extra values given here take precedence over values defined on the client or passed to this method.
68
- extra_headers: Headers | None = None,
69
- extra_query: Query | None = None,
70
- extra_body: Body | None = None,
71
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
72
- ) -> Evaluation:
73
- """
74
- Use this endpoint to evaluate a model's input and output pair against selected
75
- guardrail metrics
76
-
77
- Args:
78
- model_input: A dictionary of inputs sent to the LLM to generate output. The dictionary must
79
- contain at least `user_prompt` or `system_prompt` field. For
80
- ground_truth_adherence guardrail metric, `ground_truth` should be provided.
81
-
82
- model_output: Output generated by the LLM to be evaluated.
83
-
84
- run_mode: Run mode for the evaluation. The run mode allows the user to optimize for speed,
85
- accuracy, and cost by determining which models are used to evaluate the event.
86
- Available run modes include `precision_plus`, `precision`, `smart`, and
87
- `economy`. Defaults to `smart`.
88
-
89
- guardrail_metrics: An array of guardrail metrics that the model input and output pair will be
90
- evaluated on. For non-enterprise users, these will be limited to the allowed
91
- guardrail metrics.
92
-
93
- model_used: Model ID used to generate the output, like `gpt-4o` or `o3`.
94
-
95
- nametag: An optional, user-defined tag for the evaluation.
96
-
97
- extra_headers: Send extra headers
98
-
99
- extra_query: Add additional query parameters to the request
100
-
101
- extra_body: Add additional JSON properties to the request
102
-
103
- timeout: Override the client-level default timeout for this request, in seconds
104
- """
105
- return self._post(
106
- "/evaluate",
107
- body=maybe_transform(
108
- {
109
- "model_input": model_input,
110
- "model_output": model_output,
111
- "run_mode": run_mode,
112
- "guardrail_metrics": guardrail_metrics,
113
- "model_used": model_used,
114
- "nametag": nametag,
115
- },
116
- evaluate_create_params.EvaluateCreateParams,
117
- ),
118
- options=make_request_options(
119
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
120
- ),
121
- cast_to=Evaluation,
122
- )
123
-
124
- def retrieve(
125
- self,
126
- eval_id: str,
127
- *,
128
- # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
129
- # The extra values given here take precedence over values defined on the client or passed to this method.
130
- extra_headers: Headers | None = None,
131
- extra_query: Query | None = None,
132
- extra_body: Body | None = None,
133
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
134
- ) -> Evaluation:
135
- """
136
- Use this endpoint to retrieve the evaluation record for a given evaluation ID
137
-
138
- Args:
139
- extra_headers: Send extra headers
140
-
141
- extra_query: Add additional query parameters to the request
142
-
143
- extra_body: Add additional JSON properties to the request
144
-
145
- timeout: Override the client-level default timeout for this request, in seconds
146
- """
147
- if not eval_id:
148
- raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
149
- return self._get(
150
- f"/evaluate/{eval_id}",
151
- options=make_request_options(
152
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
153
- ),
154
- cast_to=Evaluation,
155
- )
156
-
157
-
158
- class AsyncEvaluateResource(AsyncAPIResource):
159
- @cached_property
160
- def with_raw_response(self) -> AsyncEvaluateResourceWithRawResponse:
161
- """
162
- This property can be used as a prefix for any HTTP method call to return
163
- the raw response object instead of the parsed content.
164
-
165
- For more information, see https://www.github.com/deeprails/deeprails-sdk-python#accessing-raw-response-data-eg-headers
166
- """
167
- return AsyncEvaluateResourceWithRawResponse(self)
168
-
169
- @cached_property
170
- def with_streaming_response(self) -> AsyncEvaluateResourceWithStreamingResponse:
171
- """
172
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
173
-
174
- For more information, see https://www.github.com/deeprails/deeprails-sdk-python#with_streaming_response
175
- """
176
- return AsyncEvaluateResourceWithStreamingResponse(self)
177
-
178
- async def create(
179
- self,
180
- *,
181
- model_input: evaluate_create_params.ModelInput,
182
- model_output: str,
183
- run_mode: Literal["precision_plus", "precision", "smart", "economy"],
184
- guardrail_metrics: List[
185
- Literal[
186
- "correctness",
187
- "completeness",
188
- "instruction_adherence",
189
- "context_adherence",
190
- "ground_truth_adherence",
191
- "comprehensive_safety",
192
- ]
193
- ]
194
- | Omit = omit,
195
- model_used: str | Omit = omit,
196
- nametag: str | Omit = omit,
197
- # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
198
- # The extra values given here take precedence over values defined on the client or passed to this method.
199
- extra_headers: Headers | None = None,
200
- extra_query: Query | None = None,
201
- extra_body: Body | None = None,
202
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
203
- ) -> Evaluation:
204
- """
205
- Use this endpoint to evaluate a model's input and output pair against selected
206
- guardrail metrics
207
-
208
- Args:
209
- model_input: A dictionary of inputs sent to the LLM to generate output. The dictionary must
210
- contain at least `user_prompt` or `system_prompt` field. For
211
- ground_truth_adherence guardrail metric, `ground_truth` should be provided.
212
-
213
- model_output: Output generated by the LLM to be evaluated.
214
-
215
- run_mode: Run mode for the evaluation. The run mode allows the user to optimize for speed,
216
- accuracy, and cost by determining which models are used to evaluate the event.
217
- Available run modes include `precision_plus`, `precision`, `smart`, and
218
- `economy`. Defaults to `smart`.
219
-
220
- guardrail_metrics: An array of guardrail metrics that the model input and output pair will be
221
- evaluated on. For non-enterprise users, these will be limited to the allowed
222
- guardrail metrics.
223
-
224
- model_used: Model ID used to generate the output, like `gpt-4o` or `o3`.
225
-
226
- nametag: An optional, user-defined tag for the evaluation.
227
-
228
- extra_headers: Send extra headers
229
-
230
- extra_query: Add additional query parameters to the request
231
-
232
- extra_body: Add additional JSON properties to the request
233
-
234
- timeout: Override the client-level default timeout for this request, in seconds
235
- """
236
- return await self._post(
237
- "/evaluate",
238
- body=await async_maybe_transform(
239
- {
240
- "model_input": model_input,
241
- "model_output": model_output,
242
- "run_mode": run_mode,
243
- "guardrail_metrics": guardrail_metrics,
244
- "model_used": model_used,
245
- "nametag": nametag,
246
- },
247
- evaluate_create_params.EvaluateCreateParams,
248
- ),
249
- options=make_request_options(
250
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
251
- ),
252
- cast_to=Evaluation,
253
- )
254
-
255
- async def retrieve(
256
- self,
257
- eval_id: str,
258
- *,
259
- # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
260
- # The extra values given here take precedence over values defined on the client or passed to this method.
261
- extra_headers: Headers | None = None,
262
- extra_query: Query | None = None,
263
- extra_body: Body | None = None,
264
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
265
- ) -> Evaluation:
266
- """
267
- Use this endpoint to retrieve the evaluation record for a given evaluation ID
268
-
269
- Args:
270
- extra_headers: Send extra headers
271
-
272
- extra_query: Add additional query parameters to the request
273
-
274
- extra_body: Add additional JSON properties to the request
275
-
276
- timeout: Override the client-level default timeout for this request, in seconds
277
- """
278
- if not eval_id:
279
- raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
280
- return await self._get(
281
- f"/evaluate/{eval_id}",
282
- options=make_request_options(
283
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
284
- ),
285
- cast_to=Evaluation,
286
- )
287
-
288
-
289
- class EvaluateResourceWithRawResponse:
290
- def __init__(self, evaluate: EvaluateResource) -> None:
291
- self._evaluate = evaluate
292
-
293
- self.create = to_raw_response_wrapper(
294
- evaluate.create,
295
- )
296
- self.retrieve = to_raw_response_wrapper(
297
- evaluate.retrieve,
298
- )
299
-
300
-
301
- class AsyncEvaluateResourceWithRawResponse:
302
- def __init__(self, evaluate: AsyncEvaluateResource) -> None:
303
- self._evaluate = evaluate
304
-
305
- self.create = async_to_raw_response_wrapper(
306
- evaluate.create,
307
- )
308
- self.retrieve = async_to_raw_response_wrapper(
309
- evaluate.retrieve,
310
- )
311
-
312
-
313
- class EvaluateResourceWithStreamingResponse:
314
- def __init__(self, evaluate: EvaluateResource) -> None:
315
- self._evaluate = evaluate
316
-
317
- self.create = to_streamed_response_wrapper(
318
- evaluate.create,
319
- )
320
- self.retrieve = to_streamed_response_wrapper(
321
- evaluate.retrieve,
322
- )
323
-
324
-
325
- class AsyncEvaluateResourceWithStreamingResponse:
326
- def __init__(self, evaluate: AsyncEvaluateResource) -> None:
327
- self._evaluate = evaluate
328
-
329
- self.create = async_to_streamed_response_wrapper(
330
- evaluate.create,
331
- )
332
- self.retrieve = async_to_streamed_response_wrapper(
333
- evaluate.retrieve,
334
- )
@@ -1,62 +0,0 @@
1
- # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- from __future__ import annotations
4
-
5
- from typing import List
6
- from typing_extensions import Literal, Required, TypedDict
7
-
8
- __all__ = ["EvaluateCreateParams", "ModelInput"]
9
-
10
-
11
- class EvaluateCreateParams(TypedDict, total=False):
12
- model_input: Required[ModelInput]
13
- """A dictionary of inputs sent to the LLM to generate output.
14
-
15
- The dictionary must contain at least `user_prompt` or `system_prompt` field. For
16
- ground_truth_adherence guardrail metric, `ground_truth` should be provided.
17
- """
18
-
19
- model_output: Required[str]
20
- """Output generated by the LLM to be evaluated."""
21
-
22
- run_mode: Required[Literal["precision_plus", "precision", "smart", "economy"]]
23
- """Run mode for the evaluation.
24
-
25
- The run mode allows the user to optimize for speed, accuracy, and cost by
26
- determining which models are used to evaluate the event. Available run modes
27
- include `precision_plus`, `precision`, `smart`, and `economy`. Defaults to
28
- `smart`.
29
- """
30
-
31
- guardrail_metrics: List[
32
- Literal[
33
- "correctness",
34
- "completeness",
35
- "instruction_adherence",
36
- "context_adherence",
37
- "ground_truth_adherence",
38
- "comprehensive_safety",
39
- ]
40
- ]
41
- """
42
- An array of guardrail metrics that the model input and output pair will be
43
- evaluated on. For non-enterprise users, these will be limited to the allowed
44
- guardrail metrics.
45
- """
46
-
47
- model_used: str
48
- """Model ID used to generate the output, like `gpt-4o` or `o3`."""
49
-
50
- nametag: str
51
- """An optional, user-defined tag for the evaluation."""
52
-
53
-
54
- class ModelInput(TypedDict, total=False):
55
- ground_truth: str
56
- """The ground truth for evaluating Ground Truth Adherence guardrail."""
57
-
58
- system_prompt: str
59
- """The system prompt used to generate the output."""
60
-
61
- user_prompt: str
62
- """The user prompt used to generate the output."""
@@ -1,80 +0,0 @@
1
- # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- from typing import List, Optional
4
- from datetime import datetime
5
- from typing_extensions import Literal
6
-
7
- from .._models import BaseModel
8
- from .evaluation import Evaluation
9
-
10
- __all__ = ["MonitorRetrieveResponse", "Data", "DataStats"]
11
-
12
-
13
- class DataStats(BaseModel):
14
- completed_evaluations: Optional[int] = None
15
- """Number of evaluations that completed successfully."""
16
-
17
- failed_evaluations: Optional[int] = None
18
- """Number of evaluations that failed."""
19
-
20
- in_progress_evaluations: Optional[int] = None
21
- """Number of evaluations currently in progress."""
22
-
23
- queued_evaluations: Optional[int] = None
24
- """Number of evaluations currently queued."""
25
-
26
- total_evaluations: Optional[int] = None
27
- """Total number of evaluations performed by this monitor."""
28
-
29
-
30
- class Data(BaseModel):
31
- monitor_id: str
32
- """A unique monitor ID."""
33
-
34
- monitor_status: Literal["active", "inactive"]
35
- """Status of the monitor.
36
-
37
- Can be `active` or `inactive`. Inactive monitors no longer record and evaluate
38
- events.
39
- """
40
-
41
- name: str
42
- """Name of this monitor."""
43
-
44
- created_at: Optional[datetime] = None
45
- """The time the monitor was created in UTC."""
46
-
47
- description: Optional[str] = None
48
- """Description of this monitor."""
49
-
50
- evaluations: Optional[List[Evaluation]] = None
51
- """An array of all evaluations performed by this monitor.
52
-
53
- Each one corresponds to a separate monitor event.
54
- """
55
-
56
- stats: Optional[DataStats] = None
57
- """
58
- Contains five fields used for stats of this monitor: total evaluations,
59
- completed evaluations, failed evaluations, queued evaluations, and in progress
60
- evaluations.
61
- """
62
-
63
- updated_at: Optional[datetime] = None
64
- """The most recent time the monitor was modified in UTC."""
65
-
66
- user_id: Optional[str] = None
67
- """User ID of the user who created the monitor."""
68
-
69
-
70
- class MonitorRetrieveResponse(BaseModel):
71
- success: bool
72
- """Represents whether the request was completed successfully."""
73
-
74
- data: Optional[Data] = None
75
-
76
- message: Optional[str] = None
77
- """The accompanying message for the request.
78
-
79
- Includes error details when applicable.
80
- """