Class: SkillBench::Services::JsonFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/skill_bench/services/json_formatter.rb

Overview

Formats evaluation results as JSON.

Constant Summary collapse

EMPTY_USAGE =

Zeroed token usage used when a result carries no usage data.

{ prompt_tokens: 0, completion_tokens: 0, total_tokens: 0 }.freeze

Class Method Summary collapse

Class Method Details

.format(result) ⇒ String

Format result as JSON.

Ensures top-level :tokens and :cost fields are always present (additive; existing keys are preserved) so JSON consumers see a stable shape.

Parameters:

  • result (Hash)

    Eval result.

Returns:

  • (String)

    JSON-formatted string.



19
20
21
# File 'lib/skill_bench/services/json_formatter.rb', line 19

def self.format(result)
  JSON.pretty_generate(with_usage_fields(result))
end

.with_usage_fields(result) ⇒ Hash

Returns the result augmented with token/cost fields when missing.

Parameters:

  • result (Hash)

    Eval result (returned unchanged when not a Hash).

Returns:

  • (Hash)

    Result with :tokens and :cost guaranteed present.



27
28
29
30
31
32
33
# File 'lib/skill_bench/services/json_formatter.rb', line 27

def self.with_usage_fields(result)
  return result unless result.is_a?(Hash)

  tokens = result[:tokens] || result.dig(:response, :tokens) || EMPTY_USAGE
  cost = result.key?(:cost) ? result[:cost] : result.dig(:response, :cost)
  result.merge(tokens: tokens, cost: cost)
end