deeprails 0.1.0

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.
Files changed (131) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +18 -0
  4. data/README.md +273 -0
  5. data/SECURITY.md +27 -0
  6. data/lib/deeprails/client.rb +82 -0
  7. data/lib/deeprails/errors.rb +228 -0
  8. data/lib/deeprails/file_part.rb +58 -0
  9. data/lib/deeprails/internal/transport/base_client.rb +567 -0
  10. data/lib/deeprails/internal/transport/pooled_net_requester.rb +198 -0
  11. data/lib/deeprails/internal/type/array_of.rb +168 -0
  12. data/lib/deeprails/internal/type/base_model.rb +531 -0
  13. data/lib/deeprails/internal/type/base_page.rb +55 -0
  14. data/lib/deeprails/internal/type/boolean.rb +77 -0
  15. data/lib/deeprails/internal/type/converter.rb +327 -0
  16. data/lib/deeprails/internal/type/enum.rb +131 -0
  17. data/lib/deeprails/internal/type/file_input.rb +111 -0
  18. data/lib/deeprails/internal/type/hash_of.rb +188 -0
  19. data/lib/deeprails/internal/type/request_parameters.rb +42 -0
  20. data/lib/deeprails/internal/type/union.rb +237 -0
  21. data/lib/deeprails/internal/type/unknown.rb +81 -0
  22. data/lib/deeprails/internal/util.rb +915 -0
  23. data/lib/deeprails/internal.rb +20 -0
  24. data/lib/deeprails/models/api_response.rb +119 -0
  25. data/lib/deeprails/models/defend_create_workflow_params.rb +132 -0
  26. data/lib/deeprails/models/defend_response.rb +123 -0
  27. data/lib/deeprails/models/defend_retrieve_event_params.rb +20 -0
  28. data/lib/deeprails/models/defend_retrieve_workflow_params.rb +14 -0
  29. data/lib/deeprails/models/defend_submit_event_params.rb +98 -0
  30. data/lib/deeprails/models/defend_update_workflow_params.rb +49 -0
  31. data/lib/deeprails/models/evaluate_create_params.rb +123 -0
  32. data/lib/deeprails/models/evaluate_retrieve_params.rb +14 -0
  33. data/lib/deeprails/models/evaluation.rb +225 -0
  34. data/lib/deeprails/models/monitor_create_params.rb +30 -0
  35. data/lib/deeprails/models/monitor_retrieve_params.rb +22 -0
  36. data/lib/deeprails/models/monitor_retrieve_response.rb +186 -0
  37. data/lib/deeprails/models/monitor_submit_event_params.rb +124 -0
  38. data/lib/deeprails/models/monitor_submit_event_response.rb +77 -0
  39. data/lib/deeprails/models/monitor_update_params.rb +54 -0
  40. data/lib/deeprails/models/workflow_event_response.rb +57 -0
  41. data/lib/deeprails/models.rb +71 -0
  42. data/lib/deeprails/request_options.rb +77 -0
  43. data/lib/deeprails/resources/defend.rb +162 -0
  44. data/lib/deeprails/resources/evaluate.rb +70 -0
  45. data/lib/deeprails/resources/monitor.rb +130 -0
  46. data/lib/deeprails/version.rb +5 -0
  47. data/lib/deeprails.rb +73 -0
  48. data/manifest.yaml +15 -0
  49. data/rbi/deeprails/client.rbi +55 -0
  50. data/rbi/deeprails/errors.rbi +205 -0
  51. data/rbi/deeprails/file_part.rbi +37 -0
  52. data/rbi/deeprails/internal/transport/base_client.rbi +293 -0
  53. data/rbi/deeprails/internal/transport/pooled_net_requester.rbi +79 -0
  54. data/rbi/deeprails/internal/type/array_of.rbi +104 -0
  55. data/rbi/deeprails/internal/type/base_model.rbi +304 -0
  56. data/rbi/deeprails/internal/type/base_page.rbi +42 -0
  57. data/rbi/deeprails/internal/type/boolean.rbi +58 -0
  58. data/rbi/deeprails/internal/type/converter.rbi +216 -0
  59. data/rbi/deeprails/internal/type/enum.rbi +82 -0
  60. data/rbi/deeprails/internal/type/file_input.rbi +59 -0
  61. data/rbi/deeprails/internal/type/hash_of.rbi +104 -0
  62. data/rbi/deeprails/internal/type/request_parameters.rbi +29 -0
  63. data/rbi/deeprails/internal/type/union.rbi +128 -0
  64. data/rbi/deeprails/internal/type/unknown.rbi +58 -0
  65. data/rbi/deeprails/internal/util.rbi +487 -0
  66. data/rbi/deeprails/internal.rbi +18 -0
  67. data/rbi/deeprails/models/api_response.rbi +204 -0
  68. data/rbi/deeprails/models/defend_create_workflow_params.rbi +270 -0
  69. data/rbi/deeprails/models/defend_response.rbi +198 -0
  70. data/rbi/deeprails/models/defend_retrieve_event_params.rbi +38 -0
  71. data/rbi/deeprails/models/defend_retrieve_workflow_params.rbi +30 -0
  72. data/rbi/deeprails/models/defend_submit_event_params.rbi +170 -0
  73. data/rbi/deeprails/models/defend_update_workflow_params.rbi +107 -0
  74. data/rbi/deeprails/models/evaluate_create_params.rbi +253 -0
  75. data/rbi/deeprails/models/evaluate_retrieve_params.rbi +27 -0
  76. data/rbi/deeprails/models/evaluation.rbi +382 -0
  77. data/rbi/deeprails/models/monitor_create_params.rbi +54 -0
  78. data/rbi/deeprails/models/monitor_retrieve_params.rbi +43 -0
  79. data/rbi/deeprails/models/monitor_retrieve_response.rbi +336 -0
  80. data/rbi/deeprails/models/monitor_submit_event_params.rbi +264 -0
  81. data/rbi/deeprails/models/monitor_submit_event_response.rbi +134 -0
  82. data/rbi/deeprails/models/monitor_update_params.rbi +114 -0
  83. data/rbi/deeprails/models/workflow_event_response.rbi +85 -0
  84. data/rbi/deeprails/models.rbi +33 -0
  85. data/rbi/deeprails/request_options.rbi +59 -0
  86. data/rbi/deeprails/resources/defend.rbi +151 -0
  87. data/rbi/deeprails/resources/evaluate.rbi +66 -0
  88. data/rbi/deeprails/resources/monitor.rbi +114 -0
  89. data/rbi/deeprails/version.rbi +5 -0
  90. data/sig/deeprails/client.rbs +30 -0
  91. data/sig/deeprails/errors.rbs +117 -0
  92. data/sig/deeprails/file_part.rbs +21 -0
  93. data/sig/deeprails/internal/transport/base_client.rbs +131 -0
  94. data/sig/deeprails/internal/transport/pooled_net_requester.rbs +45 -0
  95. data/sig/deeprails/internal/type/array_of.rbs +48 -0
  96. data/sig/deeprails/internal/type/base_model.rbs +102 -0
  97. data/sig/deeprails/internal/type/base_page.rbs +24 -0
  98. data/sig/deeprails/internal/type/boolean.rbs +26 -0
  99. data/sig/deeprails/internal/type/converter.rbs +79 -0
  100. data/sig/deeprails/internal/type/enum.rbs +32 -0
  101. data/sig/deeprails/internal/type/file_input.rbs +25 -0
  102. data/sig/deeprails/internal/type/hash_of.rbs +48 -0
  103. data/sig/deeprails/internal/type/request_parameters.rbs +19 -0
  104. data/sig/deeprails/internal/type/union.rbs +52 -0
  105. data/sig/deeprails/internal/type/unknown.rbs +26 -0
  106. data/sig/deeprails/internal/util.rbs +185 -0
  107. data/sig/deeprails/internal.rbs +9 -0
  108. data/sig/deeprails/models/api_response.rbs +100 -0
  109. data/sig/deeprails/models/defend_create_workflow_params.rbs +98 -0
  110. data/sig/deeprails/models/defend_response.rbs +96 -0
  111. data/sig/deeprails/models/defend_retrieve_event_params.rbs +23 -0
  112. data/sig/deeprails/models/defend_retrieve_workflow_params.rbs +15 -0
  113. data/sig/deeprails/models/defend_submit_event_params.rbs +73 -0
  114. data/sig/deeprails/models/defend_update_workflow_params.rbs +55 -0
  115. data/sig/deeprails/models/evaluate_create_params.rbs +107 -0
  116. data/sig/deeprails/models/evaluate_retrieve_params.rbs +15 -0
  117. data/sig/deeprails/models/evaluation.rbs +189 -0
  118. data/sig/deeprails/models/monitor_create_params.rbs +30 -0
  119. data/sig/deeprails/models/monitor_retrieve_params.rbs +25 -0
  120. data/sig/deeprails/models/monitor_retrieve_response.rbs +167 -0
  121. data/sig/deeprails/models/monitor_submit_event_params.rbs +107 -0
  122. data/sig/deeprails/models/monitor_submit_event_response.rbs +70 -0
  123. data/sig/deeprails/models/monitor_update_params.rbs +55 -0
  124. data/sig/deeprails/models/workflow_event_response.rbs +46 -0
  125. data/sig/deeprails/models.rbs +31 -0
  126. data/sig/deeprails/request_options.rbs +34 -0
  127. data/sig/deeprails/resources/defend.rbs +47 -0
  128. data/sig/deeprails/resources/evaluate.rbs +22 -0
  129. data/sig/deeprails/resources/monitor.rbs +38 -0
  130. data/sig/deeprails/version.rbs +3 -0
  131. metadata +188 -0
