GitHub 工具支持快速查询 400+ LLM 的 token 成本。帮助程序员做模型选型和预算评估。
Clientside token counting + price estimation for LLM apps and AI agents.
🐦 Twitter • 📢 Discord • 🖇️ AgentOps
Tokencost 通过计算 prompt 和 completion 的预估成本,帮助计算使用主流大型语言模型(LLMs)API 的美元成本。
正在构建 AI agents?查看 AgentOps
主流 LLM 提供商频繁添加新模型并更新定价。本仓库有助于追踪最新的价格变化。
在发送 OpenAI 请求之前精确计数 prompt token。
通过单个函数获取 prompt 或 completion 的成本。
from tokencost import calculate_prompt_cost, calculate_completion_cost
model = "gpt-3.5-turbo"
prompt = [{ "role": "user", "content": "Hello world"}]
completion = "How may I assist you today?"
prompt_cost = calculate_prompt_cost(prompt, model)
completion_cost = calculate_completion_cost(completion, model)
print(f"{prompt_cost} + {completion_cost} = {prompt_cost + completion_cost}")
# 0.0000135 + 0.000014 = 0.0000275
pip install tokencost
通过 OpenAI 请求计算 prompt 和 completion 的成本
from openai import OpenAI
client = OpenAI()
model = "gpt-3.5-turbo"
prompt = [{ "role": "user", "content": "Say this is a test"}]
chat_completion = client.chat.completions.create(
messages=prompt, model=model
)
completion = chat_completion.choices[0].message.content
# "This is a test."
prompt_cost = calculate_prompt_cost(prompt, model)
completion_cost = calculate_completion_cost(completion, model)
print(f"{prompt_cost} + {completion_cost} = {prompt_cost + completion_cost}")
# 0.0000180 + 0.000010 = 0.0000280
使用字符串 prompt 而非消息格式计算成本:
from tokencost import calculate_prompt_cost
prompt_string = "Hello world"
response = "How may I assist you today?"
model= "gpt-3.5-turbo"
prompt_cost = calculate_prompt_cost(prompt_string, model)
print(f"Cost: ${prompt_cost}")
# Cost: $3e-06
from tokencost import count_message_tokens, count_string_tokens
message_prompt = [{ "role": "user", "content": "Hello world"}]
# Counting tokens in prompts formatted as message lists
print(count_message_tokens(message_prompt, model="gpt-3.5-turbo"))
# 9
# Alternatively, counting tokens in string prompts
print(count_string_tokens(prompt="Hello world", model="gpt-3.5-turbo"))
# 2
在底层,字符串和 ChatML 消息使用 Tiktoken(OpenAI 的官方 tokenizer)进行 tokenization。Tiktoken 将文本分割成 token(可以是单词的一部分或单个字符),并处理原始字符串和消息格式,为消息格式和角色添加额外的 token。
对于 Anthropic 3.0 版本及以上的模型(即 Sonnet 3.5、Haiku 3.5 和 Opus 3),我们使用 Anthropic beta token counting API 来确保准确的 token 计数。对于较早的 Claude 模型,我们使用 Tiktoken 和 cl100k_base 编码进行近似计算。
单位以 USD 计价。所有价格可在此处找到。