11"""Quota handling helper functions."""
22
3+ from typing import Optional
4+
35import psycopg2
46from fastapi import HTTPException
57
68from log import get_logger
79from models .responses import InternalServerErrorResponse , QuotaExceededResponse
810from quota .quota_exceed_error import QuotaExceedError
911from quota .quota_limiter import QuotaLimiter
12+ from quota .token_usage_history import TokenUsageHistory
1013
1114logger = get_logger (__name__ )
1215
1316
1417def consume_tokens (
1518 quota_limiters : list [QuotaLimiter ],
19+ token_usage_history : Optional [TokenUsageHistory ],
1620 user_id : str ,
1721 input_tokens : int ,
1822 output_tokens : int ,
23+ model_id : str ,
24+ provider_id : str ,
1925) -> None :
2026 """Consume tokens from cluster and/or user quotas.
2127
@@ -24,10 +30,21 @@ def consume_tokens(
2430 user_id: Identifier of the user consuming tokens.
2531 input_tokens: Number of input tokens to consume.
2632 output_tokens: Number of output tokens to consume.
33+ model_id: Model identification
34+ provider_id: Provider identification
2735
2836 Returns:
2937 None
3038 """
39+ # record token usage history
40+ if token_usage_history is not None :
41+ token_usage_history .consume_tokens (
42+ user_id = user_id ,
43+ provider = provider_id ,
44+ model = model_id ,
45+ input_tokens = input_tokens ,
46+ output_tokens = output_tokens ,
47+ )
3148 # consume tokens all configured quota limiters
3249 for quota_limiter in quota_limiters :
3350 quota_limiter .consume_tokens (
0 commit comments