Class: PromptCanary::Monitor

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

Instance Method Summary collapse

Constructor Details

#initialize(recorder:) ⇒ Monitor

Returns a new instance of Monitor.



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

def initialize(recorder:)
  @recorder = recorder
end

Instance Method Details

#evaluate(prompt_class) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/prompt_canary/monitor.rb', line 9

def evaluate(prompt_class)
  prompt_class.versions.each do |version|
    version.rollback_rules.each do |rule|
      value = @recorder.public_send(rule.metric,
                                    prompt: prompt_class.name,
                                    version: version.name,
                                    over: rule.window)

      next unless rule.violated_by?(value)

      PromptCanary.demote(
        prompt_class, version.name,
        triggered_by: "monitor",
        triggering_metric: rule.metric.to_s,
        triggering_value: value,
        triggering_threshold: rule.threshold
      )
    end
  end
end