Increase monthly free tier spend from 5 dollars to 10 dollars (#19291)

Antonio Scandurra , Marshall , and Richard created

Release Notes:

- N/A

Co-authored-by: Marshall <marshall@zed.dev>
Co-authored-by: Richard <richard@zed.dev>

Change summary

crates/collab/src/llm.rs                        |  2 
crates/collab/src/llm/db/tests/billing_tests.rs | 23 ++++++------------
2 files changed, 9 insertions(+), 16 deletions(-)

Detailed changes

crates/collab/src/llm.rs 🔗

@@ -435,7 +435,7 @@ fn normalize_model_name(known_models: Vec<String>, name: String) -> String {
 
 /// The maximum monthly spending an individual user can reach on the free tier
 /// before they have to pay.
-pub const FREE_TIER_MONTHLY_SPENDING_LIMIT: Cents = Cents::from_dollars(5);
+pub const FREE_TIER_MONTHLY_SPENDING_LIMIT: Cents = Cents::from_dollars(10);
 
 /// The default value to use for maximum spend per month if the user did not
 /// explicitly set a maximum spend.

crates/collab/src/llm/db/tests/billing_tests.rs 🔗

@@ -45,24 +45,17 @@ async fn test_billing_limit_exceeded(db: &mut LlmDatabase) {
 
     let user_id = UserId::from_proto(123);
 
-    let max_monthly_spend = Cents::from_dollars(10);
+    let max_monthly_spend = Cents::from_dollars(11);
 
     // Record usage that brings us close to the limit but doesn't exceed it
-    // Let's say we use $9.50 worth of tokens
-    let tokens_to_use = 190_000_000; // This will cost $9.50 at $0.05 per 1 million tokens
+    // Let's say we use $10.50 worth of tokens
+    let tokens_to_use = 210_000_000; // This will cost $10.50 at $0.05 per 1 million tokens
     let usage = TokenUsage {
         input: tokens_to_use,
         input_cache_creation: 0,
         input_cache_read: 0,
         output: 0,
     };
-    let cost = Cents::new(tokens_to_use as u32 / 1_000_000 * PRICE_PER_MILLION_INPUT_TOKENS as u32);
-
-    assert_eq!(
-        cost,
-        Cents::new(950),
-        "expected the cost to be $9.50, based on the inputs, but it wasn't"
-    );
 
     // Verify that before we record any usage, there are 0 billing events
     let billing_events = db.get_billing_events().await.unwrap();
@@ -102,8 +95,8 @@ async fn test_billing_limit_exceeded(db: &mut LlmDatabase) {
                 input_cache_read: 0,
                 output: 0,
             },
-            spending_this_month: Cents::new(950),
-            lifetime_spending: Cents::new(950),
+            spending_this_month: Cents::new(1050),
+            lifetime_spending: Cents::new(1050),
         }
     );
 
@@ -118,7 +111,7 @@ async fn test_billing_limit_exceeded(db: &mut LlmDatabase) {
     assert_eq!(billing_event.input_cache_read_tokens, 0);
     assert_eq!(billing_event.output_tokens, 0);
 
-    let tokens_to_exceed = 20_000_000; // This will cost $1.00 more, pushing us from $9.50 to $10.50, which is over the $10 monthly maximum limit
+    let tokens_to_exceed = 20_000_000; // This will cost $1.00 more, pushing us from $10.50 to $11.50, which is over the $11 monthly maximum limit
     let usage_exceeding = TokenUsage {
         input: tokens_to_exceed,
         input_cache_creation: 0,
@@ -158,8 +151,8 @@ async fn test_billing_limit_exceeded(db: &mut LlmDatabase) {
                 input_cache_read: 0,
                 output: 0,
             },
-            spending_this_month: Cents::new(1050),
-            lifetime_spending: Cents::new(1050),
+            spending_this_month: Cents::new(1150),
+            lifetime_spending: Cents::new(1150),
         }
     );
 }