@@ -0,0 +1,134 @@
1
+ # typed: strong
2
+
3
+ module Deeprails
4
+ module Models
5
+ class MonitorSubmitEventResponse < Deeprails::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Deeprails::Models::MonitorSubmitEventResponse,
10
+ Deeprails::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # Represents whether the request was completed successfully.
15
+ sig { returns(T::Boolean) }
16
+ attr_accessor :success
17
+
18
+ # Response payload for monitor event operations.
19
+ sig do
20
+ returns(T.nilable(Deeprails::Models::MonitorSubmitEventResponse::Data))
21
+ end
22
+ attr_reader :data
23
+
24
+ sig do
25
+ params(
26
+ data: Deeprails::Models::MonitorSubmitEventResponse::Data::OrHash
27
+ ).void
28
+ end
29
+ attr_writer :data
30
+
31
+ # The accompanying message for the request. Includes error details when
32
+ # applicable.
33
+ sig { returns(T.nilable(String)) }
34
+ attr_reader :message
35
+
36
+ sig { params(message: String).void }
37
+ attr_writer :message
38
+
39
+ # Response wrapper for operations returning a MonitorEventResponse.
40
+ sig do
41
+ params(
42
+ success: T::Boolean,
43
+ data: Deeprails::Models::MonitorSubmitEventResponse::Data::OrHash,
44
+ message: String
45
+ ).returns(T.attached_class)
46
+ end
47
+ def self.new(
48
+ # Represents whether the request was completed successfully.
49
+ success:,
50
+ # Response payload for monitor event operations.
51
+ data: nil,
52
+ # The accompanying message for the request. Includes error details when
53
+ # applicable.
54
+ message: nil
55
+ )
56
+ end
57
+
58
+ sig do
59
+ override.returns(
60
+ {
61
+ success: T::Boolean,
62
+ data: Deeprails::Models::MonitorSubmitEventResponse::Data,
63
+ message: String
64
+ }
65
+ )
66
+ end
67
+ def to_hash
68
+ end
69
+
70
+ class Data < Deeprails::Internal::Type::BaseModel
71
+ OrHash =
72
+ T.type_alias do
73
+ T.any(
74
+ Deeprails::Models::MonitorSubmitEventResponse::Data,
75
+ Deeprails::Internal::AnyHash
76
+ )
77
+ end
78
+
79
+ # A unique evaluation ID associated with this event.
80
+ sig { returns(String) }
81
+ attr_accessor :evaluation_id
82
+
83
+ # A unique monitor event ID.
84
+ sig { returns(String) }
85
+ attr_accessor :event_id
86
+
87
+ # Monitor ID associated with this event.
88
+ sig { returns(String) }
89
+ attr_accessor :monitor_id
90
+
91
+ # The time the monitor event was created in UTC.
92
+ sig { returns(T.nilable(Time)) }
93
+ attr_reader :created_at
94
+
95
+ sig { params(created_at: Time).void }
96
+ attr_writer :created_at
97
+
98
+ # Response payload for monitor event operations.
99
+ sig do
100
+ params(
101
+ evaluation_id: String,
102
+ event_id: String,
103
+ monitor_id: String,
104
+ created_at: Time
105
+ ).returns(T.attached_class)
106
+ end
107
+ def self.new(
108
+ # A unique evaluation ID associated with this event.
109
+ evaluation_id:,
110
+ # A unique monitor event ID.
111
+ event_id:,
112
+ # Monitor ID associated with this event.
113
+ monitor_id:,
114
+ # The time the monitor event was created in UTC.
115
+ created_at: nil
116
+ )
117
+ end
118
+
119
+ sig do
120
+ override.returns(
121
+ {
122
+ evaluation_id: String,
123
+ event_id: String,
124
+ monitor_id: String,
125
+ created_at: Time
126
+ }
127
+ )
128
+ end
129
+ def to_hash
130
+ end
131
+ end
132
+ end
133
+ end
134
+ end
@@ -0,0 +1,114 @@
1
+ # typed: strong
2
+
3
+ module Deeprails
4
+ module Models
5
+ class MonitorUpdateParams < Deeprails::Internal::Type::BaseModel
6
+ extend Deeprails::Internal::Type::RequestParameters::Converter
7
+ include Deeprails::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(Deeprails::MonitorUpdateParams, Deeprails::Internal::AnyHash)
12
+ end
13
+
14
+ # Description of the monitor.
15
+ sig { returns(T.nilable(String)) }
16
+ attr_reader :description
17
+
18
+ sig { params(description: String).void }
19
+ attr_writer :description
20
+
21
+ # Status of the monitor. Can be `active` or `inactive`. Inactive monitors no
22
+ # longer record and evaluate events.
23
+ sig do
24
+ returns(
25
+ T.nilable(Deeprails::MonitorUpdateParams::MonitorStatus::OrSymbol)
26
+ )
27
+ end
28
+ attr_reader :monitor_status
29
+
30
+ sig do
31
+ params(
32
+ monitor_status:
33
+ Deeprails::MonitorUpdateParams::MonitorStatus::OrSymbol
34
+ ).void
35
+ end
36
+ attr_writer :monitor_status
37
+
38
+ # Name of the monitor.
39
+ sig { returns(T.nilable(String)) }
40
+ attr_reader :name
41
+
42
+ sig { params(name: String).void }
43
+ attr_writer :name
44
+
45
+ sig do
46
+ params(
47
+ description: String,
48
+ monitor_status:
49
+ Deeprails::MonitorUpdateParams::MonitorStatus::OrSymbol,
50
+ name: String,
51
+ request_options: Deeprails::RequestOptions::OrHash
52
+ ).returns(T.attached_class)
53
+ end
54
+ def self.new(
55
+ # Description of the monitor.
56
+ description: nil,
57
+ # Status of the monitor. Can be `active` or `inactive`. Inactive monitors no
58
+ # longer record and evaluate events.
59
+ monitor_status: nil,
60
+ # Name of the monitor.
61
+ name: nil,
62
+ request_options: {}
63
+ )
64
+ end
65
+
66
+ sig do
67
+ override.returns(
68
+ {
69
+ description: String,
70
+ monitor_status:
71
+ Deeprails::MonitorUpdateParams::MonitorStatus::OrSymbol,
72
+ name: String,
73
+ request_options: Deeprails::RequestOptions
74
+ }
75
+ )
76
+ end
77
+ def to_hash
78
+ end
79
+
80
+ # Status of the monitor. Can be `active` or `inactive`. Inactive monitors no
81
+ # longer record and evaluate events.
82
+ module MonitorStatus
83
+ extend Deeprails::Internal::Type::Enum
84
+
85
+ TaggedSymbol =
86
+ T.type_alias do
87
+ T.all(Symbol, Deeprails::MonitorUpdateParams::MonitorStatus)
88
+ end
89
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
90
+
91
+ ACTIVE =
92
+ T.let(
93
+ :active,
94
+ Deeprails::MonitorUpdateParams::MonitorStatus::TaggedSymbol
95
+ )
96
+ INACTIVE =
97
+ T.let(
98
+ :inactive,
99
+ Deeprails::MonitorUpdateParams::MonitorStatus::TaggedSymbol
100
+ )
101
+
102
+ sig do
103
+ override.returns(
104
+ T::Array[
105
+ Deeprails::MonitorUpdateParams::MonitorStatus::TaggedSymbol
106
+ ]
107
+ )
108
+ end
109
+ def self.values
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,85 @@
1
+ # typed: strong
2
+
3
+ module Deeprails
4
+ module Models
5
+ class WorkflowEventResponse < Deeprails::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Deeprails::WorkflowEventResponse, Deeprails::Internal::AnyHash)
9
+ end
10
+
11
+ # A unique workflow event ID.
12
+ sig { returns(String) }
13
+ attr_accessor :event_id
14
+
15
+ # Workflow ID associated with the event.
16
+ sig { returns(String) }
17
+ attr_accessor :workflow_id
18
+
19
+ # Count of improvement attempts for the event. If greater than one then all
20
+ # previous improvement attempts failed.
21
+ sig { returns(T.nilable(Integer)) }
22
+ attr_reader :attempt_number
23
+
24
+ sig { params(attempt_number: Integer).void }
25
+ attr_writer :attempt_number
26
+
27
+ # A unique evaluation ID associated with this event. Every event has one or more
28
+ # evaluation attempts.
29
+ sig { returns(T.nilable(String)) }
30
+ attr_reader :evaluation_id
31
+
32
+ sig { params(evaluation_id: String).void }
33
+ attr_writer :evaluation_id
34
+
35
+ # `False` if evaluation passed all of the guardrail metrics, `True` if evaluation
36
+ # failed any of the guardrail metrics.
37
+ sig { returns(T.nilable(T::Boolean)) }
38
+ attr_reader :filtered
39
+
40
+ sig { params(filtered: T::Boolean).void }
41
+ attr_writer :filtered
42
+
43
+ # Response payload for workflow event operations.
44
+ sig do
45
+ params(
46
+ event_id: String,
47
+ workflow_id: String,
48
+ attempt_number: Integer,
49
+ evaluation_id: String,
50
+ filtered: T::Boolean
51
+ ).returns(T.attached_class)
52
+ end
53
+ def self.new(
54
+ # A unique workflow event ID.
55
+ event_id:,
56
+ # Workflow ID associated with the event.
57
+ workflow_id:,
58
+ # Count of improvement attempts for the event. If greater than one then all
59
+ # previous improvement attempts failed.
60
+ attempt_number: nil,
61
+ # A unique evaluation ID associated with this event. Every event has one or more
62
+ # evaluation attempts.
63
+ evaluation_id: nil,
64
+ # `False` if evaluation passed all of the guardrail metrics, `True` if evaluation
65
+ # failed any of the guardrail metrics.
66
+ filtered: nil
67
+ )
68
+ end
69
+
70
+ sig do
71
+ override.returns(
72
+ {
73
+ event_id: String,
74
+ workflow_id: String,
75
+ attempt_number: Integer,
76
+ evaluation_id: String,
77
+ filtered: T::Boolean
78
+ }
79
+ )
80
+ end
81
+ def to_hash
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,33 @@
1
+ # typed: strong
2
+
3
+ module Deeprails
4
+ APIResponse = Deeprails::Models::APIResponse
5
+
6
+ DefendCreateWorkflowParams = Deeprails::Models::DefendCreateWorkflowParams
7
+
8
+ DefendResponse = Deeprails::Models::DefendResponse
9
+
10
+ DefendRetrieveEventParams = Deeprails::Models::DefendRetrieveEventParams
11
+
12
+ DefendRetrieveWorkflowParams = Deeprails::Models::DefendRetrieveWorkflowParams
13
+
14
+ DefendSubmitEventParams = Deeprails::Models::DefendSubmitEventParams
15
+
16
+ DefendUpdateWorkflowParams = Deeprails::Models::DefendUpdateWorkflowParams
17
+
18
+ EvaluateCreateParams = Deeprails::Models::EvaluateCreateParams
19
+
20
+ EvaluateRetrieveParams = Deeprails::Models::EvaluateRetrieveParams
21
+
22
+ Evaluation = Deeprails::Models::Evaluation
23
+
24
+ MonitorCreateParams = Deeprails::Models::MonitorCreateParams
25
+
26
+ MonitorRetrieveParams = Deeprails::Models::MonitorRetrieveParams
27
+
28
+ MonitorSubmitEventParams = Deeprails::Models::MonitorSubmitEventParams
29
+
30
+ MonitorUpdateParams = Deeprails::Models::MonitorUpdateParams
31
+
32
+ WorkflowEventResponse = Deeprails::Models::WorkflowEventResponse
33
+ end
@@ -0,0 +1,59 @@
1
+ # typed: strong
2
+
3
+ module Deeprails
4
+ # Specify HTTP behaviour to use for a specific request. These options supplement
5
+ # or override those provided at the client level.
6
+ #
7
+ # When making a request, you can pass an actual {RequestOptions} instance, or
8
+ # simply pass a Hash with symbol keys matching the attributes on this class.
9
+ class RequestOptions < Deeprails::Internal::Type::BaseModel
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(Deeprails::RequestOptions, Deeprails::Internal::AnyHash)
13
+ end
14
+
15
+ # @api private
16
+ sig { params(opts: Deeprails::RequestOptions::OrHash).void }
17
+ def self.validate!(opts)
18
+ end
19
+
20
+ # Idempotency key to send with request and all associated retries. Will only be
21
+ # sent for write requests.
22
+ sig { returns(T.nilable(String)) }
23
+ attr_accessor :idempotency_key
24
+
25
+ # Extra query params to send with the request. These are `.merge`’d into any
26
+ # `query` given at the client level.
27
+ sig do
28
+ returns(
29
+ T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))])
30
+ )
31
+ end
32
+ attr_accessor :extra_query
33
+
34
+ # Extra headers to send with the request. These are `.merged`’d into any
35
+ # `extra_headers` given at the client level.
36
+ sig { returns(T.nilable(T::Hash[String, T.nilable(String)])) }
37
+ attr_accessor :extra_headers
38
+
39
+ # Extra data to send with the request. These are deep merged into any data
40
+ # generated as part of the normal request.
41
+ sig { returns(T.nilable(T.anything)) }
42
+ attr_accessor :extra_body
43
+
44
+ # Maximum number of retries to attempt after a failed initial request.
45
+ sig { returns(T.nilable(Integer)) }
46
+ attr_accessor :max_retries
47
+
48
+ # Request timeout in seconds.
49
+ sig { returns(T.nilable(Float)) }
50
+ attr_accessor :timeout
51
+
52
+ # Returns a new instance of RequestOptions.
53
+ sig do
54
+ params(values: Deeprails::Internal::AnyHash).returns(T.attached_class)
55
+ end
56
+ def self.new(values = {})
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,151 @@
1
+ # typed: strong
2
+
3
+ module Deeprails
4
+ module Resources
5
+ class Defend
6
+ # Create a new guardrail workflow with optional guardrail thresholds and
7
+ # improvement actions.
8
+ sig do
9
+ params(
10
+ improvement_action:
11
+ T.nilable(
12
+ Deeprails::DefendCreateWorkflowParams::ImprovementAction::OrSymbol
13
+ ),
14
+ metrics: T::Hash[Symbol, Float],
15
+ name: String,
16
+ type: Deeprails::DefendCreateWorkflowParams::Type::OrSymbol,
17
+ automatic_tolerance:
18
+ Deeprails::DefendCreateWorkflowParams::AutomaticTolerance::OrSymbol,
19
+ description: String,
20
+ max_retries: Integer,
21
+ request_options: Deeprails::RequestOptions::OrHash
22
+ ).returns(Deeprails::DefendResponse)
23
+ end
24
+ def create_workflow(
25
+ # The action used to improve outputs that fail one or guardrail metrics for the
26
+ # workflow events. May be `regenerate`, `fixit`, or null which represents “do
27
+ # nothing”. ReGen runs the user's exact input prompt with minor induced variance.
28
+ # Fixit attempts to directly address the shortcomings of the output using the
29
+ # guardrail failure rationale. Do nothing does not attempt any improvement.
30
+ improvement_action:,
31
+ # Mapping of guardrail metrics to floating point threshold values. If the workflow
32
+ # type is automatic, only the metric names are used (`automatic_tolerance`
33
+ # determines thresholds). Possible metrics are `correctness`, `completeness`,
34
+ # `instruction_adherence`, `context_adherence`, `ground_truth_adherence`, or
35
+ # `comprehensive_safety`.
36
+ metrics:,
37
+ # Name of the workflow.
38
+ name:,
39
+ # Type of thresholds to use for the workflow, either `automatic` or `custom`.
40
+ # Automatic thresholds are assigned internally after the user specifies a
41
+ # qualitative tolerance for the metrics, whereas custom metrics allow the user to
42
+ # set the threshold for each metric as a floating point number between 0.0 and
43
+ # 1.0.
44
+ type:,
45
+ # Hallucination tolerance for automatic workflows; may be `low`, `medium`, or
46
+ # `high`. Ignored if `type` is `custom`.
47
+ automatic_tolerance: nil,
48
+ # Description for the workflow.
49
+ description: nil,
50
+ # Max. number of improvement action retries until a given event passes the
51
+ # guardrails. Defaults to 10.
52
+ max_retries: nil,
53
+ request_options: {}
54
+ )
55
+ end
56
+
57
+ # Retrieve a specific event of a guardrail workflow.
58
+ sig do
59
+ params(
60
+ event_id: String,
61
+ workflow_id: String,
62
+ request_options: Deeprails::RequestOptions::OrHash
63
+ ).returns(Deeprails::WorkflowEventResponse)
64
+ end
65
+ def retrieve_event(
66
+ # The ID of the requested workflow event.
67
+ event_id,
68
+ # The ID of the workflow associated with the event.
69
+ workflow_id:,
70
+ request_options: {}
71
+ )
72
+ end
73
+
74
+ # Retrieve the details for a specific guardrail workflow.
75
+ sig do
76
+ params(
77
+ workflow_id: String,
78
+ request_options: Deeprails::RequestOptions::OrHash
79
+ ).returns(Deeprails::DefendResponse)
80
+ end
81
+ def retrieve_workflow(
82
+ # The ID of the workflow to retrieve.
83
+ workflow_id,
84
+ request_options: {}
85
+ )
86
+ end
87
+
88
+ # Submit a model input and output pair to a workflow for evaluation.
89
+ sig do
90
+ params(
91
+ workflow_id: String,
92
+ model_input: Deeprails::DefendSubmitEventParams::ModelInput::OrHash,
93
+ model_output: String,
94
+ model_used: String,
95
+ nametag: String,
96
+ run_mode: Deeprails::DefendSubmitEventParams::RunMode::OrSymbol,
97
+ request_options: Deeprails::RequestOptions::OrHash
98
+ ).returns(Deeprails::WorkflowEventResponse)
99
+ end
100
+ def submit_event(
101
+ # Workflow ID associated with this event.
102
+ workflow_id,
103
+ # A dictionary of inputs sent to the LLM to generate output. This must contain a
104
+ # `user_prompt` field and an optional `context` field. Additional properties are
105
+ # allowed.
106
+ model_input:,
107
+ # Output generated by the LLM to be evaluated.
108
+ model_output:,
109
+ # Model ID used to generate the output, like `gpt-4o` or `o3`.
110
+ model_used:,
111
+ # An optional, user-defined tag for the event.
112
+ nametag:,
113
+ # Run mode for the workflow event. The run mode allows the user to optimize for
114
+ # speed, accuracy, and cost by determining which models are used to evaluate the
115
+ # event. Available run modes include `precision_plus`, `precision`, `smart`, and
116
+ # `economy`. Defaults to `smart`.
117
+ run_mode:,
118
+ request_options: {}
119
+ )
120
+ end
121
+
122
+ # Update an existing guardrail workflow.
123
+ sig do
124
+ params(
125
+ workflow_id: String,
126
+ description: String,
127
+ name: String,
128
+ type: Deeprails::DefendUpdateWorkflowParams::Type::OrSymbol,
129
+ request_options: Deeprails::RequestOptions::OrHash
130
+ ).returns(Deeprails::DefendResponse)
131
+ end
132
+ def update_workflow(
133
+ # The ID of the workflow to edit.
134
+ workflow_id,
135
+ # Description for the workflow.
136
+ description: nil,
137
+ # Name of the workflow.
138
+ name: nil,
139
+ # Type of thresholds to use for the workflow, either `automatic` or `custom`.
140
+ type: nil,
141
+ request_options: {}
142
+ )
143
+ end
144
+
145
+ # @api private
146
+ sig { params(client: Deeprails::Client).returns(T.attached_class) }
147
+ def self.new(client:)
148
+ end
149
+ end
150
+ end
151
+ end
@@ -0,0 +1,66 @@
1
+ # typed: strong
2
+
3
+ module Deeprails
4
+ module Resources
5
+ class Evaluate
6
+ # Use this endpoint to evaluate a model's input and output pair against selected
7
+ # guardrail metrics
8
+ sig do
9
+ params(
10
+ model_input: Deeprails::EvaluateCreateParams::ModelInput::OrHash,
11
+ model_output: String,
12
+ run_mode: Deeprails::EvaluateCreateParams::RunMode::OrSymbol,
13
+ guardrail_metrics:
14
+ T::Array[
15
+ Deeprails::EvaluateCreateParams::GuardrailMetric::OrSymbol
16
+ ],
17
+ model_used: String,
18
+ nametag: String,
19
+ request_options: Deeprails::RequestOptions::OrHash
20
+ ).returns(Deeprails::Evaluation)
21
+ end
22
+ def create(
23
+ # A dictionary of inputs sent to the LLM to generate output. This must contain a
24
+ # `user_prompt` field and an optional `context` field. Additional properties are
25
+ # allowed.
26
+ model_input:,
27
+ # Output generated by the LLM to be evaluated.
28
+ model_output:,
29
+ # Run mode for the evaluation. The run mode allows the user to optimize for speed,
30
+ # accuracy, and cost by determining which models are used to evaluate the event.
31
+ # Available run modes include `precision_plus`, `precision`, `smart`, and
32
+ # `economy`. Defaults to `smart`.
33
+ run_mode:,
34
+ # An array of guardrail metrics that the model input and output pair will be
35
+ # evaluated on. For non-enterprise users, these will be limited to the allowed
36
+ # guardrail metrics.
37
+ guardrail_metrics: nil,
38
+ # Model ID used to generate the output, like `gpt-4o` or `o3`.
39
+ model_used: nil,
40
+ # An optional, user-defined tag for the evaluation.
41
+ nametag: nil,
42
+ request_options: {}
43
+ )
44
+ end
45
+
46
+ # Retrieve the evaluation record for a given evaluation ID.
47
+ sig do
48
+ params(
49
+ eval_id: String,
50
+ request_options: Deeprails::RequestOptions::OrHash
51
+ ).returns(Deeprails::Evaluation)
52
+ end
53
+ def retrieve(
54
+ # The ID of the evaluation to retrieve.
55
+ eval_id,
56
+ request_options: {}
57
+ )
58
+ end
59
+
60
+ # @api private
61
+ sig { params(client: Deeprails::Client).returns(T.attached_class) }
62
+ def self.new(client:)
63
+ end
64
+ end
65
+ end
66
+ end