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.
- checksums.yaml +7 -0
- data/.ignore +2 -0
- data/CHANGELOG.md +18 -0
- data/README.md +273 -0
- data/SECURITY.md +27 -0
- data/lib/deeprails/client.rb +82 -0
- data/lib/deeprails/errors.rb +228 -0
- data/lib/deeprails/file_part.rb +58 -0
- data/lib/deeprails/internal/transport/base_client.rb +567 -0
- data/lib/deeprails/internal/transport/pooled_net_requester.rb +198 -0
- data/lib/deeprails/internal/type/array_of.rb +168 -0
- data/lib/deeprails/internal/type/base_model.rb +531 -0
- data/lib/deeprails/internal/type/base_page.rb +55 -0
- data/lib/deeprails/internal/type/boolean.rb +77 -0
- data/lib/deeprails/internal/type/converter.rb +327 -0
- data/lib/deeprails/internal/type/enum.rb +131 -0
- data/lib/deeprails/internal/type/file_input.rb +111 -0
- data/lib/deeprails/internal/type/hash_of.rb +188 -0
- data/lib/deeprails/internal/type/request_parameters.rb +42 -0
- data/lib/deeprails/internal/type/union.rb +237 -0
- data/lib/deeprails/internal/type/unknown.rb +81 -0
- data/lib/deeprails/internal/util.rb +915 -0
- data/lib/deeprails/internal.rb +20 -0
- data/lib/deeprails/models/api_response.rb +119 -0
- data/lib/deeprails/models/defend_create_workflow_params.rb +132 -0
- data/lib/deeprails/models/defend_response.rb +123 -0
- data/lib/deeprails/models/defend_retrieve_event_params.rb +20 -0
- data/lib/deeprails/models/defend_retrieve_workflow_params.rb +14 -0
- data/lib/deeprails/models/defend_submit_event_params.rb +98 -0
- data/lib/deeprails/models/defend_update_workflow_params.rb +49 -0
- data/lib/deeprails/models/evaluate_create_params.rb +123 -0
- data/lib/deeprails/models/evaluate_retrieve_params.rb +14 -0
- data/lib/deeprails/models/evaluation.rb +225 -0
- data/lib/deeprails/models/monitor_create_params.rb +30 -0
- data/lib/deeprails/models/monitor_retrieve_params.rb +22 -0
- data/lib/deeprails/models/monitor_retrieve_response.rb +186 -0
- data/lib/deeprails/models/monitor_submit_event_params.rb +124 -0
- data/lib/deeprails/models/monitor_submit_event_response.rb +77 -0
- data/lib/deeprails/models/monitor_update_params.rb +54 -0
- data/lib/deeprails/models/workflow_event_response.rb +57 -0
- data/lib/deeprails/models.rb +71 -0
- data/lib/deeprails/request_options.rb +77 -0
- data/lib/deeprails/resources/defend.rb +162 -0
- data/lib/deeprails/resources/evaluate.rb +70 -0
- data/lib/deeprails/resources/monitor.rb +130 -0
- data/lib/deeprails/version.rb +5 -0
- data/lib/deeprails.rb +73 -0
- data/manifest.yaml +15 -0
- data/rbi/deeprails/client.rbi +55 -0
- data/rbi/deeprails/errors.rbi +205 -0
- data/rbi/deeprails/file_part.rbi +37 -0
- data/rbi/deeprails/internal/transport/base_client.rbi +293 -0
- data/rbi/deeprails/internal/transport/pooled_net_requester.rbi +79 -0
- data/rbi/deeprails/internal/type/array_of.rbi +104 -0
- data/rbi/deeprails/internal/type/base_model.rbi +304 -0
- data/rbi/deeprails/internal/type/base_page.rbi +42 -0
- data/rbi/deeprails/internal/type/boolean.rbi +58 -0
- data/rbi/deeprails/internal/type/converter.rbi +216 -0
- data/rbi/deeprails/internal/type/enum.rbi +82 -0
- data/rbi/deeprails/internal/type/file_input.rbi +59 -0
- data/rbi/deeprails/internal/type/hash_of.rbi +104 -0
- data/rbi/deeprails/internal/type/request_parameters.rbi +29 -0
- data/rbi/deeprails/internal/type/union.rbi +128 -0
- data/rbi/deeprails/internal/type/unknown.rbi +58 -0
- data/rbi/deeprails/internal/util.rbi +487 -0
- data/rbi/deeprails/internal.rbi +18 -0
- data/rbi/deeprails/models/api_response.rbi +204 -0
- data/rbi/deeprails/models/defend_create_workflow_params.rbi +270 -0
- data/rbi/deeprails/models/defend_response.rbi +198 -0
- data/rbi/deeprails/models/defend_retrieve_event_params.rbi +38 -0
- data/rbi/deeprails/models/defend_retrieve_workflow_params.rbi +30 -0
- data/rbi/deeprails/models/defend_submit_event_params.rbi +170 -0
- data/rbi/deeprails/models/defend_update_workflow_params.rbi +107 -0
- data/rbi/deeprails/models/evaluate_create_params.rbi +253 -0
- data/rbi/deeprails/models/evaluate_retrieve_params.rbi +27 -0
- data/rbi/deeprails/models/evaluation.rbi +382 -0
- data/rbi/deeprails/models/monitor_create_params.rbi +54 -0
- data/rbi/deeprails/models/monitor_retrieve_params.rbi +43 -0
- data/rbi/deeprails/models/monitor_retrieve_response.rbi +336 -0
- data/rbi/deeprails/models/monitor_submit_event_params.rbi +264 -0
- data/rbi/deeprails/models/monitor_submit_event_response.rbi +134 -0
- data/rbi/deeprails/models/monitor_update_params.rbi +114 -0
- data/rbi/deeprails/models/workflow_event_response.rbi +85 -0
- data/rbi/deeprails/models.rbi +33 -0
- data/rbi/deeprails/request_options.rbi +59 -0
- data/rbi/deeprails/resources/defend.rbi +151 -0
- data/rbi/deeprails/resources/evaluate.rbi +66 -0
- data/rbi/deeprails/resources/monitor.rbi +114 -0
- data/rbi/deeprails/version.rbi +5 -0
- data/sig/deeprails/client.rbs +30 -0
- data/sig/deeprails/errors.rbs +117 -0
- data/sig/deeprails/file_part.rbs +21 -0
- data/sig/deeprails/internal/transport/base_client.rbs +131 -0
- data/sig/deeprails/internal/transport/pooled_net_requester.rbs +45 -0
- data/sig/deeprails/internal/type/array_of.rbs +48 -0
- data/sig/deeprails/internal/type/base_model.rbs +102 -0
- data/sig/deeprails/internal/type/base_page.rbs +24 -0
- data/sig/deeprails/internal/type/boolean.rbs +26 -0
- data/sig/deeprails/internal/type/converter.rbs +79 -0
- data/sig/deeprails/internal/type/enum.rbs +32 -0
- data/sig/deeprails/internal/type/file_input.rbs +25 -0
- data/sig/deeprails/internal/type/hash_of.rbs +48 -0
- data/sig/deeprails/internal/type/request_parameters.rbs +19 -0
- data/sig/deeprails/internal/type/union.rbs +52 -0
- data/sig/deeprails/internal/type/unknown.rbs +26 -0
- data/sig/deeprails/internal/util.rbs +185 -0
- data/sig/deeprails/internal.rbs +9 -0
- data/sig/deeprails/models/api_response.rbs +100 -0
- data/sig/deeprails/models/defend_create_workflow_params.rbs +98 -0
- data/sig/deeprails/models/defend_response.rbs +96 -0
- data/sig/deeprails/models/defend_retrieve_event_params.rbs +23 -0
- data/sig/deeprails/models/defend_retrieve_workflow_params.rbs +15 -0
- data/sig/deeprails/models/defend_submit_event_params.rbs +73 -0
- data/sig/deeprails/models/defend_update_workflow_params.rbs +55 -0
- data/sig/deeprails/models/evaluate_create_params.rbs +107 -0
- data/sig/deeprails/models/evaluate_retrieve_params.rbs +15 -0
- data/sig/deeprails/models/evaluation.rbs +189 -0
- data/sig/deeprails/models/monitor_create_params.rbs +30 -0
- data/sig/deeprails/models/monitor_retrieve_params.rbs +25 -0
- data/sig/deeprails/models/monitor_retrieve_response.rbs +167 -0
- data/sig/deeprails/models/monitor_submit_event_params.rbs +107 -0
- data/sig/deeprails/models/monitor_submit_event_response.rbs +70 -0
- data/sig/deeprails/models/monitor_update_params.rbs +55 -0
- data/sig/deeprails/models/workflow_event_response.rbs +46 -0
- data/sig/deeprails/models.rbs +31 -0
- data/sig/deeprails/request_options.rbs +34 -0
- data/sig/deeprails/resources/defend.rbs +47 -0
- data/sig/deeprails/resources/evaluate.rbs +22 -0
- data/sig/deeprails/resources/monitor.rbs +38 -0
- data/sig/deeprails/version.rbs +3 -0
- 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
|