比较接地气地估算了下api的日常使用成本后,感觉可以放弃订阅plus了

以前也是个忠实的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

38 个赞

前排帮顶,确实API要比订阅PLUS便宜

1 个赞

不过感觉网页使用聪明一点,可能是提示词的原因

1 个赞

typo: “gpt-40” => “gpt-4o”

2 个赞

网页确实挺安逸的…客户端也有优势,预设提示词,和会话管理更自由一些。

2 个赞

有没有好用的web端推荐的,lobechat太卡了

nextchat 呀。没有比它还轻量的了。
你要大气、时尚、优雅、全面,那可以迈向 openwebui

1 个赞

其实就是缺一个很好用的WebUI :grinning: 刚看了openwebui感觉很不错

4 个赞

我是按3:2算的 :innocent:
考虑了多轮对话的情况

5 个赞

但是网页方便呀。

1 个赞

我想问他们都不缺用户吗,为什么国人绑卡都费死劲,有钱不赚啊

1 个赞

用上了nextchat,你们有推荐的api商吗

3 个赞

不费劲就要被薅秃了

3 个赞

中转商很多很多……不是太好推荐吧。
只推荐始皇的api.oaipro

1 个赞

一直不明白,都有始皇的oaifree了,为什么还有那么多人去买订阅?

可能有些人就是想支持一下官方吧 :melting_face:

是不是3级才能使用oaifree呢?

我实打实付钱啊 不是薅 也这么费劲吗 :xhs_008:

订阅的问题是,周六周日不上班,用不了多少

1 个赞

2级哦 zsbd