Tracking

exception openwebui_token_tracking.tracking.TokenLimitExceededError[source]

Bases: Exception

Raised when a token limit was exceeded

exception openwebui_token_tracking.tracking.DailyTokenLimitExceededError[source]

Bases: TokenLimitExceededError

Raised when a daily token limit was exceeded

exception openwebui_token_tracking.tracking.TotalTokenLimitExceededError[source]

Bases: TokenLimitExceededError

Raised when a total token limit was exceeded

class openwebui_token_tracking.tracking.TokenTracker(db_url)[source]

Bases: object

A class for tracking token usage and managing credit limits for users.

The TokenTracker connects to the Open WebUI database to track token consumption by users, calculate remaining credits, and enforce token usage limits across different models and providers.

Parameters:

db_url (str) – Database connection URL

Variables:
  • db_engine – SQLAlchemy database engine

  • db_url – Database connection URL

Raises:
get_models(provider=None, id=None)[source]

Get all available models.

Parameters:
  • provider (str, optional) – If not None, only returns the models by this provider. Defaults to None

  • id (str)

Returns:

A description of the models’ pricing schema

Return type:

list[ModelPricingSchema]

is_paid(model_id)[source]

Check whether a model requires credits to use

Parameters:

model_id (str) – ID of the model

Returns:

True if credits are required to use this model, False otherwise

Return type:

bool

max_credits(user, sponsored_allowance_name=None, sponsored_allowance_id=None)[source]

Get a user’s maximum daily credits.

Parameters:
  • user (dict) – User

  • sponsored_allowance_name (str, optional) – Name of the sponsored allowance to consider

  • sponsored_allowance_id (str, optional) – ID of the sponsored allowance to consider

Returns:

Maximum daily credit allowance

Return type:

int

remaining_credits(user, sponsored_allowance_name=None)[source]

Get remaining credits for the specified user and sponsored allowance.

Parameters:
  • user_id (dict) – User

  • sponsored_allowance_name (str, optional) – Name of the sponsored allowance

  • user (dict)

Returns:

Remaining daily credits available to the user, and in the sponsored allowance (if specified)

Return type:

tuple[int, int]

log_token_usage(provider, model_id, user, prompt_tokens, response_tokens, sponsored_allowance_name=None)[source]

Log the used tokens in the database

Parameters:
  • provider (str) – Provider of the model used with these tokens

  • model_id (str) – ID of the model used with these tokens

  • user (dict) – User

  • prompt_tokens (int) – Number of tokens used in the prompt (input tokens)

  • response_tokens (int) – Number of tokens in the response (output tokens)

  • sponsored_allowance_name (str, optional) – Name of the sponsored allowance to apply