Closed ZeroDeng01 closed 1 year ago
你好,我这边采用如下方法计算的token误差和Openai 官方计算工具上计算的结果相差很大,不知你您那边遇见过没有。gpt3.5。使用如下demo结果方法进行的计算
func NumTokensFromMessages(messages []openai.ChatCompletionMessage, model string) (num_tokens int) { tkm, err := tiktoken.EncodingForModel(model) if err != nil { err = fmt.Errorf("EncodingForModel: %v", err) fmt.Println(err) return } var tokens_per_message int var tokens_per_name int if model == "gpt-3.5-turbo-0301" || model == "gpt-3.5-turbo" { tokens_per_message = 4 tokens_per_name = -1 } else if model == "gpt-4-0314" || model == "gpt-4" { tokens_per_message = 3 tokens_per_name = 1 } else { fmt.Println("Warning: model not found. Using cl100k_base encoding.") tokens_per_message = 3 tokens_per_name = 1 } for _, message := range messages { num_tokens += tokens_per_message num_tokens += len(tkm.Encode(message.Content, nil, nil)) num_tokens += len(tkm.Encode(message.Role, nil, nil)) num_tokens += len(tkm.Encode(message.Name,nil,nil)) if message.Name != "" { num_tokens += tokens_per_name } } num_tokens += 3 return num_tokens }
这个页面上的tokenizer是针对gpt3版本的,也就是p50k_base这个Encoding 这个示例代码是gpt-3.5以上版本使用的,也就是cl100k_base,两个encoding不同,计算结果也不相同
你好,我这边采用如下方法计算的token误差和Openai 官方计算工具上计算的结果相差很大,不知你您那边遇见过没有。gpt3.5。使用如下demo结果方法进行的计算