Module: LlmCostTracker
- Defined in:
- lib/llm_cost_tracker.rb,
lib/llm_cost_tracker/cost.rb,
lib/llm_cost_tracker/event.rb,
lib/llm_cost_tracker/assets.rb,
lib/llm_cost_tracker/budget.rb,
lib/llm_cost_tracker/engine.rb,
lib/llm_cost_tracker/errors.rb,
lib/llm_cost_tracker/report.rb,
lib/llm_cost_tracker/logging.rb,
lib/llm_cost_tracker/pricing.rb,
lib/llm_cost_tracker/railtie.rb,
lib/llm_cost_tracker/tag_key.rb,
lib/llm_cost_tracker/tracker.rb,
lib/llm_cost_tracker/version.rb,
lib/llm_cost_tracker/retention.rb,
lib/llm_cost_tracker/tag_query.rb,
lib/llm_cost_tracker/price_sync.rb,
lib/llm_cost_tracker/parsers/sse.rb,
lib/llm_cost_tracker/report_data.rb,
lib/llm_cost_tracker/tags_column.rb,
lib/llm_cost_tracker/llm_api_call.rb,
lib/llm_cost_tracker/parsed_usage.rb,
lib/llm_cost_tracker/parsers/base.rb,
lib/llm_cost_tracker/configuration.rb,
lib/llm_cost_tracker/tag_accessors.rb,
lib/llm_cost_tracker/value_helpers.rb,
lib/llm_cost_tracker/event_metadata.rb,
lib/llm_cost_tracker/parsers/gemini.rb,
lib/llm_cost_tracker/parsers/openai.rb,
lib/llm_cost_tracker/price_registry.rb,
lib/llm_cost_tracker/period_grouping.rb,
lib/llm_cost_tracker/unknown_pricing.rb,
lib/llm_cost_tracker/parsers/registry.rb,
lib/llm_cost_tracker/report_formatter.rb,
lib/llm_cost_tracker/stream_collector.rb,
lib/llm_cost_tracker/parsers/anthropic.rb,
lib/llm_cost_tracker/price_sync/merger.rb,
lib/llm_cost_tracker/price_sync/source.rb,
lib/llm_cost_tracker/middleware/faraday.rb,
lib/llm_cost_tracker/price_sync/fetcher.rb,
app/services/llm_cost_tracker/pagination.rb,
app/helpers/llm_cost_tracker/chart_helper.rb,
lib/llm_cost_tracker/engine_compatibility.rb,
lib/llm_cost_tracker/parsers/openai_usage.rb,
lib/llm_cost_tracker/price_sync/raw_price.rb,
lib/llm_cost_tracker/price_sync/validator.rb,
lib/llm_cost_tracker/price_sync/model_catalog.rb,
lib/llm_cost_tracker/price_sync/source_result.rb,
app/helpers/llm_cost_tracker/pagination_helper.rb,
app/services/llm_cost_tracker/dashboard/filter.rb,
lib/llm_cost_tracker/parsers/openai_compatible.rb,
app/helpers/llm_cost_tracker/application_helper.rb,
lib/llm_cost_tracker/price_sync/sources/litellm.rb,
app/controllers/llm_cost_tracker/tags_controller.rb,
lib/llm_cost_tracker/storage/active_record_store.rb,
app/controllers/llm_cost_tracker/calls_controller.rb,
app/controllers/llm_cost_tracker/assets_controller.rb,
app/controllers/llm_cost_tracker/models_controller.rb,
app/services/llm_cost_tracker/dashboard/top_models.rb,
app/helpers/llm_cost_tracker/dashboard_query_helper.rb,
app/services/llm_cost_tracker/dashboard/time_series.rb,
lib/llm_cost_tracker/price_sync/sources/open_router.rb,
app/helpers/llm_cost_tracker/dashboard_filter_helper.rb,
app/services/llm_cost_tracker/dashboard/data_quality.rb,
app/controllers/llm_cost_tracker/dashboard_controller.rb,
app/services/llm_cost_tracker/dashboard/spend_anomaly.rb,
app/services/llm_cost_tracker/dashboard/tag_breakdown.rb,
app/services/llm_cost_tracker/dashboard/overview_stats.rb,
app/controllers/llm_cost_tracker/application_controller.rb,
app/controllers/llm_cost_tracker/data_quality_controller.rb,
app/services/llm_cost_tracker/dashboard/tag_key_explorer.rb,
app/services/llm_cost_tracker/dashboard/provider_breakdown.rb,
app/helpers/llm_cost_tracker/dashboard_filter_options_helper.rb,
lib/llm_cost_tracker/generators/llm_cost_tracker/prices_generator.rb,
lib/llm_cost_tracker/generators/llm_cost_tracker/install_generator.rb,
lib/llm_cost_tracker/generators/llm_cost_tracker/add_streaming_generator.rb,
lib/llm_cost_tracker/generators/llm_cost_tracker/add_latency_ms_generator.rb,
lib/llm_cost_tracker/generators/llm_cost_tracker/upgrade_tags_to_jsonb_generator.rb,
lib/llm_cost_tracker/generators/llm_cost_tracker/upgrade_cost_precision_generator.rb
Defined Under Namespace
Modules: ApplicationHelper, Assets, ChartHelper, Dashboard, DashboardFilterHelper, DashboardFilterOptionsHelper, DashboardQueryHelper, EngineCompatibility, EventMetadata, Generators, Logging, Middleware, PaginationHelper, Parsers, PeriodGrouping, PriceRegistry, PriceSync, Pricing, Retention, Storage, TagAccessors, TagKey, TagQuery, TagsColumn, ValueHelpers
Classes: ApplicationController, AssetsController, Budget, BudgetExceededError, CallsController, Configuration, Cost, DashboardController, DataQualityController, Engine, Error, Event, InvalidFilterError, LlmApiCall, ModelsController, Pagination, ParsedUsage, Railtie, Report, ReportData, ReportFormatter, StorageError, StreamCollector, TagsController, TopCall, Tracker, UnknownPricing, UnknownPricingError
Constant Summary
collapse
- CONFIGURATION_MUTEX =
Monitor.new
- VERSION =
"0.3.0"
Class Method Summary
collapse
Class Method Details
This method returns an undefined value.
Configure the gem once during application boot.
51
52
53
54
55
56
57
58
59
60
61
62
|
# File 'lib/llm_cost_tracker.rb', line 51
def configure
config = CONFIGURATION_MUTEX.synchronize do
current = @configuration || Configuration.new
current = current.dup_for_configuration if current.finalized?
@configuration = current
yield(current)
current.normalize_openai_compatible_providers!
current.finalize!
current
end
warn_for_configuration!(config)
end
|
.enforce_budget! ⇒ Object
.reset_configuration! ⇒ Object
.track(provider:, model:, input_tokens:, output_tokens:, **options) ⇒ Object
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
# File 'lib/llm_cost_tracker.rb', line 72
def track(provider:, model:, input_tokens:, output_tokens:, **options)
latency_ms = options.delete(:latency_ms)
stream = options.key?(:stream) ? options.delete(:stream) : false
usage_source = options.key?(:usage_source) ? options.delete(:usage_source) : :manual
enforce_budget = options.key?(:enforce_budget) ? options.delete(:enforce_budget) : false
metadata = options
enforce_budget! if enforce_budget
Tracker.record(
provider: provider.to_s,
model: model,
input_tokens: input_tokens,
output_tokens: output_tokens,
latency_ms: latency_ms,
stream: stream,
usage_source: usage_source,
metadata: metadata
)
end
|
.track_stream(provider:, model:, latency_ms: nil, enforce_budget: false, **metadata) ⇒ Object
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
# File 'lib/llm_cost_tracker.rb', line 92
def track_stream(provider:, model:, latency_ms: nil, enforce_budget: false, **metadata)
require_relative "llm_cost_tracker/stream_collector"
enforce_budget! if enforce_budget
collector = StreamCollector.new(
provider: provider.to_s,
model: model,
latency_ms: latency_ms,
metadata: metadata
)
yield collector
collector.finish!
rescue StandardError
collector&.finish!(errored: true)
raise
end
|