Class: CompletionKit::Response
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- CompletionKit::Response
- Defined in:
- app/models/completion_kit/response.rb
Constant Summary collapse
- STATUSES =
%w[pending retrying succeeded failed].freeze
- TERMINAL_STATUSES =
%w[succeeded failed].freeze
Constants inherited from ApplicationRecord
ApplicationRecord::TenantScopedUniquenessValidator
Instance Method Summary collapse
- #as_json(options = {}) ⇒ Object
- #error_payload ⇒ Object
- #reviewed? ⇒ Boolean
- #score ⇒ Object
- #succeeded? ⇒ Boolean
- #terminal? ⇒ Boolean
Instance Method Details
#as_json(options = {}) ⇒ Object
24 25 26 27 28 29 30 31 32 33 |
# File 'app/models/completion_kit/response.rb', line 24 def as_json( = {}) { 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 |
#error_payload ⇒ Object
46 47 48 49 |
# File 'app/models/completion_kit/response.rb', line 46 def error_payload return nil if error_class.blank? { provider: error_provider, class: error_class, status: error_status, message: } end |
#reviewed? ⇒ Boolean
42 43 44 |
# File 'app/models/completion_kit/response.rb', line 42 def reviewed? reviews.any? { |r| r.ai_score.present? } end |
#score ⇒ Object
35 36 37 38 39 40 |
# File 'app/models/completion_kit/response.rb', line 35 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 |
#succeeded? ⇒ Boolean
20 21 22 |
# File 'app/models/completion_kit/response.rb', line 20 def succeeded? status == "succeeded" end |
#terminal? ⇒ Boolean
16 17 18 |
# File 'app/models/completion_kit/response.rb', line 16 def terminal? TERMINAL_STATUSES.include?(status) end |