Class: PromptCanary::VersionBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/prompt_canary/version_builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ VersionBuilder

Returns a new instance of VersionBuilder.



7
8
9
10
11
# File 'lib/prompt_canary/version_builder.rb', line 7

def initialize(name)
  @_name = name
  @_rollout = {}
  @_rollback_rules = []
end

Instance Attribute Details

#_modelObject (readonly)

Returns the value of attribute _model.



5
6
7
# File 'lib/prompt_canary/version_builder.rb', line 5

def _model
  @_model
end

#_nameObject (readonly)

Returns the value of attribute _name.



5
6
7
# File 'lib/prompt_canary/version_builder.rb', line 5

def _name
  @_name
end

#_rolloutObject (readonly)

Returns the value of attribute _rollout.



5
6
7
# File 'lib/prompt_canary/version_builder.rb', line 5

def _rollout
  @_rollout
end

#_systemObject (readonly)

Returns the value of attribute _system.



5
6
7
# File 'lib/prompt_canary/version_builder.rb', line 5

def _system
  @_system
end

Instance Method Details

#buildObject



41
42
43
44
45
46
47
48
49
50
# File 'lib/prompt_canary/version_builder.rb', line 41

def build
  Version.new(
    name: _name,
    model: _model,
    system: _system,
    rollout: _rollout,
    predicate: @_predicate,
    rollback_rules: @_rollback_rules
  )
end

#model(value) ⇒ Object



33
34
35
# File 'lib/prompt_canary/version_builder.rb', line 33

def model(value)
  @_model = value
end

#rollback_if(metric, over:, greater_than: nil, less_than: nil) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/prompt_canary/version_builder.rb', line 21

def rollback_if(metric, over:, greater_than: nil, less_than: nil)
  comparator = if greater_than
                 :greater_than
               elsif less_than
                 :less_than
               else
                 raise ArgumentError, "rollback_if requires greater_than: or less_than:"
               end
  threshold = greater_than || less_than
  @_rollback_rules << RollbackRule.new(metric: metric, threshold: threshold, comparator: comparator, window: over)
end

#rollout(value) ⇒ Object



13
14
15
# File 'lib/prompt_canary/version_builder.rb', line 13

def rollout(value)
  @_rollout = value
end

#rollout_to(&block) ⇒ Object



17
18
19
# File 'lib/prompt_canary/version_builder.rb', line 17

def rollout_to(&block)
  @_predicate = block
end

#system(value = nil, &block) ⇒ Object



37
38
39
# File 'lib/prompt_canary/version_builder.rb', line 37

def system(value = nil, &block)
  @_system = block || value
end