|
|
@@ -145,47 +145,48 @@ func countTokenMessages(messages []Message, model string) (int, error) {
|
|
|
for _, message := range messages {
|
|
|
tokenNum += tokensPerMessage
|
|
|
tokenNum += getTokenNum(tokenEncoder, message.Role)
|
|
|
- var arrayContent []MediaMessage
|
|
|
- if err := json.Unmarshal(message.Content, &arrayContent); err != nil {
|
|
|
-
|
|
|
- var stringContent string
|
|
|
- if err := json.Unmarshal(message.Content, &stringContent); err != nil {
|
|
|
- return 0, err
|
|
|
- } else {
|
|
|
- tokenNum += getTokenNum(tokenEncoder, stringContent)
|
|
|
- if message.Name != nil {
|
|
|
- tokenNum += tokensPerName
|
|
|
- tokenNum += getTokenNum(tokenEncoder, *message.Name)
|
|
|
+ if len(message.Content) > 0 {
|
|
|
+ var arrayContent []MediaMessage
|
|
|
+ if err := json.Unmarshal(message.Content, &arrayContent); err != nil {
|
|
|
+ var stringContent string
|
|
|
+ if err := json.Unmarshal(message.Content, &stringContent); err != nil {
|
|
|
+ return 0, err
|
|
|
+ } else {
|
|
|
+ tokenNum += getTokenNum(tokenEncoder, stringContent)
|
|
|
+ if message.Name != nil {
|
|
|
+ tokenNum += tokensPerName
|
|
|
+ tokenNum += getTokenNum(tokenEncoder, *message.Name)
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- } else {
|
|
|
- for _, m := range arrayContent {
|
|
|
- if m.Type == "image_url" {
|
|
|
- var imageTokenNum int
|
|
|
- if str, ok := m.ImageUrl.(string); ok {
|
|
|
- imageTokenNum, err = getImageToken(&MessageImageUrl{Url: str, Detail: "auto"})
|
|
|
- } else {
|
|
|
- imageUrlMap := m.ImageUrl.(map[string]interface{})
|
|
|
- detail, ok := imageUrlMap["detail"]
|
|
|
- if ok {
|
|
|
- imageUrlMap["detail"] = detail.(string)
|
|
|
+ } else {
|
|
|
+ for _, m := range arrayContent {
|
|
|
+ if m.Type == "image_url" {
|
|
|
+ var imageTokenNum int
|
|
|
+ if str, ok := m.ImageUrl.(string); ok {
|
|
|
+ imageTokenNum, err = getImageToken(&MessageImageUrl{Url: str, Detail: "auto"})
|
|
|
} else {
|
|
|
- imageUrlMap["detail"] = "auto"
|
|
|
+ imageUrlMap := m.ImageUrl.(map[string]interface{})
|
|
|
+ detail, ok := imageUrlMap["detail"]
|
|
|
+ if ok {
|
|
|
+ imageUrlMap["detail"] = detail.(string)
|
|
|
+ } else {
|
|
|
+ imageUrlMap["detail"] = "auto"
|
|
|
+ }
|
|
|
+ imageUrl := MessageImageUrl{
|
|
|
+ Url: imageUrlMap["url"].(string),
|
|
|
+ Detail: imageUrlMap["detail"].(string),
|
|
|
+ }
|
|
|
+ imageTokenNum, err = getImageToken(&imageUrl)
|
|
|
}
|
|
|
- imageUrl := MessageImageUrl{
|
|
|
- Url: imageUrlMap["url"].(string),
|
|
|
- Detail: imageUrlMap["detail"].(string),
|
|
|
+ if err != nil {
|
|
|
+ return 0, err
|
|
|
}
|
|
|
- imageTokenNum, err = getImageToken(&imageUrl)
|
|
|
- }
|
|
|
- if err != nil {
|
|
|
- return 0, err
|
|
|
- }
|
|
|
|
|
|
- tokenNum += imageTokenNum
|
|
|
- log.Printf("image token num: %d", imageTokenNum)
|
|
|
- } else {
|
|
|
- tokenNum += getTokenNum(tokenEncoder, m.Text)
|
|
|
+ tokenNum += imageTokenNum
|
|
|
+ log.Printf("image token num: %d", imageTokenNum)
|
|
|
+ } else {
|
|
|
+ tokenNum += getTokenNum(tokenEncoder, m.Text)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|