Module: Brute::UsageDetection::LLMrb

Defined in:
lib/brute/usage_detection/llmrb.rb

Overview

llm.rb models usage as its own LLM::Usage value object. Note it answers 0, not nil, for anything the provider left out — that is llm.rb's reading of the response and it is reported as given.

Class Method Summary collapse

Class Method Details

.detect(response) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/brute/usage_detection/llmrb.rb', line 13

def self.detect(response)
  if response.respond_to?(:usage)
    usage = response.usage
    if usage.nil?
      nil
    else
      Usage.new(
        input:       read(usage, :input_tokens),
        output:      read(usage, :output_tokens),
        total:       read(usage, :total_tokens),
        reasoning:   read(usage, :reasoning_tokens),
        cache_read:  read(usage, :cache_read_tokens),
        cache_write: read(usage, :cache_write_tokens),
        raw:         usage,
      )
    end
  else
    nil
  end
end

.read(usage, name) ⇒ Object



34
# File 'lib/brute/usage_detection/llmrb.rb', line 34

def self.read(usage, name) = usage.respond_to?(name) ? usage.public_send(name) : nil