From c11824f5aaaaa8982e371de3df1b774c5bceb42f Mon Sep 17 00:00:00 2001 From: Sakurasan <26715255+Sakurasan@users.noreply.github.com> Date: Fri, 19 Jul 2024 12:10:49 +0800 Subject: [PATCH] support gpt-4o-mini --- pkg/tokenizer/tokenizer.go | 2 ++ router/chat.go | 51 ++++++++++++++++++-------------------- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/pkg/tokenizer/tokenizer.go b/pkg/tokenizer/tokenizer.go index cd29bf0..3f8be85 100644 --- a/pkg/tokenizer/tokenizer.go +++ b/pkg/tokenizer/tokenizer.go @@ -97,6 +97,8 @@ func Cost(model string, promptCount, completionCount int) float64 { cost = 0.01*float64(prompt/1000) + 0.03*float64(completion/1000) case "gpt-4o", "gpt-4o-2024-05-13": cost = 0.005*float64(prompt/1000) + 0.015*float64(completion/1000) + case "gpt-4o-mini", "gpt-4o-mini-2024-07-18": + cost = 0.00015*float64(prompt/1000) + 0.0006*float64(completion/1000) case "whisper-1": // 0.006$/min cost = 0.006 * float64(prompt+completion) / 60 diff --git a/router/chat.go b/router/chat.go index c11cb27..509f6d9 100644 --- a/router/chat.go +++ b/router/chat.go @@ -1,15 +1,12 @@ package router import ( - "bytes" - "encoding/json" "net/http" "strings" "opencatd-open/pkg/claude" "opencatd-open/pkg/google" "opencatd-open/pkg/openai" - "opencatd-open/pkg/search" "github.com/gin-gonic/gin" ) @@ -21,31 +18,31 @@ func ChatHandler(c *gin.Context) { return } - if chatreq.Messages[len(chatreq.Messages)-1].Role == "user" { - result, err := search.BingSearch(search.SearchParams{Query: string(chatreq.Messages[len(chatreq.Messages)-1].Content)}) - if err == nil { - var msgs []openai.ChatCompletionMessage - for i, m := range chatreq.Messages { - var buf bytes.Buffer - buf.WriteString("根据我提问的语言回答我,我将提供一些从搜索引擎获取的信息(以websearch:开头)。你自行判断是否使用搜索引擎获取的内容。不要原封不动照抄,根据你自己的知识库提炼信息之后回答我\n\n") - if m.Role == "system" { - buf.Write(m.Content) - msgs = append(msgs, openai.ChatCompletionMessage{Role: m.Role, Content: buf.Bytes()}) - } else { - msgs = append(msgs, openai.ChatCompletionMessage{Role: m.Role, Content: buf.Bytes()}) - } - if i == len(chatreq.Messages)-1 { - m.Content = append(m.Content, json.RawMessage("\n\nwebsearch:")...) - m.Content = append(m.Content, json.RawMessage(result.(string))...) - msgs = append(msgs, openai.ChatCompletionMessage{Role: m.Role, Content: m.Content}) - } else { - msgs = append(msgs, openai.ChatCompletionMessage{Role: m.Role, Content: m.Content}) - } + // if chatreq.Messages[len(chatreq.Messages)-1].Role == "user" { + // result, err := search.BingSearch(search.SearchParams{Query: string(chatreq.Messages[len(chatreq.Messages)-1].Content)}) + // if err == nil { + // var msgs []openai.ChatCompletionMessage + // for i, m := range chatreq.Messages { + // var buf bytes.Buffer + // buf.WriteString("根据我提问的语言回答我,我将提供一些从搜索引擎获取的信息(以websearch:开头)。你自行判断是否使用搜索引擎获取的内容。不要原封不动照抄,根据你自己的知识库提炼信息之后回答我\n\n") + // if m.Role == "system" { + // buf.Write(m.Content) + // msgs = append(msgs, openai.ChatCompletionMessage{Role: m.Role, Content: buf.Bytes()}) + // } else { + // msgs = append(msgs, openai.ChatCompletionMessage{Role: m.Role, Content: buf.Bytes()}) + // } + // if i == len(chatreq.Messages)-1 { + // m.Content = append(m.Content, json.RawMessage("\n\nwebsearch:")...) + // m.Content = append(m.Content, json.RawMessage(result.(string))...) + // msgs = append(msgs, openai.ChatCompletionMessage{Role: m.Role, Content: m.Content}) + // } else { + // msgs = append(msgs, openai.ChatCompletionMessage{Role: m.Role, Content: m.Content}) + // } - } - chatreq.Messages = msgs - } - } + // } + // chatreq.Messages = msgs + // } + // } if strings.HasPrefix(chatreq.Model, "gpt") { openai.ChatProxy(c, &chatreq)