deeprails 0.17.0 → 0.23.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 (73) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +71 -0
  3. data/README.md +3 -3
  4. data/lib/deeprails/internal/stream.rb +29 -0
  5. data/lib/deeprails/internal/transport/base_client.rb +3 -1
  6. data/lib/deeprails/internal/transport/pooled_net_requester.rb +12 -10
  7. data/lib/deeprails/internal/type/base_stream.rb +83 -0
  8. data/lib/deeprails/internal/util.rb +7 -2
  9. data/lib/deeprails/models/defend_create_workflow_params.rb +14 -1
  10. data/lib/deeprails/models/defend_response.rb +136 -12
  11. data/lib/deeprails/models/defend_submit_and_stream_event_params.rb +83 -0
  12. data/lib/deeprails/models/defend_submit_and_stream_event_response.rb +7 -0
  13. data/lib/deeprails/models/defend_submit_event_params.rb +52 -16
  14. data/lib/deeprails/models/defend_update_response.rb +9 -1
  15. data/lib/deeprails/models/defend_update_workflow_params.rb +131 -5
  16. data/lib/deeprails/models/file_upload_params.rb +5 -5
  17. data/lib/deeprails/models/monitor_create_params.rb +14 -1
  18. data/lib/deeprails/models/monitor_detail_response.rb +56 -17
  19. data/lib/deeprails/models/monitor_event_detail_response.rb +6 -2
  20. data/lib/deeprails/models/monitor_submit_event_params.rb +52 -16
  21. data/lib/deeprails/models/monitor_update_params.rb +46 -5
  22. data/lib/deeprails/models/workflow_event_detail_response.rb +106 -34
  23. data/lib/deeprails/models/workflow_event_response.rb +9 -1
  24. data/lib/deeprails/models.rb +2 -0
  25. data/lib/deeprails/resources/defend.rb +70 -7
  26. data/lib/deeprails/resources/files.rb +2 -2
  27. data/lib/deeprails/resources/monitor.rb +14 -6
  28. data/lib/deeprails/version.rb +1 -1
  29. data/lib/deeprails.rb +5 -0
  30. data/manifest.yaml +1 -0
  31. data/rbi/deeprails/internal/stream.rbi +20 -0
  32. data/rbi/deeprails/internal/transport/base_client.rbi +18 -2
  33. data/rbi/deeprails/internal/type/base_stream.rbi +75 -0
  34. data/rbi/deeprails/models/defend_create_workflow_params.rbi +21 -0
  35. data/rbi/deeprails/models/defend_response.rbi +288 -16
  36. data/rbi/deeprails/models/defend_submit_and_stream_event_params.rbi +148 -0
  37. data/rbi/deeprails/models/defend_submit_and_stream_event_response.rbi +7 -0
  38. data/rbi/deeprails/models/defend_submit_event_params.rbi +108 -25
  39. data/rbi/deeprails/models/defend_update_response.rbi +14 -3
  40. data/rbi/deeprails/models/defend_update_workflow_params.rbi +298 -4
  41. data/rbi/deeprails/models/file_upload_params.rbi +9 -6
  42. data/rbi/deeprails/models/monitor_create_params.rbi +21 -0
  43. data/rbi/deeprails/models/monitor_detail_response.rbi +107 -26
  44. data/rbi/deeprails/models/monitor_event_detail_response.rbi +4 -2
  45. data/rbi/deeprails/models/monitor_submit_event_params.rbi +108 -25
  46. data/rbi/deeprails/models/monitor_update_params.rbi +107 -4
  47. data/rbi/deeprails/models/workflow_event_detail_response.rbi +209 -66
  48. data/rbi/deeprails/models/workflow_event_response.rbi +8 -0
  49. data/rbi/deeprails/models.rbi +3 -0
  50. data/rbi/deeprails/resources/defend.rbi +99 -9
  51. data/rbi/deeprails/resources/files.rbi +3 -3
  52. data/rbi/deeprails/resources/monitor.rbi +28 -8
  53. data/sig/deeprails/internal/stream.rbs +9 -0
  54. data/sig/deeprails/internal/type/base_stream.rbs +38 -0
  55. data/sig/deeprails/models/defend_create_workflow_params.rbs +7 -0
  56. data/sig/deeprails/models/defend_response.rbs +114 -8
  57. data/sig/deeprails/models/defend_submit_and_stream_event_params.rbs +74 -0
  58. data/sig/deeprails/models/defend_submit_and_stream_event_response.rbs +5 -0
  59. data/sig/deeprails/models/defend_submit_event_params.rbs +39 -10
  60. data/sig/deeprails/models/defend_update_response.rbs +10 -3
  61. data/sig/deeprails/models/defend_update_workflow_params.rbs +103 -1
  62. data/sig/deeprails/models/file_upload_params.rbs +4 -4
  63. data/sig/deeprails/models/monitor_create_params.rbs +7 -0
  64. data/sig/deeprails/models/monitor_detail_response.rbs +36 -9
  65. data/sig/deeprails/models/monitor_submit_event_params.rbs +39 -10
  66. data/sig/deeprails/models/monitor_update_params.rbs +45 -1
  67. data/sig/deeprails/models/workflow_event_detail_response.rbs +100 -27
  68. data/sig/deeprails/models/workflow_event_response.rbs +5 -0
  69. data/sig/deeprails/models.rbs +2 -0
  70. data/sig/deeprails/resources/defend.rbs +20 -0
  71. data/sig/deeprails/resources/files.rbs +1 -1
  72. data/sig/deeprails/resources/monitor.rbs +4 -0
  73. metadata +28 -2
