以前也是个忠实的plus订阅者,现在有了oaifree,以及随着大模型价格的内卷,api的使用早已不是原来的天价了。
于是我就在想,一个普通的用户,平时聊天翻译、写代码,用量非密集型,是选择plus还是api呢?
答案:我更倾向于直接按量使用api
实时上以gpt-4-1106-preview的价格为例
提示 $10 / 1M tokens
补全 $30 / 1M tokens
- 我认为对日常使用的开支还是比较抽象的,平均一条花多少钱?
- 我如果携带大量历史记录,一条8000tokens的话,不同模型各花多少钱?
- 以及累计使用100w tokens的费用也不是提示 $10 + 补全 $30 = $40, 显然是不对的,因为涉及到输入和输出的比值
例如有时候是3:1左右,有时候是2:1,取决于个人使用习惯,如果是大量提示词,那可能7:1
于是简单计算一下,综合不同情况,横向对比一下主流的几个。
我们先假设最贵的情况,提示/补全比为1,也就是100w tokens,50w输入,50w输出(这显然不可能),得出:
从实际情况看,把提示补全比设置为3:1比较合理,再来看看最贴近实际日常使用的开支:
好嘛,gpt-4o-2024-08-06 消耗100w tokens也就35元,把日常每条对话按2000tokens算,一条消息7分钱。 要达到plus 的成本,得消耗500w tokens, 可以对话2000+ 条。 显然是足够的,且有不限时间按量使用的自由度优势。
deepseek 和 gpt-4o-mini 你就使劲操吧… 假设你一天100条对话,一个月也只有10元不到。妥妥的稳。
具体的,可以根据自己的使用习惯,去估算一下个人使用的开支,更直观一点
input_output_ratio 是 input/ouput的比值
message_tokens 是个人每次对话的用量
total_tokens_w是要计算的消耗总量
class TokenCostCalculator:
# 定义模型的价格表
MODEL_PRICES = {
'gpt-4-turbo': {'input_price_usd': 10, 'output_price_usd': 30},
'gpt-40': {'input_price_usd': 5, 'output_price_usd': 15},
'claude-3-5-sonnet-20240620': {'input_price_usd': 3, 'output_price_usd': 15},
'gpt-4o-2024-08-06': {'input_price_usd': 2.5, 'output_price_usd': 10},
'gpt-4o-mini': {'input_price_usd': 0.15, 'output_price_usd': 0.6},
'deepseek': {'input_price_usd': 0.14, 'output_price_usd': 0.28}
}
def __init__(self, model_names=None, exchange_rate=8, input_output_ratio=2, message_tokens=2000):
if model_names is None:
self.model_names = list(self.MODEL_PRICES.keys())
else:
self.model_names = model_names
self.exchange_rate = exchange_rate
self.input_output_ratio = input_output_ratio
self.message_tokens = message_tokens
def calculate_cost(self, total_tokens_w):
results = []
for model_name in self.model_names:
model_prices = self.MODEL_PRICES.get(model_name)
if model_prices is None:
raise ValueError(f"指定的模型名称 '{model_name}' 未找到价格信息")
input_price_usd = model_prices['input_price_usd']
output_price_usd = model_prices['output_price_usd']
print(f"\n\n开始计算模型 '{model_name}' 总tokens数量为 {total_tokens_w} 万的成本...")
total_tokens = total_tokens_w * 10000
input_ratio = self.input_output_ratio / (self.input_output_ratio + 1)
output_ratio = 1 / (self.input_output_ratio + 1)
input_tokens = total_tokens * input_ratio
output_tokens = total_tokens * output_ratio
print(f"按照比例分配后:")
print(f"输入: {input_tokens / 10000:.2f}w tokens")
print(f"输出: {output_tokens / 10000:.2f}w tokens")
input_cost_usd = (input_tokens / 1e6) * input_price_usd
output_cost_usd = (output_tokens / 1e6) * output_price_usd
total_cost_usd = input_cost_usd + output_cost_usd
print(f"计算得出的费用(美元):")
print(f"输入部分费用: ${input_cost_usd:.2f}")
print(f"输出部分费用: ${output_cost_usd:.2f}")
print(f"总费用(美元): ${total_cost_usd:.2f}")
total_cost_cny = total_cost_usd * self.exchange_rate
print(f"总费用(人民币): {total_cost_cny:.2f} 元")
# 计算平均每条消息的费用
average_cost_per_message_cny = (total_cost_cny / total_tokens) * self.message_tokens
results.append({
'模型': model_name,
'总费用(人民币)': f"{total_cost_cny:.2f} 元",
'平均每条消息费用(人民币)': f"{average_cost_per_message_cny:.3f} 元"
})
return results
# 示例使用
# 创建 TokenCostCalculator 实例,设置汇率、输入输出比例和每条消息的tokens数
# exchange_rate: 汇率,默认值为8,表示1美元兑换8人民币
# input_output_ratio: 输入输出比例,默认值为1.5,表示输入tokens与输出tokens的比例
# message_tokens: 每条消息的tokens数,默认值为2000,表示每条消息平均消耗2000个tokens
calculator = TokenCostCalculator(
exchange_rate=8,
input_output_ratio=3,
message_tokens=2000
)
# 设置总tokens数量(以万为单位)
total_tokens_w = 100
# 计算成本
costs = calculator.calculate_cost(total_tokens_w=total_tokens_w)
# 输出表格
print(f"\n模型成本对比表[提示/补全比-{calculator.input_output_ratio}- /{total_tokens_w}w tokens]:")
print(f"{'模型':<30} {'总费用(人民币)':<20} {'平均每条消息费用(人民币)':<20}")
for result in costs:
print(f"{result['模型']:<30} {result['总费用(人民币)']:<20} {result['平均每条消息费用(人民币)']:<20}")
水完,安心使用api




