Completion Token Nutzung & Kosten
Standardmäßig gibt LiteLLM bei allen Abschlussanfragen die Token-Nutzung zurück (Siehe hier)
LiteLLM gibt bei allen Aufrufen response_cost zurück.
from litellm import completion
response = litellm.completion(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "Hey, how's it going?"}],
mock_response="Hello world",
)
print(response._hidden_params["response_cost"])
LiteLLM stellt auch einige Hilfsfunktionen zur Verfügung
encode: Dies kodiert den übergebenen Text mithilfe des modellspezifischen Tokenizers. Zum Code springendecode: Dies dekodiert die übergebenen Token mithilfe des modellspezifischen Tokenizers. Zum Code springentoken_counter: Gibt die Anzahl der Token für eine gegebene Eingabe zurück - es verwendet den Tokenizer, der auf dem Modell basiert, und greift auf tiktoken zurück, wenn kein modellspezifischer Tokenizer verfügbar ist. Zum Code springencreate_pretrained_tokenizerundcreate_tokenizer: LiteLLM bietet standardmäßige Tokenizer-Unterstützung für OpenAI-, Cohere-, Anthropic-, Llama2- und Llama3-Modelle. Wenn Sie ein anderes Modell verwenden, können Sie einen benutzerdefinierten Tokenizer erstellen und ihn alscustom_tokenizeran die Methodenencode,decodeundtoken_counterübergeben. Zum Code springencost_per_token: Gibt die Kosten (in USD) für Prompt- (Input) und Completion- (Output) Token zurück. Verwendet die Live-Liste vonapi.litellm.ai. Zum Code springencompletion_cost: Gibt die Gesamtkosten (in USD) für einen gegebenen LLM API-Aufruf zurück. Es kombinierttoken_counterundcost_per_token, um die Kosten für diese Abfrage zurückzugeben (zählt sowohl die Kosten für Input als auch für Output). Zum Code springenget_max_tokens: Gibt die maximale Anzahl von Token zurück, die für das gegebene Modell zulässig sind. Zum Code springenmodel_cost: Gibt ein Dictionary für alle Modelle zurück, mit derenmax_tokens,input_cost_per_tokenundoutput_cost_per_token. Es verwendet den unten gezeigten Aufruf vonapi.litellm.ai. Zum Code springenregister_model: Registriert neue / überschreibt bestehende Modelle (und deren Preisdetails) im Model-Kosten-Dictionary. Zum Code springenapi.litellm.ai: Live Token + Preisberechnung über alle unterstützten Modelle. Zum Code springen
📣 Dies ist eine gemeinschaftlich gepflegte Liste. Beiträge sind willkommen! ❤️
Beispielverwendung
1. encode
Encoding verfügt über modellspezifische Tokenizer für Anthropic, Cohere, Llama2 und OpenAI. Wenn ein nicht unterstütztes Modell übergeben wird, wird standardmäßig tiktoken (OpenAI's Tokenizer) verwendet.
from litellm import encode, decode
sample_text = "Hellö World, this is my input string!"
# openai encoding + decoding
openai_tokens = encode(model="gpt-3.5-turbo", text=sample_text)
print(openai_tokens)
2. decode
Dekodierung wird für Anthropic, Cohere, Llama2 und OpenAI unterstützt.
from litellm import encode, decode
sample_text = "Hellö World, this is my input string!"
# openai encoding + decoding
openai_tokens = encode(model="gpt-3.5-turbo", text=sample_text)
openai_text = decode(model="gpt-3.5-turbo", tokens=openai_tokens)
print(openai_text)
3. token_counter
from litellm import token_counter
messages = [{"user": "role", "content": "Hey, how's it going"}]
print(token_counter(model="gpt-3.5-turbo", messages=messages))
4. create_pretrained_tokenizer und create_tokenizer
from litellm import create_pretrained_tokenizer, create_tokenizer
# get tokenizer from huggingface repo
custom_tokenizer_1 = create_pretrained_tokenizer("Xenova/llama-3-tokenizer")
# use tokenizer from json file
with open("tokenizer.json") as f:
json_data = json.load(f)
json_str = json.dumps(json_data)
custom_tokenizer_2 = create_tokenizer(json_str)
5. cost_per_token
from litellm import cost_per_token
prompt_tokens = 5
completion_tokens = 10
prompt_tokens_cost_usd_dollar, completion_tokens_cost_usd_dollar = cost_per_token(model="gpt-3.5-turbo", prompt_tokens=prompt_tokens, completion_tokens=completion_tokens))
print(prompt_tokens_cost_usd_dollar, completion_tokens_cost_usd_dollar)
6. completion_cost
- Eingabe: Akzeptiert eine
litellm.completion()-Antwort **ODER** Prompt- + Completion-Strings - Ausgabe: Gibt einen
floatder Kosten für dencompletion-Aufruf zurück
litellm.completion()
from litellm import completion, completion_cost
response = completion(
model="bedrock/anthropic.claude-v2",
messages=messages,
request_timeout=200,
)
# pass your response from completion to completion_cost
cost = completion_cost(completion_response=response)
formatted_string = f"${float(cost):.10f}"
print(formatted_string)
Prompt- + Completion-String
from litellm import completion_cost
cost = completion_cost(model="bedrock/anthropic.claude-v2", prompt="Hey!", completion="How's it going?")
formatted_string = f"${float(cost):.10f}"
print(formatted_string)
7. get_max_tokens
Eingabe: Akzeptiert einen Modellnamen - z.B. gpt-3.5-turbo (um eine vollständige Liste zu erhalten, rufen Sie litellm.model_list auf). Ausgabe: Gibt die maximale Anzahl von Token zurück, die für das gegebene Modell zulässig sind
from litellm import get_max_tokens
model = "gpt-3.5-turbo"
print(get_max_tokens(model)) # Output: 4097
8. model_cost
- Ausgabe: Gibt ein Dictionary-Objekt zurück, das die
max_tokens,input_cost_per_tokenundoutput_cost_per_tokenfür alle Modelle auf der gemeinschaftlich gepflegten Liste enthält.
from litellm import model_cost
print(model_cost) # {'gpt-3.5-turbo': {'max_tokens': 4000, 'input_cost_per_token': 1.5e-06, 'output_cost_per_token': 2e-06}, ...}
9. register_model
- Eingabe: Stellen Sie ENTWEDER ein Modellkosten-Dictionary ODER eine URL zu einem gehosteten JSON-Blob bereit
- Ausgabe: Gibt das aktualisierte
model_cost-Dictionary zurück + aktualisiertlitellm.model_costmit Modelldetails.
Dictionary
from litellm import register_model
litellm.register_model({
"gpt-4": {
"max_tokens": 8192,
"input_cost_per_token": 0.00002,
"output_cost_per_token": 0.00006,
"litellm_provider": "openai",
"mode": "chat"
},
})
URL für JSON-Blob
import litellm
litellm.register_model(model_cost=
"https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json")
model_cost_map nicht abrufen
Wenn Sie Firewalls haben und nur die lokale Kopie der model_cost_map verwenden möchten, können Sie dies wie folgt tun:
export LITELLM_LOCAL_MODEL_COST_MAP="True"
Hinweis: Dies bedeutet, dass Sie ein Upgrade durchführen müssen, um aktualisierte Preise und neuere Modelle zu erhalten.