ChatGPT 的 Tokens 是怎么计算的?

2023-04-14 09:18:21 +08:00
 dier

我的账号因为没有试用金,所以不能测试。希望有用地的帮忙解答一下

我想了解一下这个 tokens 的计算是统计的我提问时提交内容折算成 tokens 还是 ChatGPT 生成的内容折算成 tokens 。

我开始以为是根据我提问的内容计算 tokens ,但是今天一想感觉好像不太对?因为大部分情况下提问的内容是很少的,那如果只是提问、对话,1000 个 tokens 岂不是可以提问好多内容?

如果是按回复的内容算 tokens ,那它讲废话也是挺合理的了,毕竟说得越多,收费越贵🐶

我搜了一下,没有比较明确的说明。另外,还看到说好像上下文也会每次算在提交的 tokens 中。

4330 次点击
所在节点    OpenAI
14 条回复
airyland
2023-04-14 09:22:37 +08:00
input + output
dier
2023-04-14 09:24:01 +08:00
@airyland 那上下文的内容也会反复计算在内吗
vbe
2023-04-14 09:26:03 +08:00
@dier 不会
zapper
2023-04-14 09:28:14 +08:00
https://platform.openai.com/tokenizer
1,000 tokens is about 750 (英文) words

[上文] + 输入+输出,GPT3.5 最大就是 4096 tokens ,这也解释了为什么他说着说着就会忘记前面的事情
cs3230524
2023-04-14 09:43:24 +08:00
@dier 会啊。
第一轮:Q1A1
第二轮:Q1A1+Q2A2
第三轮:Q1A1+Q2A3+Q3A3
......

最长的 token 有限制,超过了你要自己选择携带的会话请求。相关的 token 拆分算法官方文档已经写得很清楚了。
abelyao
2023-04-14 09:48:20 +08:00
#5 @cs3230524 说的才是正常的,上下文是算字数的
hahastudio
2023-04-14 09:52:28 +08:00
@zapper 不是的吧,如果你 API 前面给的 context 太长,它最后回复的就很短,context + response = 4096 token
Yeen
2023-04-14 09:56:11 +08:00
官方有文档,直接给官方结论(英文文本):正常文本统计来说,单词数大约相当于 token 数的 75%。
也就是 1000 个 token 大约有效单词是 750 个。
pkoukk
2023-04-14 10:03:04 +08:00
官方提供的 token 序列化算法,可以计算实际消耗 token 。
官方提供了 python 和 c#两个语言的版本,其他语言的实现可以在 github 上找。
https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb

你说的上下文问题和 token 没关系,属于你自己的 api 封装策略。
在 chat 这个模式下,你向 API 发起的请求模式是 [Q1 ,A1 ,Q2 ,A2 ,Q3 ,A3 ,Q4],等待 API 返回 A4
这种模式带有越多的之前的 QA ,上下文效果越好,但是单次请求消耗的 token 越多
如果你想少用点 token ,可以对之前的 QA 做出裁剪,比如只发起[Q2 ,A2 ,Q3 ,A3 ,Q4]
我自己写来玩的 cli 实现了根据 token 限制动态裁剪对话,你可以参考
https://github.com/pkoukk/chatgpt-cli/blob/main/gpt/conversion.go
BrandonNg
2023-04-14 10:16:08 +08:00
evil0harry
2023-04-14 10:33:10 +08:00
go 版本可以使用这个 https://github.com/pkoukk/tiktoken-go
rwecho
2023-04-14 10:45:24 +08:00
如果是 stream 模式, 那它的回复只算最终的吧, stream 的中间文本会产生吗?
xqdoo00o
2023-04-14 12:22:51 +08:00
@rwecho stream 模式,一条 data 算一个 token
Biluesgakki
2023-04-14 13:11:45 +08:00
反正问一个问题大概在几百到几千不等 ,不要带太多的上下文 ,token 会吃得很快

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/932406

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX