Module: LlmCostTracker::Integrations::Openai::BatchCapture

Defined in:
lib/llm_cost_tracker/integrations/openai/batch_capture.rb

Class Method Summary collapse

Class Method Details

.maybe_capture(batch, resource:) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/llm_cost_tracker/integrations/openai/batch_capture.rb', line 14

def maybe_capture(batch, resource:)
  return unless Openai.active?
  return unless batch.respond_to?(:status) && batch.status.to_s == "completed"

  output_file_id = batch.respond_to?(:output_file_id) ? batch.output_file_id : nil
  return unless output_file_id

  batch_id = batch.respond_to?(:id) ? batch.id : nil
  return unless batch_id && claim(batch_id)

  client = resource.instance_variable_get(:@client)
  host = Openai.client_host_for(resource)
  Openai.record_safely do
    io = client.files.content(output_file_id)
    capture_jsonl(io.respond_to?(:read) ? io.read : io.to_s, host: host)
  end
end