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,124 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Deeprails
4
+ module Models
5
+ # @see Deeprails::Resources::Monitor#submit_event
6
+ class MonitorSubmitEventParams < Deeprails::Internal::Type::BaseModel
7
+ extend Deeprails::Internal::Type::RequestParameters::Converter
8
+ include Deeprails::Internal::Type::RequestParameters
9
+
10
+ # @!attribute guardrail_metrics
11
+ # An array of guardrail metrics that the model input and output pair will be
12
+ # evaluated on. For non-enterprise users, these will be limited to `correctness`,
13
+ # `completeness`, `instruction_adherence`, `context_adherence`,
14
+ # `ground_truth_adherence`, and/or `comprehensive_safety`.
15
+ #
16
+ # @return [Array<Symbol, Deeprails::Models::MonitorSubmitEventParams::GuardrailMetric>]
17
+ required :guardrail_metrics,
18
+ -> { Deeprails::Internal::Type::ArrayOf[enum: Deeprails::MonitorSubmitEventParams::GuardrailMetric] }
19
+
20
+ # @!attribute model_input
21
+ # A dictionary of inputs sent to the LLM to generate output. This must contain a
22
+ # `user_prompt` field and an optional `context` field. Additional properties are
23
+ # allowed.
24
+ #
25
+ # @return [Deeprails::Models::MonitorSubmitEventParams::ModelInput]
26
+ required :model_input, -> { Deeprails::MonitorSubmitEventParams::ModelInput }
27
+
28
+ # @!attribute model_output
29
+ # Output generated by the LLM to be evaluated.
30
+ #
31
+ # @return [String]
32
+ required :model_output, String
33
+
34
+ # @!attribute model_used
35
+ # Model ID used to generate the output, like `gpt-4o` or `o3`.
36
+ #
37
+ # @return [String, nil]
38
+ optional :model_used, String
39
+
40
+ # @!attribute nametag
41
+ # An optional, user-defined tag for the event.
42
+ #
43
+ # @return [String, nil]
44
+ optional :nametag, String
45
+
46
+ # @!attribute run_mode
47
+ # Run mode for the monitor event. The run mode allows the user to optimize for
48
+ # speed, accuracy, and cost by determining which models are used to evaluate the
49
+ # event. Available run modes include `precision_plus`, `precision`, `smart`, and
50
+ # `economy`. Defaults to `smart`.
51
+ #
52
+ # @return [Symbol, Deeprails::Models::MonitorSubmitEventParams::RunMode, nil]
53
+ optional :run_mode, enum: -> { Deeprails::MonitorSubmitEventParams::RunMode }
54
+
55
+ # @!method initialize(guardrail_metrics:, model_input:, model_output:, model_used: nil, nametag: nil, run_mode: nil, request_options: {})
56
+ # Some parameter documentations has been truncated, see
57
+ # {Deeprails::Models::MonitorSubmitEventParams} for more details.
58
+ #
59
+ # @param guardrail_metrics [Array<Symbol, Deeprails::Models::MonitorSubmitEventParams::GuardrailMetric>] An array of guardrail metrics that the model input and output pair will be evalu
60
+ #
61
+ # @param model_input [Deeprails::Models::MonitorSubmitEventParams::ModelInput] A dictionary of inputs sent to the LLM to generate output. This must contain a
62
+ #
63
+ # @param model_output [String] Output generated by the LLM to be evaluated.
64
+ #
65
+ # @param model_used [String] Model ID used to generate the output, like `gpt-4o` or `o3`.
66
+ #
67
+ # @param nametag [String] An optional, user-defined tag for the event.
68
+ #
69
+ # @param run_mode [Symbol, Deeprails::Models::MonitorSubmitEventParams::RunMode] Run mode for the monitor event. The run mode allows the user to optimize for sp
70
+ #
71
+ # @param request_options [Deeprails::RequestOptions, Hash{Symbol=>Object}]
72
+
73
+ module GuardrailMetric
74
+ extend Deeprails::Internal::Type::Enum
75
+
76
+ CORRECTNESS = :correctness
77
+ COMPLETENESS = :completeness
78
+ INSTRUCTION_ADHERENCE = :instruction_adherence
79
+ CONTEXT_ADHERENCE = :context_adherence
80
+ GROUND_TRUTH_ADHERENCE = :ground_truth_adherence
81
+ COMPREHENSIVE_SAFETY = :comprehensive_safety
82
+
83
+ # @!method self.values
84
+ # @return [Array<Symbol>]
85
+ end
86
+
87
+ class ModelInput < Deeprails::Internal::Type::BaseModel
88
+ # @!attribute user_prompt
89
+ #
90
+ # @return [String]
91
+ required :user_prompt, String
92
+
93
+ # @!attribute context
94
+ #
95
+ # @return [String, nil]
96
+ optional :context, String
97
+
98
+ # @!method initialize(user_prompt:, context: nil)
99
+ # A dictionary of inputs sent to the LLM to generate output. This must contain a
100
+ # `user_prompt` field and an optional `context` field. Additional properties are
101
+ # allowed.
102
+ #
103
+ # @param user_prompt [String]
104
+ # @param context [String]
105
+ end
106
+
107
+ # Run mode for the monitor event. The run mode allows the user to optimize for
108
+ # speed, accuracy, and cost by determining which models are used to evaluate the
109
+ # event. Available run modes include `precision_plus`, `precision`, `smart`, and
110
+ # `economy`. Defaults to `smart`.
111
+ module RunMode
112
+ extend Deeprails::Internal::Type::Enum
113
+
114
+ PRECISION_PLUS = :precision_plus
115
+ PRECISION = :precision
116
+ SMART = :smart
117
+ ECONOMY = :economy
118
+
119
+ # @!method self.values
120
+ # @return [Array<Symbol>]
121
+ end
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Deeprails
4
+ module Models
5
+ # @see Deeprails::Resources::Monitor#submit_event
6
+ class MonitorSubmitEventResponse < Deeprails::Internal::Type::BaseModel
7
+ # @!attribute success
8
+ # Represents whether the request was completed successfully.
9
+ #
10
+ # @return [Boolean]
11
+ required :success, Deeprails::Internal::Type::Boolean
12
+
13
+ # @!attribute data
14
+ # Response payload for monitor event operations.
15
+ #
16
+ # @return [Deeprails::Models::MonitorSubmitEventResponse::Data, nil]
17
+ optional :data, -> { Deeprails::Models::MonitorSubmitEventResponse::Data }
18
+
19
+ # @!attribute message
20
+ # The accompanying message for the request. Includes error details when
21
+ # applicable.
22
+ #
23
+ # @return [String, nil]
24
+ optional :message, String
25
+
26
+ # @!method initialize(success:, data: nil, message: nil)
27
+ # Some parameter documentations has been truncated, see
28
+ # {Deeprails::Models::MonitorSubmitEventResponse} for more details.
29
+ #
30
+ # Response wrapper for operations returning a MonitorEventResponse.
31
+ #
32
+ # @param success [Boolean] Represents whether the request was completed successfully.
33
+ #
34
+ # @param data [Deeprails::Models::MonitorSubmitEventResponse::Data] Response payload for monitor event operations.
35
+ #
36
+ # @param message [String] The accompanying message for the request. Includes error details when applicabl
37
+
38
+ # @see Deeprails::Models::MonitorSubmitEventResponse#data
39
+ class Data < Deeprails::Internal::Type::BaseModel
40
+ # @!attribute evaluation_id
41
+ # A unique evaluation ID associated with this event.
42
+ #
43
+ # @return [String]
44
+ required :evaluation_id, String
45
+
46
+ # @!attribute event_id
47
+ # A unique monitor event ID.
48
+ #
49
+ # @return [String]
50
+ required :event_id, String
51
+
52
+ # @!attribute monitor_id
53
+ # Monitor ID associated with this event.
54
+ #
55
+ # @return [String]
56
+ required :monitor_id, String
57
+
58
+ # @!attribute created_at
59
+ # The time the monitor event was created in UTC.
60
+ #
61
+ # @return [Time, nil]
62
+ optional :created_at, Time
63
+
64
+ # @!method initialize(evaluation_id:, event_id:, monitor_id:, created_at: nil)
65
+ # Response payload for monitor event operations.
66
+ #
67
+ # @param evaluation_id [String] A unique evaluation ID associated with this event.
68
+ #
69
+ # @param event_id [String] A unique monitor event ID.
70
+ #
71
+ # @param monitor_id [String] Monitor ID associated with this event.
72
+ #
73
+ # @param created_at [Time] The time the monitor event was created in UTC.
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Deeprails
4
+ module Models
5
+ # @see Deeprails::Resources::Monitor#update
6
+ class MonitorUpdateParams < Deeprails::Internal::Type::BaseModel
7
+ extend Deeprails::Internal::Type::RequestParameters::Converter
8
+ include Deeprails::Internal::Type::RequestParameters
9
+
10
+ # @!attribute description
11
+ # Description of the monitor.
12
+ #
13
+ # @return [String, nil]
14
+ optional :description, String
15
+
16
+ # @!attribute monitor_status
17
+ # Status of the monitor. Can be `active` or `inactive`. Inactive monitors no
18
+ # longer record and evaluate events.
19
+ #
20
+ # @return [Symbol, Deeprails::Models::MonitorUpdateParams::MonitorStatus, nil]
21
+ optional :monitor_status, enum: -> { Deeprails::MonitorUpdateParams::MonitorStatus }
22
+
23
+ # @!attribute name
24
+ # Name of the monitor.
25
+ #
26
+ # @return [String, nil]
27
+ optional :name, String
28
+
29
+ # @!method initialize(description: nil, monitor_status: nil, name: nil, request_options: {})
30
+ # Some parameter documentations has been truncated, see
31
+ # {Deeprails::Models::MonitorUpdateParams} for more details.
32
+ #
33
+ # @param description [String] Description of the monitor.
34
+ #
35
+ # @param monitor_status [Symbol, Deeprails::Models::MonitorUpdateParams::MonitorStatus] Status of the monitor. Can be `active` or `inactive`. Inactive monitors no lon
36
+ #
37
+ # @param name [String] Name of the monitor.
38
+ #
39
+ # @param request_options [Deeprails::RequestOptions, Hash{Symbol=>Object}]
40
+
41
+ # Status of the monitor. Can be `active` or `inactive`. Inactive monitors no
42
+ # longer record and evaluate events.
43
+ module MonitorStatus
44
+ extend Deeprails::Internal::Type::Enum
45
+
46
+ ACTIVE = :active
47
+ INACTIVE = :inactive
48
+
49
+ # @!method self.values
50
+ # @return [Array<Symbol>]
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Deeprails
4
+ module Models
5
+ # @see Deeprails::Resources::Defend#retrieve_event
6
+ class WorkflowEventResponse < Deeprails::Internal::Type::BaseModel
7
+ # @!attribute event_id
8
+ # A unique workflow event ID.
9
+ #
10
+ # @return [String]
11
+ required :event_id, String
12
+
13
+ # @!attribute workflow_id
14
+ # Workflow ID associated with the event.
15
+ #
16
+ # @return [String]
17
+ required :workflow_id, String
18
+
19
+ # @!attribute attempt_number
20
+ # Count of improvement attempts for the event. If greater than one then all
21
+ # previous improvement attempts failed.
22
+ #
23
+ # @return [Integer, nil]
24
+ optional :attempt_number, Integer
25
+
26
+ # @!attribute evaluation_id
27
+ # A unique evaluation ID associated with this event. Every event has one or more
28
+ # evaluation attempts.
29
+ #
30
+ # @return [String, nil]
31
+ optional :evaluation_id, String
32
+
33
+ # @!attribute filtered
34
+ # `False` if evaluation passed all of the guardrail metrics, `True` if evaluation
35
+ # failed any of the guardrail metrics.
36
+ #
37
+ # @return [Boolean, nil]
38
+ optional :filtered, Deeprails::Internal::Type::Boolean
39
+
40
+ # @!method initialize(event_id:, workflow_id:, attempt_number: nil, evaluation_id: nil, filtered: nil)
41
+ # Some parameter documentations has been truncated, see
42
+ # {Deeprails::Models::WorkflowEventResponse} for more details.
43
+ #
44
+ # Response payload for workflow event operations.
45
+ #
46
+ # @param event_id [String] A unique workflow event ID.
47
+ #
48
+ # @param workflow_id [String] Workflow ID associated with the event.
49
+ #
50
+ # @param attempt_number [Integer] Count of improvement attempts for the event. If greater than one then all previ
51
+ #
52
+ # @param evaluation_id [String] A unique evaluation ID associated with this event. Every event has one or more
53
+ #
54
+ # @param filtered [Boolean] `False` if evaluation passed all of the guardrail metrics, `True` if evaluation
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Deeprails
4
+ [Deeprails::Internal::Type::BaseModel, *Deeprails::Internal::Type::BaseModel.subclasses].each do |cls|
5
+ cls.define_sorbet_constant!(:OrHash) { T.type_alias { T.any(cls, Deeprails::Internal::AnyHash) } }
6
+ end
7
+
8
+ Deeprails::Internal::Util.walk_namespaces(Deeprails::Models).each do |mod|
9
+ case mod
10
+ in Deeprails::Internal::Type::Enum | Deeprails::Internal::Type::Union
11
+ mod.constants.each do |name|
12
+ case mod.const_get(name)
13
+ in true | false
14
+ mod.define_sorbet_constant!(:TaggedBoolean) { T.type_alias { T::Boolean } }
15
+ mod.define_sorbet_constant!(:OrBoolean) { T.type_alias { T::Boolean } }
16
+ in Integer
17
+ mod.define_sorbet_constant!(:TaggedInteger) { T.type_alias { Integer } }
18
+ mod.define_sorbet_constant!(:OrInteger) { T.type_alias { Integer } }
19
+ in Float
20
+ mod.define_sorbet_constant!(:TaggedFloat) { T.type_alias { Float } }
21
+ mod.define_sorbet_constant!(:OrFloat) { T.type_alias { Float } }
22
+ in Symbol
23
+ mod.define_sorbet_constant!(:TaggedSymbol) { T.type_alias { Symbol } }
24
+ mod.define_sorbet_constant!(:OrSymbol) { T.type_alias { T.any(Symbol, String) } }
25
+ else
26
+ end
27
+ end
28
+ else
29
+ end
30
+ end
31
+
32
+ Deeprails::Internal::Util.walk_namespaces(Deeprails::Models)
33
+ .lazy
34
+ .grep(Deeprails::Internal::Type::Union)
35
+ .each do |mod|
36
+ const = :Variants
37
+ next if mod.sorbet_constant_defined?(const)
38
+
39
+ mod.define_sorbet_constant!(const) { T.type_alias { mod.to_sorbet_type } }
40
+ end
41
+
42
+ APIResponse = Deeprails::Models::APIResponse
43
+
44
+ DefendCreateWorkflowParams = Deeprails::Models::DefendCreateWorkflowParams
45
+
46
+ DefendResponse = Deeprails::Models::DefendResponse
47
+
48
+ DefendRetrieveEventParams = Deeprails::Models::DefendRetrieveEventParams
49
+
50
+ DefendRetrieveWorkflowParams = Deeprails::Models::DefendRetrieveWorkflowParams
51
+
52
+ DefendSubmitEventParams = Deeprails::Models::DefendSubmitEventParams
53
+
54
+ DefendUpdateWorkflowParams = Deeprails::Models::DefendUpdateWorkflowParams
55
+
56
+ EvaluateCreateParams = Deeprails::Models::EvaluateCreateParams
57
+
58
+ EvaluateRetrieveParams = Deeprails::Models::EvaluateRetrieveParams
59
+
60
+ Evaluation = Deeprails::Models::Evaluation
61
+
62
+ MonitorCreateParams = Deeprails::Models::MonitorCreateParams
63
+
64
+ MonitorRetrieveParams = Deeprails::Models::MonitorRetrieveParams
65
+
66
+ MonitorSubmitEventParams = Deeprails::Models::MonitorSubmitEventParams
67
+
68
+ MonitorUpdateParams = Deeprails::Models::MonitorUpdateParams
69
+
70
+ WorkflowEventResponse = Deeprails::Models::WorkflowEventResponse
71
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
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
+ # @api private
11
+ #
12
+ # @param opts [Deeprails::RequestOptions, Hash{Symbol=>Object}]
13
+ #
14
+ # @raise [ArgumentError]
15
+ def self.validate!(opts)
16
+ case opts
17
+ in Deeprails::RequestOptions | Hash
18
+ opts.to_h.each_key do |k|
19
+ unless fields.include?(k)
20
+ raise ArgumentError.new("Request `opts` keys must be one of #{fields.keys}, got #{k.inspect}")
21
+ end
22
+ end
23
+ else
24
+ raise ArgumentError.new("Request `opts` must be a Hash or RequestOptions, got #{opts.inspect}")
25
+ end
26
+ end
27
+
28
+ # @!attribute idempotency_key
29
+ # Idempotency key to send with request and all associated retries. Will only be
30
+ # sent for write requests.
31
+ #
32
+ # @return [String, nil]
33
+ optional :idempotency_key, String
34
+
35
+ # @!attribute extra_query
36
+ # Extra query params to send with the request. These are `.merge`’d into any
37
+ # `query` given at the client level.
38
+ #
39
+ # @return [Hash{String=>Array<String>, String, nil}, nil]
40
+ optional :extra_query, Deeprails::Internal::Type::HashOf[Deeprails::Internal::Type::ArrayOf[String]]
41
+
42
+ # @!attribute extra_headers
43
+ # Extra headers to send with the request. These are `.merged`’d into any
44
+ # `extra_headers` given at the client level.
45
+ #
46
+ # @return [Hash{String=>String, nil}, nil]
47
+ optional :extra_headers, Deeprails::Internal::Type::HashOf[String, nil?: true]
48
+
49
+ # @!attribute extra_body
50
+ # Extra data to send with the request. These are deep merged into any data
51
+ # generated as part of the normal request.
52
+ #
53
+ # @return [Object, nil]
54
+ optional :extra_body, Deeprails::Internal::Type::HashOf[Deeprails::Internal::Type::Unknown]
55
+
56
+ # @!attribute max_retries
57
+ # Maximum number of retries to attempt after a failed initial request.
58
+ #
59
+ # @return [Integer, nil]
60
+ optional :max_retries, Integer
61
+
62
+ # @!attribute timeout
63
+ # Request timeout in seconds.
64
+ #
65
+ # @return [Float, nil]
66
+ optional :timeout, Float
67
+
68
+ # @!method initialize(values = {})
69
+ # Returns a new instance of RequestOptions.
70
+ #
71
+ # @param values [Hash{Symbol=>Object}]
72
+
73
+ define_sorbet_constant!(:OrHash) do
74
+ T.type_alias { T.any(Deeprails::RequestOptions, Deeprails::Internal::AnyHash) }
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,162 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Deeprails
4
+ module Resources
5
+ class Defend
6
+ # Some parameter documentations has been truncated, see
7
+ # {Deeprails::Models::DefendCreateWorkflowParams} for more details.
8
+ #
9
+ # Create a new guardrail workflow with optional guardrail thresholds and
10
+ # improvement actions.
11
+ #
12
+ # @overload create_workflow(improvement_action:, metrics:, name:, type:, automatic_tolerance: nil, description: nil, max_retries: nil, request_options: {})
13
+ #
14
+ # @param improvement_action [Symbol, Deeprails::Models::DefendCreateWorkflowParams::ImprovementAction, nil] The action used to improve outputs that fail one or guardrail metrics for the wo
15
+ #
16
+ # @param metrics [Hash{Symbol=>Float}] Mapping of guardrail metrics to floating point threshold values. If the workflo
17
+ #
18
+ # @param name [String] Name of the workflow.
19
+ #
20
+ # @param type [Symbol, Deeprails::Models::DefendCreateWorkflowParams::Type] Type of thresholds to use for the workflow, either `automatic` or `custom`. Aut
21
+ #
22
+ # @param automatic_tolerance [Symbol, Deeprails::Models::DefendCreateWorkflowParams::AutomaticTolerance] Hallucination tolerance for automatic workflows; may be `low`, `medium`, or `hig
23
+ #
24
+ # @param description [String] Description for the workflow.
25
+ #
26
+ # @param max_retries [Integer] Max. number of improvement action retries until a given event passes the guardra
27
+ #
28
+ # @param request_options [Deeprails::RequestOptions, Hash{Symbol=>Object}, nil]
29
+ #
30
+ # @return [Deeprails::Models::DefendResponse]
31
+ #
32
+ # @see Deeprails::Models::DefendCreateWorkflowParams
33
+ def create_workflow(params)
34
+ parsed, options = Deeprails::DefendCreateWorkflowParams.dump_request(params)
35
+ @client.request(
36
+ method: :post,
37
+ path: "defend",
38
+ body: parsed,
39
+ model: Deeprails::DefendResponse,
40
+ options: options
41
+ )
42
+ end
43
+
44
+ # Retrieve a specific event of a guardrail workflow.
45
+ #
46
+ # @overload retrieve_event(event_id, workflow_id:, request_options: {})
47
+ #
48
+ # @param event_id [String] The ID of the requested workflow event.
49
+ #
50
+ # @param workflow_id [String] The ID of the workflow associated with the event.
51
+ #
52
+ # @param request_options [Deeprails::RequestOptions, Hash{Symbol=>Object}, nil]
53
+ #
54
+ # @return [Deeprails::Models::WorkflowEventResponse]
55
+ #
56
+ # @see Deeprails::Models::DefendRetrieveEventParams
57
+ def retrieve_event(event_id, params)
58
+ parsed, options = Deeprails::DefendRetrieveEventParams.dump_request(params)
59
+ workflow_id =
60
+ parsed.delete(:workflow_id) do
61
+ raise ArgumentError.new("missing required path argument #{_1}")
62
+ end
63
+ @client.request(
64
+ method: :get,
65
+ path: ["defend/%1$s/events/%2$s", workflow_id, event_id],
66
+ model: Deeprails::WorkflowEventResponse,
67
+ options: options
68
+ )
69
+ end
70
+
71
+ # Retrieve the details for a specific guardrail workflow.
72
+ #
73
+ # @overload retrieve_workflow(workflow_id, request_options: {})
74
+ #
75
+ # @param workflow_id [String] The ID of the workflow to retrieve.
76
+ #
77
+ # @param request_options [Deeprails::RequestOptions, Hash{Symbol=>Object}, nil]
78
+ #
79
+ # @return [Deeprails::Models::DefendResponse]
80
+ #
81
+ # @see Deeprails::Models::DefendRetrieveWorkflowParams
82
+ def retrieve_workflow(workflow_id, params = {})
83
+ @client.request(
84
+ method: :get,
85
+ path: ["defend/%1$s", workflow_id],
86
+ model: Deeprails::DefendResponse,
87
+ options: params[:request_options]
88
+ )
89
+ end
90
+
91
+ # Some parameter documentations has been truncated, see
92
+ # {Deeprails::Models::DefendSubmitEventParams} for more details.
93
+ #
94
+ # Submit a model input and output pair to a workflow for evaluation.
95
+ #
96
+ # @overload submit_event(workflow_id, model_input:, model_output:, model_used:, nametag:, run_mode:, request_options: {})
97
+ #
98
+ # @param workflow_id [String] Workflow ID associated with this event.
99
+ #
100
+ # @param model_input [Deeprails::Models::DefendSubmitEventParams::ModelInput] A dictionary of inputs sent to the LLM to generate output. This must contain a
101
+ #
102
+ # @param model_output [String] Output generated by the LLM to be evaluated.
103
+ #
104
+ # @param model_used [String] Model ID used to generate the output, like `gpt-4o` or `o3`.
105
+ #
106
+ # @param nametag [String] An optional, user-defined tag for the event.
107
+ #
108
+ # @param run_mode [Symbol, Deeprails::Models::DefendSubmitEventParams::RunMode] Run mode for the workflow event. The run mode allows the user to optimize for s
109
+ #
110
+ # @param request_options [Deeprails::RequestOptions, Hash{Symbol=>Object}, nil]
111
+ #
112
+ # @return [Deeprails::Models::WorkflowEventResponse]
113
+ #
114
+ # @see Deeprails::Models::DefendSubmitEventParams
115
+ def submit_event(workflow_id, params)
116
+ parsed, options = Deeprails::DefendSubmitEventParams.dump_request(params)
117
+ @client.request(
118
+ method: :post,
119
+ path: ["defend/%1$s/events", workflow_id],
120
+ body: parsed,
121
+ model: Deeprails::WorkflowEventResponse,
122
+ options: options
123
+ )
124
+ end
125
+
126
+ # Update an existing guardrail workflow.
127
+ #
128
+ # @overload update_workflow(workflow_id, description: nil, name: nil, type: nil, request_options: {})
129
+ #
130
+ # @param workflow_id [String] The ID of the workflow to edit.
131
+ #
132
+ # @param description [String] Description for the workflow.
133
+ #
134
+ # @param name [String] Name of the workflow.
135
+ #
136
+ # @param type [Symbol, Deeprails::Models::DefendUpdateWorkflowParams::Type] Type of thresholds to use for the workflow, either `automatic` or `custom`.
137
+ #
138
+ # @param request_options [Deeprails::RequestOptions, Hash{Symbol=>Object}, nil]
139
+ #
140
+ # @return [Deeprails::Models::DefendResponse]
141
+ #
142
+ # @see Deeprails::Models::DefendUpdateWorkflowParams
143
+ def update_workflow(workflow_id, params = {})
144
+ parsed, options = Deeprails::DefendUpdateWorkflowParams.dump_request(params)
145
+ @client.request(
146
+ method: :put,
147
+ path: ["defend/%1$s", workflow_id],
148
+ body: parsed,
149
+ model: Deeprails::DefendResponse,
150
+ options: options
151
+ )
152
+ end
153
+
154
+ # @api private
155
+ #
156
+ # @param client [Deeprails::Client]
157
+ def initialize(client:)
158
+ @client = client
159
+ end
160
+ end
161
+ end
162
+ end