Class: Observ::Embedding

Inherits:
Observation show all
Defined in:
app/models/observ/embedding.rb

Instance Method Summary collapse

Methods inherited from Observation

#duration_ms

Instance Method Details

#batch_sizeObject



33
34
35
# File 'app/models/observ/embedding.rb', line 33

def batch_size
  &.dig("batch_size") || 1
end

#dimensionsObject



37
38
39
# File 'app/models/observ/embedding.rb', line 37

def dimensions
  &.dig("dimensions")
end

#finalize(output:, usage: {}, cost_usd: 0.0, status_message: nil) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
# File 'app/models/observ/embedding.rb', line 12

def finalize(output:, usage: {}, cost_usd: 0.0, status_message: nil)
  merged_usage = (self.usage || {}).merge(usage.stringify_keys)

  update!(
    output: output.is_a?(String) ? output : output.to_json,
    usage: merged_usage,
    cost_usd: cost_usd,
    end_time: Time.current,
    status_message: status_message
  )
end

#input_tokensObject

Embedding-specific helpers



25
26
27
# File 'app/models/observ/embedding.rb', line 25

def input_tokens
  usage&.dig("input_tokens") || 0
end

#set_input(texts) ⇒ Object

Set input texts for the embedding call



6
7
8
9
10
# File 'app/models/observ/embedding.rb', line 6

def set_input(texts)
  update!(
    input: texts.is_a?(Array) ? texts.to_json : texts
  )
end

#total_tokensObject



29
30
31
# File 'app/models/observ/embedding.rb', line 29

def total_tokens
  input_tokens # Embeddings only have input tokens
end

#vectors_countObject



41
42
43
# File 'app/models/observ/embedding.rb', line 41

def vectors_count
  &.dig("vectors_count") || 1
end