Deeptrain-Community / chatnio

🚀 Next Generation AI One-Stop Internationalization Solution. 🚀 下一代 AI 一站式 B/C 端解决方案,支持 OpenAI,Midjourney,Claude,讯飞星火,Stable Diffusion,DALL·E,ChatGLM,通义千问,腾讯混元,360 智脑,百川 AI,火山方舟,新必应,Gemini,Moonshot 等模型,支持对话分享,自定义预设,云端同步,模型市场,支持弹性计费和订阅计划模式,支持图片解析,支持联网搜索,支持模型缓存,丰富美观的后台管理与仪表盘数据统计。
https://chatnio.com
Apache License 2.0
2.71k stars 447 forks source link

GPT4 turbo 128k实际价格与文档不符 #142

Closed chbkqx closed 3 months ago

chbkqx commented 3 months ago

Screenshot_2024-03-20-14-42-28-674_mark via 这是一个问题,实际计算0.13点数 根据openai token计算器,本段话连问题带答案合计174token,0.174*0.3(chatnio文档中,4t128的输出价格)=0.0522,因此理论上应该收费0.05而不是0.13。 Screenshot_2024-03-20-15-19-24-217_mark via 作为对比,上下行都是0.2的千问plus,回答同样问题,长度多了一半,价格是0.03。

这个问题最有可能的原因是同步上游价格或者文档更新不即时,那么同步上游价格时,是否应该把文档价格也同步了呢?

zmh-program commented 3 months ago

这是一个问题,实际计算0.13点数 根据openai token计算器,本段话连问题带答案合计174token,0.174*0.3(chatnio文档中,4t128的输出价格)=0.0522,因此理论上应该收费0.05而不是0.13。

直接将 token 代入计算是错误的。gpt-4 模型需要加 weight, 即 3,你把两个 weight 不一样的模型系当然会计算错误。 这么算出来,得出约 0.15 点数,因 input tokens 计算你也视为了 output tokens,因此结果为 0.13 应该是差不多的,所以从这个计费来说 没有问题。

zmh-program commented 3 months ago

https://github.com/Deeptrain-Community/chatnio/blob/main/utils/tokenizer.go#L14-L77

zmh-program commented 3 months ago

参考:https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb Tiktoken Go: https://github.com/pkoukk/tiktoken-go

chbkqx commented 3 months ago

既然有这样的权重规则,那么我建议将相关说明补充到文档里,或者直接提供一项功能帮助用户判断发送某条消息会消耗多少个点数。 我知道这可能会有一些额外的工作量,但这确实有利于收费的透明化,增强用户的信任感,现在这个不翻源码不知道的特性确实会给一些用户带来困扰,谢谢。

zmh-program commented 3 months ago

首先感谢你的提议 docs之前也在常见问题中写过link 我找有时间也会完善 同时我认为提供透明度 现在没有单次使用日志 也是个需要关注的大问题 #77 目前我在写这个请求日志和统计的功能。

zmh-program commented 3 months ago

image

zmh-program commented 3 months ago

OK

chbkqx commented 3 months ago

关键是现在这个权重机制在应用内的不透明性问题。就是说,现在这个情况导致用户不能通过比较应用内写的几个点输入几个点输出来预估和比较模型的价格。因此我认为直接把应用内的模型价格变成乘上权重的模型价格,会更方便用户手算和预估价格,不过公告可能会复杂一些。

zmh-program commented 3 months ago

这是后端职能,scope不在前端

zmh-program commented 3 months ago

对于不入门tiktoken的用户来说,普遍不会每次都估算 token,只会关注到底消耗多少点。

对于知道这些的人来说,你不必和他们提如何计算token这种再常见不过的事情了。

chbkqx commented 3 months ago

我并不这么认为,有用gpt需求≠对tiktoken以及token划分感兴趣。即使对于普通用户,在试图讨论一些复杂的话题(例如多轮文档问答)时,也需要掂量掂量自己这个问题的重量。 更重要的是,对于不懂tiktoken的用户来说,如果他们有一天发现自己实际消耗得比token直接算出来得要多不少,可能引发对平台不信任以及困惑(比如这个issure)。 还有,关键在于,平台应该提供一种渠道,使普通用户在没有理解tiktoken的条件下,仍然能通过最简单的数字比大小来判断模型之间的价格差异,以此作为基准判断自己的问题需要调用哪个级别的模型。 "技术应该打破壁垒,而不是制造壁垒",我仍然认为,即使是不懂tiktoken的普通用户,正确的估算token,比较模型,判断问题价值依然是非常重要的。

zmh-program commented 3 months ago

那还不如直接用订阅

zmh-program commented 3 months ago

按次计费,不需要懂这些都行