前置约定
一般情况下模型中 token 和字数的换算比例大致如下:
- 1 个英文字符 ≈ 0.3 个 token。
- 1 个中文字符 ≈ 0.6 个 token。
本文方便计算,一个汉字视为 1 个 tokens
以 deepSeek-chat 的价格为例(如图)
每百万 tokens,输入 2 元,输出 8 元
问题一 确定的输入输出如何计算价格
假如我的输入一篇 4k 字的文章,需要输出 400 字的总结,需要多少钱?
回答
如果命中缓存,费用为
输入是:4k/1000k * 0.5 = 0.002 元 (2厘钱)
输出是 0.4k/1000k * 8 = 0.032元 (3.2 厘钱)
一共需要 5.2 厘,也就是半分钱多一点;一块钱可以获得接近 200 次额度
如果未命中缓存,费用为
输入是:4k/1000k * 2 = 0.008 元 (8厘)
输出是 0.4k/1000k * 8 = 0.0032元 (3.2 厘钱)
一共需要 11.2厘,一块钱可以获得约 90 次额度
问题二 存在私有数据时,如何计算成本
假如我有一段私有数据,约 40 k,现在我需要提问题,让 AI 回答,请问成本如何计算?如果我提了十个问题呢?成本是翻十倍嘛?
已知: deepseek-chat 允许的最大上下文为:最大6.4万token;此时私有数据 40k;
所以第一次提问时,要额外计算 40k tokens 的输入成本;剩余的提问,每次都独立计算输入和输出价格即可;
除去 40k tokens 的输入成本,每个问题的成本都是一样的;所以 10 个问题就是成本就是 1 个问题的 10倍
-
第一次提问:
-
输入费用:40000 tokens * (2 元/1M tokens) = 0.08 元(假设未命中缓存)
-
输出费用:500 tokens * (8 元/1M tokens) = 0.004 元
-
总费用:0.08 元 + 0.004 元 = 0.084 元
-
后续 9 次提问:
-
输入费用:0 元(因为上下文中已经包含了 40k 字的数据)
-
输出费用:500 tokens * 9 次 * (8 元/1M tokens) = 0.036 元
-
总费用:0 元 + 0.036 元 = 0.036 元
10 次提问的总费用:
- 第一次提问:0.084 元
- 后续 9 次提问:0.036 元
- 总费用:0.084 元 + 0.036 元 = 0.12 元
PS: 这里面因为问题大概就是十几个字或者几十个字,就直接忽略不计了
问题三 存在私有数据时,如何计算成本 (超过最大上下文)
在问题二的基础上,如果我的私有数据体积是约 100 k(10万 tokens),超过了最大6.4万token,应该如何计算成本呢?
在私有数据体积超过 deepseek-chat 的最大上下文时,deepseek-chat 无法直接以全部内容为依据来回答问题。
此时可以尝试的做法
分块思路
情况一 总结全文
对于:「总结这 10w tokens 的内容」这样的问题,可以把 10w tokens 的私有数据分为两个 5w 的,先问「第一个5w 的主要内容是什么」,再问「第二个5w 的主要内容是什么」,再把这两个问题的回答组装起来,作为第三个问题,要求「把这两个结果合并成一个整体的总结」
此时的成本计算如下
第一个块 输入 5w tokens 假设输出 1k
第二个块 输入 5w tokens 假设输出 1k
第三个块 输入 2k ,假设输入 0.5k
费用为
50k/1000k * 2 + 1k/1000k * 8
+ 50k/1000k *2 + 1k/1000k * 8
+ 2k/1000k *2 + 0.5k/1000k *8
= 0.224 元
第一次提问:0.108 元
第一次提问:0.108 元
第三次提问:0.008元
合计 0.224元
情况二: 分部分的提问
如果问题是显然可以区分成多部分的,可以考虑把私有数据分成多部分,分别提问。
举个例子,私有数据是一本「A、B、C模块的使用说明书」,那么如果问题也是分别对 A、B、C模块提问,那就可以把数据拆成 3 个部分,分别调用 api 进行提问,来避免超过最大上下文。
情况:必须基于全文回答
如果提问比较特殊,必须基于全部私有数据才能做出回答,而全部数据又超过了最大上下文,此时就不能简单的直接调用 api 了,需要一些其他手段。
先数据预处理,把 1M 的数据分词,切成合适的片段(例如每段 2k-4k tokens)后,存入向量数据库
然后用户提问时,从向量数据库中检索到匹配的 n 个数据块,确保总 tokens 不超过模型限制
之后把「匹配的内容」和「用户提问」调用 api 即可
api 费用计算方式
假设匹配到的数据块是 3 个,每个数据块 1k,输出回答是 500 字
- 每次检索 3 个数据块,总输入 tokens = 问题 100 tokens + 数据块 3 × 1k tokens = 3,100 tokens
- 输出 tokens = 500 tokens
输入费用 + 输出费用 = (1,000,0003100×2)+(1,000,000500×8)=0.0062+0.004=0.0102 元
向量化成本(一次性费用)
向量化的成本约为 1M tokens 0.1 元 (DeepSeek Embedding)
1M 私有数据成本为 1,000,000 /1,000,000×0.1=0.1 元
假设每天有一万个用户问问题,平均一个用户一天提问 10 次
月均费用为 0.0102 元 * 10000 * 10 = 1020 元