xiaoxx970 / chatgpt-in-terminal

Use ChatGPT in terminal
MIT License
202 stars 27 forks source link

Tokens统计 #13

Closed Ace-Radom closed 1 year ago

Ace-Radom commented 1 year ago

这不一定是一个错误 更多是一个疑问

在调用 /tokens 命令后一直会输出两个值 total tokenscurrent tokens 但根据重构的代码看 current tokens 就已经是上下文的总tokens数量 那么 total tokens 代表的是什么值呢 在源码中 (chat.py: 165-166) 可以看到每一次消息回复后都会重新统计一次上下文总tokens数量 但又将这个数量直接加到 total_tokens 里:

self.current_tokens = count_token(self.messages)
self.total_tokens += self.current_tokens

这样统计出的 total_tokens 是否是在重复统计上下文长度?不知道这样计算出来的总tokens是不是错的

xiaoxx970 commented 1 year ago

其实是先有total_tokens后来才有current_tokens的,total_tokens统计的是这个会话一共用了多少tokens,这个是跟计费相关的,因为API按token数收费,所以要累加显示。而current_tokens就是本次对话的token长度,用来看是否会超过4096上限的。 情况就是这么个情况,所以在命名的时候我也迷糊了一会,你也可以想想有没有更直观的命名方法。

Ace-Radom commented 1 year ago

原来如此 那么我个人倒是觉得 current tokens 保持不变 然后 total tokens 改为 total tokens cost 可能更为直观一些 也就是总共花费了的tokens量 当然也就是一个建议了 加上一个动词应该给人看的更清楚一点

xiaoxx970 commented 1 year ago

是的,那我改成 tokens spent了,表述花费了的token数量