From b3f1da44ddf49a1b3a90bfc70cf4934663ad1379 Mon Sep 17 00:00:00 2001 From: CaIon <1808837298@qq.com> Date: Mon, 18 Dec 2023 23:44:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dvision=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/relay-utils.go | 19 ++++++++++++++++++- controller/relay.go | 6 +++--- 2 files changed, 21 insertions(+), 4 deletions(-) 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 {