collab: Don't record billing events if billing is not enabled (#19102)

This PR adjusts the billing logic to not write any records to
`billing_events` if:

- The user is staff, as we don't want to bill staff members
- Billing is disabled (we currently enable billing based on the presence
of the Stripe API key)

Release Notes:

- N/A
This commit is contained in:
Marshall Bowers 2024-10-11 17:54:10 -04:00 committed by GitHub
parent b739cfa73f
commit c709b66f35
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 11 additions and 2 deletions

View file

@ -639,6 +639,7 @@ where
impl<S> Drop for TokenCountingStream<S> {
fn drop(&mut self) {
let state = self.state.clone();
let is_llm_billing_enabled = state.config.is_llm_billing_enabled();
let claims = self.claims.clone();
let provider = self.provider;
let model = std::mem::take(&mut self.model);
@ -652,7 +653,14 @@ impl<S> Drop for TokenCountingStream<S> {
provider,
&model,
tokens,
claims.has_llm_subscription,
// We're passing `false` here if LLM billing is not enabled
// so that we don't write any records to the
// `billing_events` table until we're ready to bill users.
if is_llm_billing_enabled {
claims.has_llm_subscription
} else {
false
},
Cents(claims.max_monthly_spend_in_cents),
Utc::now(),
)

View file

@ -409,7 +409,8 @@ impl LlmDatabase {
monthly_usage.output_tokens as usize,
);
if spending_this_month > FREE_TIER_MONTHLY_SPENDING_LIMIT
if !is_staff
&& spending_this_month > FREE_TIER_MONTHLY_SPENDING_LIMIT
&& has_llm_subscription
&& spending_this_month <= max_monthly_spend
{