ChatGPT 的 Tokens 是怎么计算的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dier
V2EX    OpenAI

ChatGPT 的 Tokens 是怎么计算的?

  •  
  •   dier 2023-04-14 09:18:21 +08:00 5568 次点击
    这是一个创建于 989 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    15 条回复    2024-09-02 09:41:20 +08:00
    airyland
        1
    airyland  
       2023-04-14 09:22:37 +08:00   1
    input + output
    dier
        2
    dier  
    OP
       2023-04-14 09:24:01 +08:00
    @airyland 那上下文的内容也会反复计算在内吗
    vbe
        3
    vbe  
       2023-04-14 09:26:03 +08:00   1
    @dier 不会
    zapper
        4
    zapper  
       2023-04-14 09:28:14 +08:00   1
    https://platform.openai.com/tokenizer
    1,000 tokens is about 750 (英文) words

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

    最长的 token 有限制,超过了你要自己选择携带的会话请求。相关的 token 拆分算法官方文档已经写得很清楚了。
    abelyao
        6
    abelyao  
       2023-04-14 09:48:20 +08:00
    #5 @cs3230524 说的才是正常的,上下文是算字数的
    hahastudio
        7
    hahastudio  
       2023-04-14 09:52:28 +08:00
    @zapper 不是的吧,如果你 API 前面给的 context 太长,它最后回复的就很短,context + respOnse= 4096 token
    Yeen
        8
    Yeen  
       2023-04-14 09:56:11 +08:00
    官方有文档,直接给官方结论(英文文本):正常文本统计来说,单词数大约相当于 token 数的 75%。
    也就是 1000 个 token 大约有效单词是 750 个。
    pkoukk
        9
    pkoukk  
       2023-04-14 10:03:04 +08:00   2
    官方提供的 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
        10
    BrandonNg  
       2023-04-14 10:16:08 +08:00
    evil0harry
        11
    evil0harry  
       2023-04-14 10:33:10 +08:00
    go 版本可以使用这个 https://github.com/pkoukk/tiktoken-go
    rwecho
        12
    rwecho  
       2023-04-14 10:45:24 +08:00
    如果是 stream 模式, 那它的回复只算最终的吧, stream 的中间文本会产生吗?
    xqdoo00o
        13
    xqdoo00o  
       2023-04-14 12:22:51 +08:00
    @rwecho stream 模式,一条 data 算一个 token
    Biluesgakki
        14
    Biluesgakki  
       2023-04-14 13:11:45 +08:00   1
    反正问一个问题大概在几百到几千不等 ,不要带太多的上下文 ,token 会吃得很快
    waliwaliCrazy
        15
    waliwaliCrazy  
       2024-09-02 09:41:20 +08:00
    vue 的版本有吗
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2626 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 09:42 PVG 17:42 LAX 01:42 JFK 04:42
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86