Class: LlmCostTracker::Parsers::Openai

Inherits:
Base
  • Object
show all
Includes:
OpenaiUsage
Defined in:
lib/llm_cost_tracker/parsers/openai.rb

Constant Summary collapse

HOSTS =
%w[
  api.openai.com
  us.api.openai.com
  eu.api.openai.com
  au.api.openai.com
  ca.api.openai.com
  jp.api.openai.com
  in.api.openai.com
  sg.api.openai.com
  kr.api.openai.com
  gb.api.openai.com
  ae.api.openai.com
].freeze
TRACKED_PATHS =
%w[/v1/chat/completions /v1/completions /v1/embeddings /v1/responses].freeze

Instance Method Summary collapse

Methods inherited from Base

#streaming_request?

Instance Method Details

#match?(url) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/llm_cost_tracker/parsers/openai.rb', line 26

def match?(url)
  match_uri?(url, hosts: HOSTS, exact_paths: TRACKED_PATHS)
end

#parse(request_url:, request_body:, response_status:, response_body:) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/llm_cost_tracker/parsers/openai.rb', line 34

def parse(request_url:, request_body:, response_status:, response_body:, **)
  parse_openai_usage(
    request_url: request_url,
    request_body: request_body,
    response_status: response_status,
    response_body: response_body
  )
end

#parse_stream(response_status:, request_url: nil, request_body: nil, events: []) ⇒ Object



43
44
45
46
47
48
49
50
# File 'lib/llm_cost_tracker/parsers/openai.rb', line 43

def parse_stream(response_status:, request_url: nil, request_body: nil, events: [], **)
  parse_openai_stream_usage(
    request_url: request_url,
    request_body: request_body,
    response_status: response_status,
    events: events
  )
end

#provider_namesObject



30
31
32
# File 'lib/llm_cost_tracker/parsers/openai.rb', line 30

def provider_names
  %w[openai]
end