컴플리션 토큰 사용량 및 비용

컴플리션 토큰 사용량 및 비용 (Completion Token Usage & Cost)

기본적으로 LiteLLM은 모든 컴플리션 요청에서 토큰 사용량을 반환합니다 (여기 참고).

LiteLLM은 모든 호출에서 response_cost 를 반환합니다.

from litellm import completion 

response = litellm.completion(
            model="gpt-5.6-luna",
            messages=[{"role": "user", "content": "Hey, how's it going?"}],
            mock_response="Hello world",
        )

print(response._hidden_params["response_cost"])

LiteLLM은 또한 몇 가지 헬퍼 함수를 노출합니다:

  • encode : 전달된 텍스트를 모델별 토크나이저로 인코딩합니다. 코드 보기
  • decode : 전달된 토큰을 모델별 토크나이저로 디코딩합니다. 코드 보기
  • token_counter : 주어진 입력의 토큰 수를 반환합니다. 모델 기반 토크나이저를 사용하며, 모델별 토크나이저가 없으면 tiktoken을 기본으로 합니다. 코드 보기
  • create_pretrained_tokenizercreate_tokenizer : LiteLLM은 OpenAI, Cohere, Anthropic, Llama2, Llama3 모델에 기본 토크나이저를 제공합니다. 다른 모델을 사용한다면 커스텀 토크나이저를 만들어 encode, decode, token_counter 메서드에 custom_tokenizer 로 전달할 수 있어요. 코드 보기
  • cost_per_token : prompt(입력)와 completion(출력) 토큰의 비용(USD)을 반환합니다. api.litellm.ai 의 라이브 목록을 사용해요. 코드 보기
  • completion_cost : 주어진 LLM API 호출의 전체 비용(USD)을 반환합니다. token_countercost_per_token 을 결합해 그 쿼리의 비용(입력+출력 비용 모두 계산)을 반환합니다. 코드 보기
  • get_max_tokens : 주어진 모델에 허용된 최대 토큰 수를 반환합니다. 코드 보기
  • model_cost : 모든 모델에 대해 max_tokens, input_cost_per_token, output_cost_per_token 을 포함하는 사전을 반환합니다. 아래 표시된 api.litellm.ai 호출을 사용해요. 코드 보기
  • register_model : 모델 비용 사전에 새 모델을 등록/기존 모델을 오버라이드합니다(가격 상세 포함). 코드 보기
  • api.litellm.ai : 모든 지원 모델의 라이브 토큰 + 가격 수. 코드 보기

📣 이것은 커뮤니티 관리 목록입니다. 기여를 환영합니다! ❤️

출처: 문서

본문

예시 사용법

1. encode

인코딩은 anthropic, cohere, llama2, openai에 대한 모델별 토크나이저를 가집니다. 지원되지 않는 모델이 전달되면 tiktoken(openai 토크나이저)을 기본으로 사용합니다.

from litellm import encode, decode

sample_text = "Hellö World, this is my input string!"
# openai encoding + decoding
openai_tokens = encode(model="gpt-5.6-luna", text=sample_text)
print(openai_tokens)

2. decode

디코딩은 anthropic, cohere, llama2, openai를 지원합니다.

from litellm import encode, decode

sample_text = "Hellö World, this is my input string!"
# openai encoding + decoding
openai_tokens = encode(model="gpt-5.6-luna", text=sample_text)
openai_text = decode(model="gpt-5.6-luna", 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-5.6-luna", messages=messages))

4. create_pretrained_tokenizer and 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-5.6-luna", prompt_tokens=prompt_tokens, completion_tokens=completion_tokens)

print(prompt_tokens_cost_usd_dollar, completion_tokens_cost_usd_dollar)

6. completion_cost

  • 입력: litellm.completion() 응답 또는 prompt + completion 문자열을 받습니다
  • 출력: 컴플리션 호출의 비용 float을 반환합니다

litellm.completion() 응답:

from litellm import completion, completion_cost

response = completion(
            model="bedrock/us.anthropic.claude-sonnet-5",
            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 문자열:

from litellm import completion_cost
cost = completion_cost(model="bedrock/us.anthropic.claude-sonnet-5", prompt="Hey!", completion="How's it going?")
formatted_string = f"${float(cost):.10f}"
print(formatted_string)

7. get_max_tokens

  • 입력: 모델 이름을 받습니다 — 예: gpt-5.6-luna (전체 목록은 litellm.model_list 호출)
  • 출력: 주어진 모델에 허용된 최대 토큰 수 반환
from litellm import get_max_tokens 

model = "gpt-5.6-luna"

print(get_max_tokens(model)) # Output: 128000

8. model_cost

  • 출력: 커뮤니티 관리 목록의 모든 모델에 대한 max_tokens, input_cost_per_token, output_cost_per_token 을 포함하는 dict 객체 반환
from litellm import model_cost 

print(model_cost) # {'gpt-5.6-luna': {'max_tokens': 128000, 'input_cost_per_token': 2e-07, 'output_cost_per_token': 1.2e-06}, ...}

9. register_model

  • 입력: 모델 비용 사전 또는 호스티드 json blob URL 중 하나를 제공
  • 출력: 업데이트된 model_cost 사전 반환 + 모델 상세로 litellm.model_cost 업데이트

사전:

import litellm

litellm.register_model({
        "gpt-5.6-terra": {
        "max_tokens": 128000, 
        "input_cost_per_token": 0.000002, 
        "output_cost_per_token": 0.000012, 
        "litellm_provider": "openai", 
        "mode": "chat"
    },
})

json blob URL:

import litellm

litellm.register_model(model_cost=
"https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json")

호스티드 model_cost_map을 가져오지 않기: 방화벽이 있고 로컬 사본의 모델 비용 맵만 사용하려면 이렇게 할 수 있어요:

export LITELLM_LOCAL_MODEL_COST_MAP="True"

참고: 이것은 업데이트된 가격과 새 모델을 얻으려면 업그레이드가 필요하다는 뜻입니다.

더 알아보기 (Learn more)