diff --git a/controller/relay-utils.go b/controller/relay-utils.go index 733be4d..16bf82c 100644 --- a/controller/relay-utils.go +++ b/controller/relay-utils.go @@ -160,10 +160,27 @@ func countTokenMessages(messages []Message, model string) (int, error) { } else { for _, m := range arrayContent { if m.Type == "image_url" { - imageTokenNum, err := getImageToken(&m.ImageUrl) + 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 { + imageUrlMap["detail"] = "auto" + } + imageUrl := MessageImageUrl{ + Url: imageUrlMap["url"].(string), + Detail: imageUrlMap["detail"].(string), + } + imageTokenNum, err = getImageToken(&imageUrl) + } if err != nil { return 0, err } + tokenNum += imageTokenNum log.Printf("image token num: %d", imageTokenNum) } else { diff --git a/controller/relay.go b/controller/relay.go index 0b22c99..a535a96 100644 --- a/controller/relay.go +++ b/controller/relay.go @@ -19,9 +19,9 @@ type Message struct { } type MediaMessage struct { - Type string `json:"type"` - Text string `json:"text"` - ImageUrl MessageImageUrl `json:"image_url,omitempty"` + Type string `json:"type"` + Text string `json:"text"` + ImageUrl any `json:"image_url,omitempty"` } type MessageImageUrl struct {