@@ -0,0 +1,148 @@
1
+ # typed: strong
2
+
3
+ module Deeprails
4
+ module Models
5
+ class DefendSubmitAndStreamEventParams < 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(
12
+ Deeprails::DefendSubmitAndStreamEventParams,
13
+ Deeprails::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # The input provided to the model (e.g., prompt, messages).
18
+ sig { returns(T::Hash[Symbol, T.anything]) }
19
+ attr_accessor :model_input
20
+
21
+ # The output generated by the model to be evaluated.
22
+ sig { returns(String) }
23
+ attr_accessor :model_output
24
+
25
+ # The model that generated the output (e.g., "gpt-4", "claude-3").
26
+ sig { returns(String) }
27
+ attr_accessor :model_used
28
+
29
+ # The evaluation run mode. Streaming only supports fast, precision, and
30
+ # precision_codex.
31
+ sig do
32
+ returns(Deeprails::DefendSubmitAndStreamEventParams::RunMode::OrSymbol)
33
+ end
34
+ attr_accessor :run_mode
35
+
36
+ # Enable SSE streaming for real-time token feedback. Only supported for
37
+ # single-model run modes (fast, precision, precision_codex).
38
+ sig { returns(T.nilable(T::Boolean)) }
39
+ attr_reader :stream
40
+
41
+ sig { params(stream: T::Boolean).void }
42
+ attr_writer :stream
43
+
44
+ # Optional tag to identify this event.
45
+ sig { returns(T.nilable(String)) }
46
+ attr_reader :nametag
47
+
48
+ sig { params(nametag: String).void }
49
+ attr_writer :nametag
50
+
51
+ sig do
52
+ params(
53
+ model_input: T::Hash[Symbol, T.anything],
54
+ model_output: String,
55
+ model_used: String,
56
+ run_mode:
57
+ Deeprails::DefendSubmitAndStreamEventParams::RunMode::OrSymbol,
58
+ stream: T::Boolean,
59
+ nametag: String,
60
+ request_options: Deeprails::RequestOptions::OrHash
61
+ ).returns(T.attached_class)
62
+ end
63
+ def self.new(
64
+ # The input provided to the model (e.g., prompt, messages).
65
+ model_input:,
66
+ # The output generated by the model to be evaluated.
67
+ model_output:,
68
+ # The model that generated the output (e.g., "gpt-4", "claude-3").
69
+ model_used:,
70
+ # The evaluation run mode. Streaming only supports fast, precision, and
71
+ # precision_codex.
72
+ run_mode:,
73
+ # Enable SSE streaming for real-time token feedback. Only supported for
74
+ # single-model run modes (fast, precision, precision_codex).
75
+ stream: nil,
76
+ # Optional tag to identify this event.
77
+ nametag: nil,
78
+ request_options: {}
79
+ )
80
+ end
81
+
82
+ sig do
83
+ override.returns(
84
+ {
85
+ model_input: T::Hash[Symbol, T.anything],
86
+ model_output: String,
87
+ model_used: String,
88
+ run_mode:
89
+ Deeprails::DefendSubmitAndStreamEventParams::RunMode::OrSymbol,
90
+ stream: T::Boolean,
91
+ nametag: String,
92
+ request_options: Deeprails::RequestOptions
93
+ }
94
+ )
95
+ end
96
+ def to_hash
97
+ end
98
+
99
+ # The evaluation run mode. Streaming only supports fast, precision, and
100
+ # precision_codex.
101
+ module RunMode
102
+ extend Deeprails::Internal::Type::Enum
103
+
104
+ TaggedSymbol =
105
+ T.type_alias do
106
+ T.all(Symbol, Deeprails::DefendSubmitAndStreamEventParams::RunMode)
107
+ end
108
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
109
+
110
+ FAST =
111
+ T.let(
112
+ :fast,
113
+ Deeprails::DefendSubmitAndStreamEventParams::RunMode::TaggedSymbol
114
+ )
115
+ PRECISION =
116
+ T.let(
117
+ :precision,
118
+ Deeprails::DefendSubmitAndStreamEventParams::RunMode::TaggedSymbol
119
+ )
120
+ PRECISION_CODEX =
121
+ T.let(
122
+ :precision_codex,
123
+ Deeprails::DefendSubmitAndStreamEventParams::RunMode::TaggedSymbol
124
+ )
125
+ PRECISION_MAX =
126
+ T.let(
127
+ :precision_max,
128
+ Deeprails::DefendSubmitAndStreamEventParams::RunMode::TaggedSymbol
129
+ )
130
+ PRECISION_MAX_CODEX =
131
+ T.let(
132
+ :precision_max_codex,
133
+ Deeprails::DefendSubmitAndStreamEventParams::RunMode::TaggedSymbol
134
+ )
135
+
136
+ sig do
137
+ override.returns(
138
+ T::Array[
139
+ Deeprails::DefendSubmitAndStreamEventParams::RunMode::TaggedSymbol
140
+ ]
141
+ )
142
+ end
143
+ def self.values
144
+ end
145
+ end
146
+ end
147
+ end
148
+ end
@@ -0,0 +1,7 @@
1
+ # typed: strong
2
+
3
+ module Deeprails
4
+ module Models
5
+ DefendSubmitAndStreamEventResponse = String
6
+ end
7
+ end
@@ -15,8 +15,8 @@ module Deeprails
15
15
  end
16
16
 
17
17
  # A dictionary of inputs sent to the LLM to generate output. The dictionary must
18
- # contain at least a `user_prompt` field or a `system_prompt` field. For the
19
- # ground_truth_adherence guardrail metric, `ground_truth` should be provided.
18
+ # contain a `user_prompt` field. For the ground_truth_adherence guardrail metric,
19
+ # `ground_truth` should be provided.
20
20
  sig { returns(Deeprails::DefendSubmitEventParams::ModelInput) }
21
21
  attr_reader :model_input
22
22
 
@@ -37,8 +37,8 @@ module Deeprails
37
37
 
38
38
  # Run mode for the workflow event. The run mode allows the user to optimize for
39
39
  # speed, accuracy, and cost by determining which models are used to evaluate the
40
- # event. Available run modes include `precision_plus`, `precision`, `smart`, and
41
- # `economy`. Defaults to `smart`.
40
+ # event. Available run modes include `precision_plus_codex`, `precision_plus`,
41
+ # `precision`, `smart`, and `economy`. Defaults to `smart`.
42
42
  sig { returns(Deeprails::DefendSubmitEventParams::RunMode::OrSymbol) }
43
43
  attr_accessor :run_mode
44
44
 
@@ -61,8 +61,8 @@ module Deeprails
61
61
  end
62
62
  def self.new(
63
63
  # A dictionary of inputs sent to the LLM to generate output. The dictionary must
64
- # contain at least a `user_prompt` field or a `system_prompt` field. For the
65
- # ground_truth_adherence guardrail metric, `ground_truth` should be provided.
64
+ # contain a `user_prompt` field. For the ground_truth_adherence guardrail metric,
65
+ # `ground_truth` should be provided.
66
66
  model_input:,
67
67
  # Output generated by the LLM to be evaluated.
68
68
  model_output:,
@@ -70,8 +70,8 @@ module Deeprails
70
70
  model_used:,
71
71
  # Run mode for the workflow event. The run mode allows the user to optimize for
72
72
  # speed, accuracy, and cost by determining which models are used to evaluate the
73
- # event. Available run modes include `precision_plus`, `precision`, `smart`, and
74
- # `economy`. Defaults to `smart`.
73
+ # event. Available run modes include `precision_plus_codex`, `precision_plus`,
74
+ # `precision`, `smart`, and `economy`. Defaults to `smart`.
75
75
  run_mode:,
76
76
  # An optional, user-defined tag for the event.
77
77
  nametag: nil,
@@ -103,6 +103,34 @@ module Deeprails
103
103
  )
104
104
  end
105
105
 
106
+ # The user prompt used to generate the output.
107
+ sig { returns(String) }
108
+ attr_accessor :user_prompt
109
+
110
+ # Any structured information that directly relates to the model’s input and
111
+ # expected output—e.g., the recent turn-by-turn history between an AI tutor and a
112
+ # student, facts or state passed through an agentic workflow, or other
113
+ # domain-specific signals your system already knows and wants the model to
114
+ # condition on.
115
+ sig do
116
+ returns(
117
+ T.nilable(
118
+ T::Array[Deeprails::DefendSubmitEventParams::ModelInput::Context]
119
+ )
120
+ )
121
+ end
122
+ attr_reader :context
123
+
124
+ sig do
125
+ params(
126
+ context:
127
+ T::Array[
128
+ Deeprails::DefendSubmitEventParams::ModelInput::Context::OrHash
129
+ ]
130
+ ).void
131
+ end
132
+ attr_writer :context
133
+
106
134
  # The ground truth for evaluating the Ground Truth Adherence guardrail.
107
135
  sig { returns(T.nilable(String)) }
108
136
  attr_reader :ground_truth
@@ -117,46 +145,96 @@ module Deeprails
117
145
  sig { params(system_prompt: String).void }
118
146
  attr_writer :system_prompt
119
147
 
120
- # The user prompt used to generate the output.
121
- sig { returns(T.nilable(String)) }
122
- attr_reader :user_prompt
123
-
124
- sig { params(user_prompt: String).void }
125
- attr_writer :user_prompt
126
-
127
148
  # A dictionary of inputs sent to the LLM to generate output. The dictionary must
128
- # contain at least a `user_prompt` field or a `system_prompt` field. For the
129
- # ground_truth_adherence guardrail metric, `ground_truth` should be provided.
149
+ # contain a `user_prompt` field. For the ground_truth_adherence guardrail metric,
150
+ # `ground_truth` should be provided.
130
151
  sig do
131
152
  params(
153
+ user_prompt: String,
154
+ context:
155
+ T::Array[
156
+ Deeprails::DefendSubmitEventParams::ModelInput::Context::OrHash
157
+ ],
132
158
  ground_truth: String,
133
- system_prompt: String,
134
- user_prompt: String
159
+ system_prompt: String
135
160
  ).returns(T.attached_class)
136
161
  end
137
162
  def self.new(
163
+ # The user prompt used to generate the output.
164
+ user_prompt:,
165
+ # Any structured information that directly relates to the model’s input and
166
+ # expected output—e.g., the recent turn-by-turn history between an AI tutor and a
167
+ # student, facts or state passed through an agentic workflow, or other
168
+ # domain-specific signals your system already knows and wants the model to
169
+ # condition on.
170
+ context: nil,
138
171
  # The ground truth for evaluating the Ground Truth Adherence guardrail.
139
172
  ground_truth: nil,
140
173
  # The system prompt used to generate the output.
141
- system_prompt: nil,
142
- # The user prompt used to generate the output.
143
- user_prompt: nil
174
+ system_prompt: nil
144
175
  )
145
176
  end
146
177
 
147
178
  sig do
148
179
  override.returns(
149
- { ground_truth: String, system_prompt: String, user_prompt: String }
180
+ {
181
+ user_prompt: String,
182
+ context:
183
+ T::Array[
184
+ Deeprails::DefendSubmitEventParams::ModelInput::Context
185
+ ],
186
+ ground_truth: String,
187
+ system_prompt: String
188
+ }
150
189
  )
151
190
  end
152
191
  def to_hash
153
192
  end
193
+
194
+ class Context < Deeprails::Internal::Type::BaseModel
195
+ OrHash =
196
+ T.type_alias do
197
+ T.any(
198
+ Deeprails::DefendSubmitEventParams::ModelInput::Context,
199
+ Deeprails::Internal::AnyHash
200
+ )
201
+ end
202
+
203
+ # The content of the message.
204
+ sig { returns(T.nilable(String)) }
205
+ attr_reader :content
206
+
207
+ sig { params(content: String).void }
208
+ attr_writer :content
209
+
210
+ # The role of the speaker.
211
+ sig { returns(T.nilable(String)) }
212
+ attr_reader :role
213
+
214
+ sig { params(role: String).void }
215
+ attr_writer :role
216
+
217
+ sig do
218
+ params(content: String, role: String).returns(T.attached_class)
219
+ end
220
+ def self.new(
221
+ # The content of the message.
222
+ content: nil,
223
+ # The role of the speaker.
224
+ role: nil
225
+ )
226
+ end
227
+
228
+ sig { override.returns({ content: String, role: String }) }
229
+ def to_hash
230
+ end
231
+ end
154
232
  end
155
233
 
156
234
  # Run mode for the workflow event. The run mode allows the user to optimize for
157
235
  # speed, accuracy, and cost by determining which models are used to evaluate the
158
- # event. Available run modes include `precision_plus`, `precision`, `smart`, and
159
- # `economy`. Defaults to `smart`.
236
+ # event. Available run modes include `precision_plus_codex`, `precision_plus`,
237
+ # `precision`, `smart`, and `economy`. Defaults to `smart`.
160
238
  module RunMode
161
239
  extend Deeprails::Internal::Type::Enum
162
240
 
@@ -166,6 +244,11 @@ module Deeprails
166
244
  end
167
245
  OrSymbol = T.type_alias { T.any(Symbol, String) }
168
246
 
247
+ PRECISION_PLUS_CODEX =
248
+ T.let(
249
+ :precision_plus_codex,
250
+ Deeprails::DefendSubmitEventParams::RunMode::TaggedSymbol
251
+ )
169
252
  PRECISION_PLUS =
170
253
  T.let(
171
254
  :precision_plus,
@@ -21,11 +21,19 @@ module Deeprails
21
21
  sig { returns(String) }
22
22
  attr_accessor :workflow_id
23
23
 
24
+ # The name of the workflow.
25
+ sig { returns(T.nilable(String)) }
26
+ attr_reader :name
27
+
28
+ sig { params(name: String).void }
29
+ attr_writer :name
30
+
24
31
  sig do
25
32
  params(
26
33
  modified_at: Time,
27
34
  status: Deeprails::DefendUpdateResponse::Status::OrSymbol,
28
- workflow_id: String
35
+ workflow_id: String,
36
+ name: String
29
37
  ).returns(T.attached_class)
30
38
  end
31
39
  def self.new(
@@ -35,7 +43,9 @@ module Deeprails
35
43
  # workflows will not accept events.
36
44
  status:,
37
45
  # A unique workflow ID.
38
- workflow_id:
46
+ workflow_id:,
47
+ # The name of the workflow.
48
+ name: nil
39
49
  )
40
50
  end
41
51
 
@@ -44,7 +54,8 @@ module Deeprails
44
54
  {
45
55
  modified_at: Time,
46
56
  status: Deeprails::DefendUpdateResponse::Status::TaggedSymbol,
47
- workflow_id: String
57
+ workflow_id: String,
58
+ name: String
48
59
  }
49
60
  )
50
61
  end