42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
# File 'app/jobs/completion_kit/judge_review_job.rb', line 42
def perform(response_id, metric_id)
@response_id = response_id
@metric_id = metric_id
response = Response.find(response_id)
metric = Metric.find(metric_id)
run = response.run
config = ApiConfig.for_model(run.judge_model).merge(judge_model: run.judge_model)
judge = JudgeService.new(config)
evaluation = judge.evaluate(
response.response_text,
response.expected_output,
run.prompt.template,
criteria: metric.instruction.to_s,
rubric_text: metric.display_rubric_text,
input_data: response.input_data
)
review = response.reviews.find_or_initialize_by(metric_id: metric.id)
review.assign_attributes(
metric_name: metric.name,
instruction: metric.instruction.to_s,
status: "succeeded",
ai_score: evaluation[:score],
ai_feedback: evaluation[:feedback],
error_provider: nil, error_class: nil, error_status: nil, error_message: nil
)
review.save!
run.send(:broadcast_response_update, response)
enqueue_completion_check
end
|