Class: CompletionKit::JudgeVariantGenerator

Inherits:
Object
  • Object
show all
Defined in:
app/services/completion_kit/judge_variant_generator.rb

Defined Under Namespace

Classes: Variant

Constant Summary collapse

DEFAULT_VARIANT_COUNT =
3
DEFAULT_TEMPERATURE =
0.4

Instance Method Summary collapse

Constructor Details

#initialize(metric, count: DEFAULT_VARIANT_COUNT, model: nil) ⇒ JudgeVariantGenerator

Returns a new instance of JudgeVariantGenerator.



8
9
10
11
12
# File 'app/services/completion_kit/judge_variant_generator.rb', line 8

def initialize(metric, count: DEFAULT_VARIANT_COUNT, model: nil)
  @metric = metric
  @count = count
  @model = model || CompletionKit.config.judge_model
end

Instance Method Details

#callObject



14
15
16
17
18
# File 'app/services/completion_kit/judge_variant_generator.rb', line 14

def call
  client = LlmClient.for_model(@model, ApiConfig.for_model(@model))
  raw = client.generate_completion(build_meta_prompt, model: @model, max_tokens: 2500, temperature: DEFAULT_TEMPERATURE)
  parse(raw).first(@count)
end

#persist!(variants) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'app/services/completion_kit/judge_variant_generator.rb', line 20

def persist!(variants)
  JudgeVersion.where(metric_id: @metric.id, state: "draft", source: "suggestion").update_all(current: false)
  versions = variants.map do |variant|
    JudgeVersion.create!(
      metric: @metric,
      instruction: variant.instruction,
      rubric_bands: @metric.rubric_bands,
      state: "draft",
      source: "suggestion",
      current: false
    )
  end
  ActiveSupport::Notifications.instrument("completion_kit.judge_suggestion.generated",
                                          metric_id: @metric.id,
                                          count: versions.length,
                                          model: @model)
  versions
end