mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-26 11:14:04 +00:00
* fix(cost_calculator.py): move to debug for noisy warning message on cost calculation error Fixes https://github.com/BerriAI/litellm/issues/5610 * fix(databricks/cost_calculator.py): Handles model name issues for databricks models * fix(main.py): fix stream chunk builder for multiple tool calls Fixes https://github.com/BerriAI/litellm/issues/5591 * fix: correctly set user_alias when passed in Fixes https://github.com/BerriAI/litellm/issues/5612 * fix(types/utils.py): allow passing role for message object https://github.com/BerriAI/litellm/issues/5621 * fix(litellm_logging.py): Fix langfuse logging across multiple projects Fixes issue where langfuse logger was re-using the old logging object * feat(proxy/_types.py): support adding key-based tags for tag-based routing Enable tag based routing at key-level * fix(proxy/_types.py): fix inheritance * test(test_key_generate_prisma.py): fix test * test: fix test * fix(litellm_logging.py): return used callback object
62 lines
2.2 KiB
Python
62 lines
2.2 KiB
Python
"""
|
|
Helper util for handling databricks-specific cost calculation
|
|
- e.g.: handling 'dbrx-instruct-*'
|
|
"""
|
|
|
|
from typing import Tuple
|
|
|
|
from litellm.types.utils import Usage
|
|
from litellm.utils import get_model_info
|
|
|
|
|
|
def cost_per_token(model: str, usage: Usage) -> Tuple[float, float]:
|
|
"""
|
|
Calculates the cost per token for a given model, prompt tokens, and completion tokens.
|
|
|
|
Input:
|
|
- model: str, the model name without provider prefix
|
|
- usage: LiteLLM Usage block, containing anthropic caching information
|
|
|
|
Returns:
|
|
Tuple[float, float] - prompt_cost_in_usd, completion_cost_in_usd
|
|
"""
|
|
base_model = model
|
|
if model.startswith("databricks/dbrx-instruct") or model.startswith(
|
|
"dbrx-instruct"
|
|
):
|
|
base_model = "databricks-dbrx-instruct"
|
|
elif model.startswith("databricks/meta-llama-3.1-70b-instruct") or model.startswith(
|
|
"meta-llama-3.1-70b-instruct"
|
|
):
|
|
base_model = "databricks-meta-llama-3-1-70b-instruct"
|
|
elif model.startswith(
|
|
"databricks/meta-llama-3.1-405b-instruct"
|
|
) or model.startswith("meta-llama-3.1-405b-instruct"):
|
|
base_model = "databricks-meta-llama-3-1-405b-instruct"
|
|
elif model.startswith("databricks/mixtral-8x7b-instruct-v0.1") or model.startswith(
|
|
"mixtral-8x7b-instruct-v0.1"
|
|
):
|
|
base_model = "databricks-mixtral-8x7b-instruct"
|
|
elif model.startswith("databricks/mixtral-8x7b-instruct-v0.1") or model.startswith(
|
|
"mixtral-8x7b-instruct-v0.1"
|
|
):
|
|
base_model = "databricks-mixtral-8x7b-instruct"
|
|
elif model.startswith("databricks/bge-large-en") or model.startswith(
|
|
"bge-large-en"
|
|
):
|
|
base_model = "databricks-bge-large-en"
|
|
elif model.startswith("databricks/gte-large-en") or model.startswith(
|
|
"gte-large-en"
|
|
):
|
|
base_model = "databricks-gte-large-en"
|
|
## GET MODEL INFO
|
|
model_info = get_model_info(model=base_model, custom_llm_provider="databricks")
|
|
|
|
## CALCULATE INPUT COST
|
|
|
|
prompt_cost: float = usage["prompt_tokens"] * model_info["input_cost_per_token"]
|
|
|
|
## CALCULATE OUTPUT COST
|
|
completion_cost = usage["completion_tokens"] * model_info["output_cost_per_token"]
|
|
|
|
return prompt_cost, completion_cost
|