昨天老婆说公司用的一个AI大模型产品 按照Tokens 收费,问我Tokens是什么? 嗯...
给老婆科普一下
什么是 Tokens?
在自然语言处理 (NLP) 和大语言模型(如 GPT 系列)中,token 是文本数据的基本单位。一个 token 通常可以是:
- 一个词(例如,“apple”)。
- 一个字符(例如,“a” 或者标点符号)。
- 甚至是子词、词根或其他形式的文本碎片。
对于英语等语言,通常一个 token 大致相当于一个单词或者标点符号。但在一些语言中,token 可能会更小,例如在中文中,每个字符(如一个汉字)通常被视为一个 token。
为什么大模型按 Tokens 收费?
大型语言模型(如 GPT-3、GPT-4)处理文本时,会将输入文本拆分成 tokens,然后逐个 token 进行处理。在大模型中,生成每个 token 都需要一定的计算资源和时间。根据模型的大小和复杂性,计算这些 tokens 需要的资源不同,因此,模型的计算和处理成本是与输入的 token 数量直接相关的。
收费基于 tokens 主要有以下几个原因:
- 计算开销:每个 token 的生成都涉及到计算、存储和网络传输。模型处理更多的 tokens 需要更多的计算能力,特别是对于像 GPT-3 或 GPT-4 这样的超大规模模型。
- 模型处理限制:大模型的上下文窗口(即模型一次能处理的最大 token 数量)有限。例如,GPT-3 的最大上下文窗口为 4096 个 tokens,超过该限制的输入会被截断或分段。这使得对 tokens 数量的收费成为一个合理的方式来衡量模型使用量。
- 输入和输出的 token 计算:API 费用通常按总 token 数量计算,这包括输入 tokens和输出 tokens,所以一个长请求或长生成的内容会导致更高的费用。
Tokens 计费和 API 调用收费的区别
-
Tokens 计费:
- 按 token 数量计费是最常见的计费方式,尤其是对于像 OpenAI 的 GPT 模型。每个 API 调用会根据请求中的 token 数量来收费,包括输入文本的 tokens 和模型生成的输出 tokens。
- 输入 tokens是传递给模型的文本(例如,用户提供的问题或命令)。
- 输出 tokens是模型返回的文本(例如,模型生成的答案或预测)。
这种收费方式更细致,直接与计算资源的使用量相关。
-
API 调用收费:
- API 调用收费是指对每次调用 API 的一次性费用,无论请求中的 token 数量如何。例如,每次调用模型接口的价格可能是固定的,不依赖于输入文本的长度或生成文本的多少。
- 有些服务采用包月或套餐制,每月提供一定数量的 API 调用次数,或者每次调用的收费都相同。
这种收费方式通常更简洁,但可能忽略了计算资源的精确消耗。
Tokens 和 API 调用的差异:
- Tokens 计费:直接按处理的 tokens 数量收费,因此,生成更长的响应或处理更长的输入会带来更多的费用。
- API 调用计费:有些 API 提供固定价格,每次调用不论其 token 数量如何,费用都相同。这种方式较为简单,但在处理大量数据时可能不够灵活,无法反映实际的计算负载。
例子:
以下是几个关于 Tokens 计费 和 API 调用收费 的实际例子,帮助更好地理解它们的不同。
1. Tokens 计费的例子
假设我们使用一个 GPT 模型(例如 OpenAI 的 GPT-3 或 GPT-4),其按 tokens 计费。假设每个 API 请求的费用是基于输入和输出 tokens 数量的。
例子 1:简单的输入输出
假设你发出以下请求:
- 输入文本:
Hello, how are you?
- 输出文本:
I'm good, thank you! How about you?
Token 计算
-
输入文本(
Hello, how are you?
):大约 5 tokens- "Hello"、"how"、"are"、"you"、"?" 各占一个 token
-
输出文本(
I'm good, thank you! How about you?
):大约 9 tokens- "I'm"、"good"、"thank"、"you"、"!"、"How"、"about"、"you"、"?" 各占一个 token
因此,这个请求会消耗大约 14 tokens。
费用
假设 OpenAI GPT-3 的费用为每 1000 tokens 0.02 美元,那么此请求的费用就是:
141000×0.02=0.00028 美元\frac{14}{1000} \times 0.02 = 0.00028 , \text{美元}
例子 2:更长的文本
如果你提交一个较长的文本:
- 输入文本:
The quick brown fox jumps over the lazy dog. This is a pangram.
- 输出文本:
Indeed, this sentence contains all the letters of the alphabet.
Token 计算
-
输入文本:大约 12 tokens
- "The"、"quick"、"brown"、"fox"、"jumps"、"over"、"the"、"lazy"、"dog"、"This"、"is"、"a"、"pangram" 各占一个 token
-
输出文本:大约 10 tokens
- "Indeed"、"this"、"sentence"、"contains"、"all"、"the"、"letters"、"of"、"the"、"alphabet" 各占一个 token
因此,这个请求会消耗大约 22 tokens。
费用
同样按照每 1000 tokens 0.02 美元的费率计算:
221000×0.02=0.00044 美元\frac{22}{1000} \times 0.02 = 0.00044 , \text{美元}
2. API 调用收费的例子
假设你使用某个 API 进行语言处理,每次 API 调用的费用固定,不管输入和输出的长度。
例子 3:固定费用的 API
- 费用:每次调用 0.01 美元,无论请求的内容是多少 tokens。
- 你调用 API 并提交不同长度的输入文本。
请求 1:短文本
- 输入:
Hello, how are you?
- 输出:
I'm good!
尽管这两个文本的 token 数量比较少(大约 5 + 6 tokens),但是因为 API 按照调用次数收费,所以你只需支付 0.01 美元。
请求 2:长文本
- 输入:
The quick brown fox jumps over the lazy dog. This is a pangram.
- 输出:
Indeed, this sentence contains all the letters of the alphabet.
即使文本非常长,总共使用了大约 22 tokens,你仍然需要支付 0.01 美元,因为 API 费用是按每次调用收取的,而不考虑具体的 tokens 数量。
3. 混合模型收费
有些服务可能采用混合模式,既按 API 调用次数收费,又根据 tokens 数量加收费用。例如,一个基本 API 调用可能是免费的,但当请求的 tokens 数量超过一定阈值时,会额外收费。
例子 4:混合收费模式
- 基础费用:每次调用 0.01 美元(基础调用费用)。
- Tokens 费用:每 1000 tokens 收费 0.02 美元。
请求 1:短文本
- 输入:
Hello, how are you?
- 输出:
I'm good, thank you! How about you?
此请求大约消耗了 14 tokens,费用为:
0.01+(141000×0.02)=0.01+0.00028=0.01028 美元0.01 + \left( \frac{14}{1000} \times 0.02 \right) = 0.01 + 0.00028 = 0.01028 , \text{美元}
请求 2:长文本
- 输入:
The quick brown fox jumps over the lazy dog. This is a pangram.
- 输出:
Indeed, this sentence contains all the letters of the alphabet.
此请求大约消耗了 22 tokens,费用为:
0.01+(221000×0.02)=0.01+0.00044=0.01044 美元0.01 + \left( \frac{22}{1000} \times 0.02 \right) = 0.01 + 0.00044 = 0.01044 , \text{美元}
总结:
- 混合收费模式:可能有基础的 API 调用费用,再加上根据 tokens 数量收取的额外费用。
- Tokens 是语言模型处理文本的基本单位,模型按 tokens 数量收费是因为处理更多的 tokens 需要更多的计算资源。
- API 调用收费通常按每次请求收费,不考虑具体处理的 tokens 数量或生成的内容长度。
通过这些例子,你可以更清晰地理解 tokens 计费 和 API 调用收费 之间的区别,以及它们是如何影响最终费用的。