Spaces:
Running
Running
import tiktoken | |
# Per OpenAI Pricing Page: https://openai.com/api/pricing/ | |
ENCODING_MODEL = "o200k_base" | |
INPUT_COST_PER_TOKEN = 0.000005 | |
OUTPUT_COST_PER_TOKEN = 0.000015 | |
IMAGE_INFERENCE_COST = 0.003825 | |
EMBEDDING_COST = 0.02 / 1000000 # Assumes new ada-3-small | |
# Cost estimation is via OpenAI libraries and models. May vary for other models | |
def estimate_llm_cost(input_content: str, output_content: str) -> float: | |
encoding = tiktoken.get_encoding(ENCODING_MODEL) | |
input_tokens = encoding.encode(input_content) | |
output_tokens = encoding.encode(output_content) | |
input_costs = len(input_tokens) * INPUT_COST_PER_TOKEN | |
output_costs = len(output_tokens) * OUTPUT_COST_PER_TOKEN | |
return input_costs + output_costs | |
def estimate_embedding_cost(model, docs): | |
encoding = tiktoken.encoding_for_model(model) | |
total_tokens = sum(len(encoding.encode(str(doc))) for doc in docs) | |
return total_tokens * EMBEDDING_COST | |