Class: LlmCostTracker::Parsers::OpenaiCompatible
- Inherits:
-
Base
- Object
- Base
- LlmCostTracker::Parsers::OpenaiCompatible
show all
- 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
Constants included
from OpenaiUsage
LlmCostTracker::Parsers::OpenaiUsage::OPENAI_DATA_RESIDENCY_HOST_PATTERN
LlmCostTracker::Parsers::OpenaiServiceCharges::RESPONSE_OUTPUT_COMPONENTS
Instance Method Summary
collapse
billable?, build_line_item, line_item_details, line_items_from_output, openai_service_line_items, openai_stream_service_line_items, store_output_item
Methods inherited from Base
#streaming_request?
Instance Method Details
#match?(url) ⇒ Boolean
13
14
15
|
# File 'lib/llm_cost_tracker/parsers/openai_compatible.rb', line 13
def match?(url)
match_uri?(url, path_suffixes: TRACKED_PATH_SUFFIXES) { |uri| provider_for_uri(uri) }
end
|
#parse(request_url:, request_body:, response_status:, response_body:) ⇒ Object
32
33
34
35
36
37
38
39
|
# File 'lib/llm_cost_tracker/parsers/openai_compatible.rb', line 32
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
41
42
43
44
45
46
47
48
|
# File 'lib/llm_cost_tracker/parsers/openai_compatible.rb', line 41
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_names ⇒ Object
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/llm_cost_tracker/parsers/openai_compatible.rb', line 17
def provider_names
providers = LlmCostTracker.configuration.openai_compatible_providers
cached = @provider_names
return cached if cached && @provider_names_providers.equal?(providers)
names = [
"openai_compatible",
*providers.each_value.map { |provider| provider.to_s.downcase }
].uniq.freeze
return names unless providers.frozen?
@provider_names_providers = providers
@provider_names = names
end
|