a / util /util.go
yetey's picture
Upload 45 files
5757554 verified
package util
import (
"github.com/pkoukk/tiktoken-go"
"log/slog"
"math/rand"
"time"
)
func RandomLanguage() string {
// 初始化随机数生成器
rand.Seed(time.Now().UnixNano())
// 语言列表
languages := []string{"af", "am", "ar-sa", "as", "az-Latn", "be", "bg", "bn-BD", "bn-IN", "bs", "ca", "ca-ES-valencia", "cs", "cy", "da", "de", "de-de", "el", "en-GB", "en-US", "es", "es-ES", "es-US", "es-MX", "et", "eu", "fa", "fi", "fil-Latn", "fr", "fr-FR", "fr-CA", "ga", "gd-Latn", "gl", "gu", "ha-Latn", "he", "hi", "hr", "hu", "hy", "id", "ig-Latn", "is", "it", "it-it", "ja", "ka", "kk", "km", "kn", "ko", "kok", "ku-Arab", "ky-Cyrl", "lb", "lt", "lv", "mi-Latn", "mk", "ml", "mn-Cyrl", "mr", "ms", "mt", "nb", "ne", "nl", "nl-BE", "nn", "nso", "or", "pa", "pa-Arab", "pl", "prs-Arab", "pt-BR", "pt-PT", "qut-Latn", "quz", "ro", "ru", "rw", "sd-Arab", "si", "sk", "sl", "sq", "sr-Cyrl-BA", "sr-Cyrl-RS", "sr-Latn-RS", "sv", "sw", "ta", "te", "tg-Cyrl", "th", "ti", "tk-Latn", "tn", "tr", "tt-Cyrl", "ug-Arab", "uk", "ur", "uz-Latn", "vi", "wo", "xh", "yo-Latn", "zh-Hans", "zh-Hant", "zu"}
// 随机选择一个语言
randomIndex := rand.Intn(len(languages))
return languages[randomIndex]
}
func RandomHexadecimalString() string {
rand.Seed(time.Now().UnixNano())
const charset = "0123456789abcdef"
const length = 16 // The length of the string you want to generate
b := make([]byte, length)
for i := range b {
b[i] = charset[rand.Intn(len(charset))]
}
return string(b)
}
func CountToken(input string) int {
encoding := "gpt-3.5-turbo"
tkm, err := tiktoken.EncodingForModel(encoding)
if err != nil {
slog.Warn("tiktoken.EncodingForModel error:", err)
return 0
}
token := tkm.Encode(input, nil, nil)
return len(token)
}
func RandomIntStr(num int) string {
rand.Seed(time.Now().UnixNano())
const charset = "0123456789"
var length = 16 // The length of the string you want to generate
if num > 0 {
length = num
}
b := make([]byte, length)
for i := range b {
b[i] = charset[rand.Intn(len(charset))]
}
return string(b)
}