Module: Brute::UsageDetection::LangChain

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

Overview

langchainrb has no single usage object: each provider's response subclass answers prompt_tokens / completion_tokens / total_tokens by digging its own raw shape, and some answer none of them.

Class Method Summary collapse

Class Method Details

.detect(response) ⇒ Object



13
14
15
16
17
18
19
20
21
22
# File 'lib/brute/usage_detection/lang_chain.rb', line 13

def self.detect(response)
  detected = Usage.new(
    input:  read(response, :prompt_tokens),
    output: read(response, :completion_tokens),
    total:  read(response, :total_tokens),
    raw:    response,
  )

  detected.empty? ? nil : detected
end

.read(response, name) ⇒ Object



24
# File 'lib/brute/usage_detection/lang_chain.rb', line 24

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