Class: LlmCostTracker::Parsers::OpenaiCompatible
- Includes:
- OpenaiUsage
- Defined in:
- lib/llm_cost_tracker/parsers/openai_compatible.rb
Constant Summary collapse
- TRACKED_PATH_SUFFIXES =
%w[/chat/completions /completions /embeddings /responses].freeze
Instance Method Summary collapse
- #match?(url) ⇒ Boolean
- #parse(request_url, request_body, response_status, response_body) ⇒ Object
- #parse_stream(request_url, request_body, response_status, events) ⇒ Object
- #provider_names ⇒ Object
Methods inherited from Base
Instance Method Details
#match?(url) ⇒ Boolean
15 16 17 18 19 20 |
# File 'lib/llm_cost_tracker/parsers/openai_compatible.rb', line 15 def match?(url) uri = URI.parse(url.to_s) !provider_for_host(uri.host).nil? && tracked_path?(uri.path) rescue URI::InvalidURIError false end |
#parse(request_url, request_body, response_status, response_body) ⇒ Object
29 30 31 |
# File 'lib/llm_cost_tracker/parsers/openai_compatible.rb', line 29 def parse(request_url, request_body, response_status, response_body) parse_openai_usage(request_url, request_body, response_status, response_body) end |
#parse_stream(request_url, request_body, response_status, events) ⇒ Object
33 34 35 |
# File 'lib/llm_cost_tracker/parsers/openai_compatible.rb', line 33 def parse_stream(request_url, request_body, response_status, events) parse_openai_stream_usage(request_url, request_body, response_status, events) end |
#provider_names ⇒ Object
22 23 24 25 26 27 |
# File 'lib/llm_cost_tracker/parsers/openai_compatible.rb', line 22 def provider_names [ "openai_compatible", *LlmCostTracker.configuration.openai_compatible_providers.each_value.map(&:to_s) ].uniq.freeze end |