diff --git a/litellm/integrations/aispend.py b/litellm/integrations/aispend.py deleted file mode 100644 index 3a62c646f..000000000 --- a/litellm/integrations/aispend.py +++ /dev/null @@ -1,167 +0,0 @@ -#### What this does #### -# On success + failure, log events to aispend.io -import datetime -import os -import traceback - -import dotenv - -model_cost = { - "gpt-3.5-turbo": { - "max_tokens": 4000, - "input_cost_per_token": 0.0000015, - "output_cost_per_token": 0.000002, - }, - "gpt-35-turbo": { - "max_tokens": 4000, - "input_cost_per_token": 0.0000015, - "output_cost_per_token": 0.000002, - }, # azure model name - "gpt-3.5-turbo-0613": { - "max_tokens": 4000, - "input_cost_per_token": 0.0000015, - "output_cost_per_token": 0.000002, - }, - "gpt-3.5-turbo-0301": { - "max_tokens": 4000, - "input_cost_per_token": 0.0000015, - "output_cost_per_token": 0.000002, - }, - "gpt-3.5-turbo-16k": { - "max_tokens": 16000, - "input_cost_per_token": 0.000003, - "output_cost_per_token": 0.000004, - }, - "gpt-35-turbo-16k": { - "max_tokens": 16000, - "input_cost_per_token": 0.000003, - "output_cost_per_token": 0.000004, - }, # azure model name - "gpt-3.5-turbo-16k-0613": { - "max_tokens": 16000, - "input_cost_per_token": 0.000003, - "output_cost_per_token": 0.000004, - }, - "gpt-4": { - "max_tokens": 8000, - "input_cost_per_token": 0.000003, - "output_cost_per_token": 0.00006, - }, - "gpt-4-0613": { - "max_tokens": 8000, - "input_cost_per_token": 0.000003, - "output_cost_per_token": 0.00006, - }, - "gpt-4-32k": { - "max_tokens": 8000, - "input_cost_per_token": 0.00006, - "output_cost_per_token": 0.00012, - }, - "claude-instant-1": { - "max_tokens": 100000, - "input_cost_per_token": 0.00000163, - "output_cost_per_token": 0.00000551, - }, - "claude-2": { - "max_tokens": 100000, - "input_cost_per_token": 0.00001102, - "output_cost_per_token": 0.00003268, - }, - "text-bison-001": { - "max_tokens": 8192, - "input_cost_per_token": 0.000004, - "output_cost_per_token": 0.000004, - }, - "chat-bison-001": { - "max_tokens": 4096, - "input_cost_per_token": 0.000002, - "output_cost_per_token": 0.000002, - }, - "command-nightly": { - "max_tokens": 4096, - "input_cost_per_token": 0.000015, - "output_cost_per_token": 0.000015, - }, -} - - -class AISpendLogger: - # Class variables or attributes - def __init__(self): - # Instance variables - self.account_id = os.getenv("AISPEND_ACCOUNT_ID") - self.api_key = os.getenv("AISPEND_API_KEY") - - def price_calculator(self, model, response_obj, start_time, end_time): - # try and find if the model is in the model_cost map - # else default to the average of the costs - prompt_tokens_cost_usd_dollar = 0 - completion_tokens_cost_usd_dollar = 0 - if model in model_cost: - prompt_tokens_cost_usd_dollar = ( - model_cost[model]["input_cost_per_token"] - * response_obj["usage"]["prompt_tokens"] - ) - completion_tokens_cost_usd_dollar = ( - model_cost[model]["output_cost_per_token"] - * response_obj["usage"]["completion_tokens"] - ) - elif "replicate" in model: - # replicate models are charged based on time - # llama 2 runs on an nvidia a100 which costs $0.0032 per second - https://replicate.com/replicate/llama-2-70b-chat - model_run_time = end_time - start_time # assuming time in seconds - cost_usd_dollar = model_run_time * 0.0032 - prompt_tokens_cost_usd_dollar = cost_usd_dollar / 2 - completion_tokens_cost_usd_dollar = cost_usd_dollar / 2 - else: - # calculate average input cost - input_cost_sum = 0 - output_cost_sum = 0 - for model in model_cost: - input_cost_sum += model_cost[model]["input_cost_per_token"] - output_cost_sum += model_cost[model]["output_cost_per_token"] - prompt_tokens_cost_usd_dollar = ( - model_cost[model]["input_cost_per_token"] - * response_obj["usage"]["prompt_tokens"] - ) - completion_tokens_cost_usd_dollar = ( - model_cost[model]["output_cost_per_token"] - * response_obj["usage"]["completion_tokens"] - ) - return prompt_tokens_cost_usd_dollar, completion_tokens_cost_usd_dollar - - def log_event(self, model, response_obj, start_time, end_time, print_verbose): - # Method definition - try: - print_verbose( - f"AISpend Logging - Enters logging function for model {model}" - ) - - response_timestamp = datetime.datetime.fromtimestamp( - int(response_obj["created"]) - ).strftime("%Y-%m-%d") - - ( - prompt_tokens_cost_usd_dollar, - completion_tokens_cost_usd_dollar, - ) = self.price_calculator(model, response_obj, start_time, end_time) - prompt_tokens_cost_usd_cent = prompt_tokens_cost_usd_dollar * 100 - completion_tokens_cost_usd_cent = completion_tokens_cost_usd_dollar * 100 - data = [ - { - "requests": 1, - "requests_context": 1, - "context_tokens": response_obj["usage"]["prompt_tokens"], - "requests_generated": 1, - "generated_tokens": response_obj["usage"]["completion_tokens"], - "recorded_date": response_timestamp, - "model_id": response_obj["model"], - "generated_tokens_cost_usd_cent": prompt_tokens_cost_usd_cent, - "context_tokens_cost_usd_cent": completion_tokens_cost_usd_cent, - } - ] - - print_verbose(f"AISpend Logging - final data object: {data}") - except Exception: - print_verbose(f"AISpend Logging Error - {traceback.format_exc()}") - pass diff --git a/litellm/integrations/berrispend.py b/litellm/integrations/berrispend.py deleted file mode 100644 index a1ad2e6a2..000000000 --- a/litellm/integrations/berrispend.py +++ /dev/null @@ -1,86 +0,0 @@ -#### What this does #### -# On success + failure, log events to aispend.io -import datetime -import os -import traceback - -import dotenv -import requests # type: ignore - -model_cost = { - "gpt-3.5-turbo": { - "max_tokens": 4000, - "input_cost_per_token": 0.0000015, - "output_cost_per_token": 0.000002, - }, - "gpt-35-turbo": { - "max_tokens": 4000, - "input_cost_per_token": 0.0000015, - "output_cost_per_token": 0.000002, - }, # azure model name - "gpt-3.5-turbo-0613": { - "max_tokens": 4000, - "input_cost_per_token": 0.0000015, - "output_cost_per_token": 0.000002, - }, - "gpt-3.5-turbo-0301": { - "max_tokens": 4000, - "input_cost_per_token": 0.0000015, - "output_cost_per_token": 0.000002, - }, - "gpt-3.5-turbo-16k": { - "max_tokens": 16000, - "input_cost_per_token": 0.000003, - "output_cost_per_token": 0.000004, - }, - "gpt-35-turbo-16k": { - "max_tokens": 16000, - "input_cost_per_token": 0.000003, - "output_cost_per_token": 0.000004, - }, # azure model name - "gpt-3.5-turbo-16k-0613": { - "max_tokens": 16000, - "input_cost_per_token": 0.000003, - "output_cost_per_token": 0.000004, - }, - "gpt-4": { - "max_tokens": 8000, - "input_cost_per_token": 0.000003, - "output_cost_per_token": 0.00006, - }, - "gpt-4-0613": { - "max_tokens": 8000, - "input_cost_per_token": 0.000003, - "output_cost_per_token": 0.00006, - }, - "gpt-4-32k": { - "max_tokens": 8000, - "input_cost_per_token": 0.00006, - "output_cost_per_token": 0.00012, - }, - "claude-instant-1": { - "max_tokens": 100000, - "input_cost_per_token": 0.00000163, - "output_cost_per_token": 0.00000551, - }, - "claude-2": { - "max_tokens": 100000, - "input_cost_per_token": 0.00001102, - "output_cost_per_token": 0.00003268, - }, - "text-bison-001": { - "max_tokens": 8192, - "input_cost_per_token": 0.000004, - "output_cost_per_token": 0.000004, - }, - "chat-bison-001": { - "max_tokens": 4096, - "input_cost_per_token": 0.000002, - "output_cost_per_token": 0.000002, - }, - "command-nightly": { - "max_tokens": 4096, - "input_cost_per_token": 0.000015, - "output_cost_per_token": 0.000015, - }, -} diff --git a/litellm/integrations/litedebugger.py b/litellm/integrations/litedebugger.py deleted file mode 100644 index 6af8810bf..000000000 --- a/litellm/integrations/litedebugger.py +++ /dev/null @@ -1,77 +0,0 @@ -import json -import os -import traceback -import types - -import requests - - -class LiteDebugger: - user_email = None - dashboard_url = None - - def __init__(self, email=None): - self.api_url = "https://api.litellm.ai/debugger" - self.validate_environment(email) - pass - - def validate_environment(self, email): - try: - self.user_email = ( - email or os.getenv("LITELLM_TOKEN") or os.getenv("LITELLM_EMAIL") - ) - if ( - self.user_email is None - ): # if users are trying to use_client=True but token not set - raise ValueError( - "litellm.use_client = True but no token or email passed. Please set it in litellm.token" - ) - self.dashboard_url = "https://admin.litellm.ai/" + self.user_email - if self.user_email is None: - raise ValueError( - "[Non-Blocking Error] LiteLLMDebugger: Missing LITELLM_TOKEN. Set it in your environment. Eg.: os.environ['LITELLM_TOKEN']= " - ) - except Exception: - raise ValueError( - "[Non-Blocking Error] LiteLLMDebugger: Missing LITELLM_TOKEN. Set it in your environment. Eg.: os.environ['LITELLM_TOKEN']= " - ) - - def input_log_event( - self, - model, - messages, - end_user, - litellm_call_id, - call_type, - print_verbose, - litellm_params, - optional_params, - ): - """ - This integration is not implemented yet. - """ - return - - def post_call_log_event( - self, original_response, litellm_call_id, print_verbose, call_type, stream - ): - """ - This integration is not implemented yet. - """ - return - - def log_event( - self, - end_user, - response_obj, - start_time, - end_time, - litellm_call_id, - print_verbose, - call_type, - stream=False, - ): - """ - This integration is not implemented yet. - """ - return diff --git a/litellm/litellm_core_utils/litellm_logging.py b/litellm/litellm_core_utils/litellm_logging.py index 8a80f9b96..0a298d33b 100644 --- a/litellm/litellm_core_utils/litellm_logging.py +++ b/litellm/litellm_core_utils/litellm_logging.py @@ -58,7 +58,6 @@ from litellm.utils import ( prompt_token_calculator, ) -from ..integrations.aispend import AISpendLogger from ..integrations.argilla import ArgillaLogger from ..integrations.arize_ai import ArizeLogger from ..integrations.athina import AthinaLogger @@ -73,7 +72,6 @@ from ..integrations.lago import LagoLogger from ..integrations.langfuse.langfuse import LangFuseLogger from ..integrations.langfuse.langfuse_handler import LangFuseHandler from ..integrations.langsmith import LangsmithLogger -from ..integrations.litedebugger import LiteDebugger from ..integrations.literal_ai import LiteralAILogger from ..integrations.logfire_logger import LogfireLevel, LogfireLogger from ..integrations.lunary import LunaryLogger @@ -124,7 +122,6 @@ s3Logger = None genericAPILogger = None greenscaleLogger = None lunaryLogger = None -aispendLogger = None supabaseClient = None callback_list: Optional[List[str]] = [] user_logger_fn = None @@ -2044,7 +2041,7 @@ def set_callbacks(callback_list, function_id=None): # noqa: PLR0915 """ Globally sets the callback client """ - global sentry_sdk_instance, capture_exception, add_breadcrumb, posthog, slack_app, alerts_channel, traceloopLogger, athinaLogger, heliconeLogger, aispendLogger, supabaseClient, lunaryLogger, promptLayerLogger, langFuseLogger, customLogger, weightsBiasesLogger, logfireLogger, dynamoLogger, s3Logger, dataDogLogger, prometheusLogger, greenscaleLogger, openMeterLogger + global sentry_sdk_instance, capture_exception, add_breadcrumb, posthog, slack_app, alerts_channel, traceloopLogger, athinaLogger, heliconeLogger, supabaseClient, lunaryLogger, promptLayerLogger, langFuseLogger, customLogger, weightsBiasesLogger, logfireLogger, dynamoLogger, s3Logger, dataDogLogger, prometheusLogger, greenscaleLogger, openMeterLogger try: for callback in callback_list: @@ -2124,8 +2121,6 @@ def set_callbacks(callback_list, function_id=None): # noqa: PLR0915 weightsBiasesLogger = WeightsBiasesLogger() elif callback == "logfire": logfireLogger = LogfireLogger() - elif callback == "aispend": - aispendLogger = AISpendLogger() elif callback == "supabase": print_verbose("instantiating supabase") supabaseClient = Supabase()