forestwanglin / openai-java

OpenAi GPT API for Java. Including all API from OpenAI except deprecated. It especially includes stream client and jtokkit with function calculation. Including Baidu AI.
MIT License
52 stars 9 forks source link

请问作者在计算tokens时进行的格式化以及其他操作的依据是什么? #9

Closed jinlong7790 closed 4 months ago

jinlong7790 commented 4 months ago

https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb这里只提到了普通的对话请求如何计算tokens,其余的tools以及function等请求计算tokens的依据是什么呢?

forestwanglin commented 4 months ago

我也在OpenAI官方论坛上提过你这个问题,但是没有人回答。官方只是给了一个参考示例(就是你上面这个链接),其他部分的token计算规则一直没官方文档,我认为是因为两点: 1、模型发展太快,API更新也很快,比如之前不支持function,后来支持了function,之后有改了api,修改了字段,所以他们也不好给出一个完全正确的文档; 2、每个模型之前的算法有区别,比如23年3月的gpt-3.5和后来的3.5以及4.0不一样。

本库SDK对应的计算规则就是苦哈哈的参考了其他sdk的实现以及自己不断的测试和调整得到的结果,当然到现在依然还有一些case是不通过的,我这边也在不断地完善。也是期待OpenAI能给一个完备的计算规则文档(短期内应该不会有,期待OpenAI能打我的脸)。