Class: PromptBuilder::Usage

Inherits:
Object
  • Object
show all
Defined in:
lib/prompt_builder/usage.rb

Overview

Value object representing token usage statistics from an API response.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(input_tokens: nil, output_tokens: nil, total_tokens: nil, input_tokens_details: nil, output_tokens_details: nil, reasoning_tokens: nil) ⇒ Usage

Create a new Usage value object.

Parameters:

  • input_tokens (Integer, nil) (defaults to: nil)

    number of input tokens

  • output_tokens (Integer, nil) (defaults to: nil)

    number of output tokens

  • total_tokens (Integer, nil) (defaults to: nil)

    total number of tokens

  • input_tokens_details (Hash, nil) (defaults to: nil)

    input token details

  • output_tokens_details (Hash, nil) (defaults to: nil)

    output token details

  • reasoning_tokens (Integer, nil) (defaults to: nil)

    number of reasoning tokens



29
30
31
32
33
34
35
36
# File 'lib/prompt_builder/usage.rb', line 29

def initialize(input_tokens: nil, output_tokens: nil, total_tokens: nil,
  input_tokens_details: nil, output_tokens_details: nil, reasoning_tokens: nil)
  @input_tokens = input_tokens&.to_i
  @output_tokens = output_tokens&.to_i
  @total_tokens = total_tokens&.to_i
  @input_tokens_details = PromptBuilder.jsonify(input_tokens_details)
  @output_tokens_details = PromptBuilder.jsonify(output_tokens_details) || build_output_tokens_details(reasoning_tokens)
end

Instance Attribute Details

#input_tokensInteger? (readonly)

Returns number of input tokens.

Returns:

  • (Integer, nil)

    number of input tokens



7
8
9
# File 'lib/prompt_builder/usage.rb', line 7

def input_tokens
  @input_tokens
end

#input_tokens_detailsHash? (readonly)

Returns input token details.

Returns:

  • (Hash, nil)

    input token details



16
17
18
# File 'lib/prompt_builder/usage.rb', line 16

def input_tokens_details
  @input_tokens_details
end

#output_tokensInteger? (readonly)

Returns number of output tokens.

Returns:

  • (Integer, nil)

    number of output tokens



10
11
12
# File 'lib/prompt_builder/usage.rb', line 10

def output_tokens
  @output_tokens
end

#output_tokens_detailsHash? (readonly)

Returns output token details.

Returns:

  • (Hash, nil)

    output token details



19
20
21
# File 'lib/prompt_builder/usage.rb', line 19

def output_tokens_details
  @output_tokens_details
end

#total_tokensInteger? (readonly)

Returns total number of tokens.

Returns:

  • (Integer, nil)

    total number of tokens



13
14
15
# File 'lib/prompt_builder/usage.rb', line 13

def total_tokens
  @total_tokens
end

Class Method Details

.from_h(hash) ⇒ Usage

Deserialize a Usage from a Hash.

Parameters:

  • hash (Hash)

    a Hash with string keys

Returns:



43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/prompt_builder/usage.rb', line 43

def from_h(hash)
  input_tokens_details = hash["input_tokens_details"]
  output_tokens_details = hash["output_tokens_details"]

  new(
    input_tokens: hash["input_tokens"],
    output_tokens: hash["output_tokens"],
    total_tokens: hash["total_tokens"],
    input_tokens_details: input_tokens_details,
    output_tokens_details: output_tokens_details,
    reasoning_tokens: hash["reasoning_tokens"] || output_tokens_details&.fetch("reasoning_tokens", nil)
  )
end

Instance Method Details

#cache_creation_input_tokensInteger?

Number of tokens used for cache creation. This is specific only to the Anthropic Messages API format.

Returns:

  • (Integer, nil)


68
69
70
# File 'lib/prompt_builder/usage.rb', line 68

def cache_creation_input_tokens
  @input_tokens_details&.fetch("cache_creation_input_tokens", nil)
end

#cached_tokensInteger?

Number of cached input tokens.

Returns:

  • (Integer, nil)


61
62
63
# File 'lib/prompt_builder/usage.rb', line 61

def cached_tokens
  @input_tokens_details&.fetch("cached_tokens", nil)
end

#reasoning_tokensInteger?

Number of reasoning tokens.

Returns:

  • (Integer, nil)


75
76
77
# File 'lib/prompt_builder/usage.rb', line 75

def reasoning_tokens
  @output_tokens_details&.fetch("reasoning_tokens", nil)
end

#to_hHash

Serialize to a Hash with string keys. Nil values are omitted.

Returns:

  • (Hash)


82
83
84
85
86
87
88
89
90
# File 'lib/prompt_builder/usage.rb', line 82

def to_h
  h = {}
  h["input_tokens"] = @input_tokens if @input_tokens
  h["output_tokens"] = @output_tokens if @output_tokens
  h["total_tokens"] = @total_tokens if @total_tokens
  h["input_tokens_details"] = @input_tokens_details if @input_tokens_details
  h["output_tokens_details"] = @output_tokens_details if @output_tokens_details
  h
end