Class: CompletionKit::Response
Constant Summary
HasJobStatus::STATUSES, HasJobStatus::TERMINAL_STATUSES
ApplicationRecord::TenantScopedUniquenessValidator
Instance Method Summary
collapse
#error_payload, #succeeded?, #terminal?
Instance Method Details
#as_json(options = {}) ⇒ Object
18
19
20
21
22
23
24
25
26
27
|
# File 'app/models/completion_kit/response.rb', line 18
def as_json(options = {})
{
id: id, run_id: run_id, input_data: input_data,
response_text: response_text, expected_output: expected_output,
created_at: created_at, score: score, reviewed: reviewed?,
reviews: reviews.map(&:as_json),
status: status, attempts: attempts, row_index: row_index,
error: error_payload
}
end
|
#fully_reviewed? ⇒ Boolean
40
41
42
43
44
45
|
# File 'app/models/completion_kit/response.rb', line 40
def fully_reviewed?
metric_ids = run.metric_ids
return true if metric_ids.empty?
reviewed_metric_ids = reviews.where(status: HasJobStatus::TERMINAL_STATUSES).pluck(:metric_id).uniq
(metric_ids - reviewed_metric_ids).empty?
end
|
#reviewed? ⇒ Boolean
36
37
38
|
# File 'app/models/completion_kit/response.rb', line 36
def reviewed?
reviews.any? { |r| r.ai_score.present? }
end
|
#score ⇒ Object
29
30
31
32
33
34
|
# File 'app/models/completion_kit/response.rb', line 29
def score
scores = reviews.select { |r| r.ai_score.present? }.map { |r| r.ai_score.to_f }
return nil if scores.empty?
(scores.sum / scores.length).round(2)
end
|