diff --git a/controller/relay.go b/controller/relay.go index 083db7b..28e61bb 100644 --- a/controller/relay.go +++ b/controller/relay.go @@ -10,7 +10,6 @@ import ( "fmt" "github.com/gin-gonic/gin" "io" - "log" "math/rand" "net/http" "net/http/httputil" @@ -32,11 +31,11 @@ func Images(c *gin.Context) { serverInfo, err := service.CheckBlanceForImages(key, modelStr, imagesRequest.N) if err != nil { c.AbortWithStatusJSON(403, gin.H{"error": err.Error()}) - log.Printf("请求出错 KEY: %v Model: %v ERROR: %v", key, modelStr, err) + fmt.Printf("请求出错 KEY: %v Model: %v ERROR: %v", key, modelStr, err) return } - log.Printf("请求的KEY: %v Model: %v", key, modelStr) + fmt.Printf("请求的KEY: %v Model: %v", key, modelStr) remote, err := url.Parse(serverInfo.ServerAddress) if err != nil { @@ -47,7 +46,7 @@ func Images(c *gin.Context) { proxy := httputil.NewSingleHostReverseProxy(remote) newReqBody, err := json.Marshal(imagesRequest) if err != nil { - log.Printf("http request err: %v", err) + fmt.Printf("http request err: %v", err) c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } @@ -74,7 +73,7 @@ func Images(c *gin.Context) { req.Body = io.NopCloser(bytes.NewReader(newReqBody)) } sss, err := json.Marshal(imagesRequest) - log.Printf("开始处理返回逻辑 %d", string(sss)) + fmt.Printf("开始处理返回逻辑 %d", string(sss)) proxy.ModifyResponse = func(resp *http.Response) error { if resp.StatusCode != http.StatusOK { @@ -89,16 +88,16 @@ func Images(c *gin.Context) { var imagesResponse model.ImagesResponse body, err := io.ReadAll(resp.Body) if err != nil { - log.Printf("读取返回数据出错: %v", err) + fmt.Printf("读取返回数据出错: %v", err) return err } err = json.Unmarshal(body, &imagesResponse) if err != nil { - log.Printf("json解析数据出错: %v", err) + fmt.Printf("json解析数据出错: %v", err) return err } resp.Body = io.NopCloser(bytes.NewReader(body)) - log.Printf("image size: %v", len(imagesResponse.Data)) + fmt.Printf("image size: %v", len(imagesResponse.Data)) timestamp := time.Now().Unix() timestampID := "img-" + fmt.Sprintf("%d", timestamp) //消费余额 @@ -127,11 +126,11 @@ func Edit(c *gin.Context) { serverInfo, err := service.CheckBlance(key, chatRequest.Model, chatRequest.MaxTokens) if err != nil { c.AbortWithStatusJSON(403, gin.H{"error": err.Error()}) - log.Printf("请求出错 KEY: %v Model: %v ERROR: %v", key, chatRequest.Model, err) + fmt.Printf("请求出错 KEY: %v Model: %v ERROR: %v", key, chatRequest.Model, err) return } - log.Printf("请求的KEY: %v Model: %v", key, chatRequest.Model) + fmt.Printf("请求的KEY: %v Model: %v", key, chatRequest.Model) remote, err := url.Parse(serverInfo.ServerAddress) if err != nil { @@ -142,7 +141,7 @@ func Edit(c *gin.Context) { proxy := httputil.NewSingleHostReverseProxy(remote) newReqBody, err := json.Marshal(chatRequest) if err != nil { - log.Printf("http request err: %v", err) + fmt.Printf("http request err: %v", err) c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } @@ -169,26 +168,26 @@ func Edit(c *gin.Context) { req.Body = io.NopCloser(bytes.NewReader(newReqBody)) } sss, err := json.Marshal(chatRequest) - log.Printf("开始处理返回逻辑 %d", string(sss)) + fmt.Printf("开始处理返回逻辑 %d", string(sss)) proxy.ModifyResponse = func(resp *http.Response) error { resp.Header.Set("Openai-Organization", "api2gpt") var chatResponse model.ChatResponse body, err := io.ReadAll(resp.Body) if err != nil { - log.Printf("读取返回数据出错: %v", err) + fmt.Printf("读取返回数据出错: %v", err) return err } err = json.Unmarshal(body, &chatResponse) if err != nil { - log.Printf("json解析数据出错: %v", err) + fmt.Printf("json解析数据出错: %v", err) return err } promptTokens = chatResponse.Usage.PromptTokens complateTokens = chatResponse.Usage.CompletionTokens totalTokens = chatResponse.Usage.TotalTokens resp.Body = io.NopCloser(bytes.NewReader(body)) - log.Printf("prompt_tokens: %v complate_tokens: %v total_tokens: %v", promptTokens, complateTokens, totalTokens) + fmt.Printf("prompt_tokens: %v complate_tokens: %v total_tokens: %v", promptTokens, complateTokens, totalTokens) timestamp := time.Now().Unix() timestampID := "edit-" + fmt.Sprintf("%d", timestamp) //消费余额 @@ -216,11 +215,11 @@ func Embeddings(c *gin.Context) { serverInfo, err := service.CheckBlance(key, chatRequest.Model, chatRequest.MaxTokens) if err != nil { c.AbortWithStatusJSON(403, gin.H{"error": err.Error()}) - log.Printf("请求出错 KEY: %v Model: %v ERROR: %v", key, chatRequest.Model, err) + fmt.Printf("请求出错 KEY: %v Model: %v ERROR: %v", key, chatRequest.Model, err) return } - log.Printf("请求的KEY: %v Model: %v", key, chatRequest.Model) + fmt.Printf("请求的KEY: %v Model: %v", key, chatRequest.Model) remote, err := url.Parse(serverInfo.ServerAddress) if err != nil { @@ -231,7 +230,7 @@ func Embeddings(c *gin.Context) { proxy := httputil.NewSingleHostReverseProxy(remote) newReqBody, err := json.Marshal(chatRequest) if err != nil { - log.Printf("http request err: %v", err) + fmt.Printf("http request err: %v", err) c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } @@ -258,25 +257,25 @@ func Embeddings(c *gin.Context) { req.Body = io.NopCloser(bytes.NewReader(newReqBody)) } sss, err := json.Marshal(chatRequest) - log.Printf("开始处理返回逻辑 %d", string(sss)) + fmt.Printf("开始处理返回逻辑 %d", string(sss)) proxy.ModifyResponse = func(resp *http.Response) error { resp.Header.Set("Openai-Organization", "api2gpt") var chatResponse model.ChatResponse body, err := io.ReadAll(resp.Body) if err != nil { - log.Printf("读取返回数据出错: %v", err) + fmt.Printf("读取返回数据出错: %v", err) return err } err = json.Unmarshal(body, &chatResponse) if err != nil { - log.Printf("json解析数据出错: %v", err) + fmt.Printf("json解析数据出错: %v", err) return err } promptTokens = chatResponse.Usage.PromptTokens totalTokens = chatResponse.Usage.TotalTokens resp.Body = io.NopCloser(bytes.NewReader(body)) - log.Printf("prompt_tokens: %v total_tokens: %v", promptTokens, totalTokens) + fmt.Printf("prompt_tokens: %v total_tokens: %v", promptTokens, totalTokens) timestamp := time.Now().Unix() timestampID := "emb-" + fmt.Sprintf("%d", timestamp) //消费余额 @@ -306,11 +305,11 @@ func Completions(c *gin.Context) { serverInfo, err := service.CheckBlance(key, chatRequest.Model, chatRequest.MaxTokens) if err != nil { c.AbortWithStatusJSON(403, gin.H{"error": err.Error()}) - log.Printf("请求出错 KEY: %v Model: %v ERROR: %v", key, chatRequest.Model, err) + fmt.Printf("请求出错 KEY: %v Model: %v ERROR: %v", key, chatRequest.Model, err) return } - log.Printf("请求的KEY: %v Model: %v", key, chatRequest.Model) + fmt.Printf("请求的KEY: %v Model: %v", key, chatRequest.Model) remote, err := url.Parse(serverInfo.ServerAddress) if err != nil { @@ -321,7 +320,7 @@ func Completions(c *gin.Context) { proxy := httputil.NewSingleHostReverseProxy(remote) newReqBody, err := json.Marshal(chatRequest) if err != nil { - log.Printf("http request err: %v", err) + fmt.Printf("http request err: %v", err) c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } @@ -348,13 +347,13 @@ func Completions(c *gin.Context) { } sss, err := json.Marshal(chatRequest) if err != nil { - log.Printf("chatRequest 转化出错 %v", err) + fmt.Printf("chatRequest 转化出错 %v", err) } - log.Printf("开始处理返回逻辑: %v", string(sss)) + fmt.Printf("开始处理返回逻辑: %v", string(sss)) if chatRequest.Stream { // 流式回应,处理 proxy.ModifyResponse = func(resp *http.Response) error { - log.Printf("流式回应 http status code: %v", resp.StatusCode) + fmt.Printf("流式回应 http status code: %v", resp.StatusCode) if resp.StatusCode != http.StatusOK { //退回预扣除的余额 err = service.CheckBlanceReturn(key, chatRequest.Model, chatRequest.MaxTokens) @@ -377,7 +376,7 @@ func Completions(c *gin.Context) { if err == io.EOF { break } - log.Printf("流式回应,处理 err %v:", err.Error()) + fmt.Printf("流式回应,处理 err %v:", err.Error()) break //return err } @@ -402,7 +401,7 @@ func Completions(c *gin.Context) { // 写回数据 _, err = c.Writer.Write([]byte(string(chunk) + "\n")) if err != nil { - log.Printf("写回数据 err: %v", err.Error()) + fmt.Printf("写回数据 err: %v", err.Error()) return err } c.Writer.(http.Flusher).Flush() @@ -414,9 +413,9 @@ func Completions(c *gin.Context) { promptTokens = common.NumTokensFromMessages(chatRequest.Messages, chatRequest.Model) } completionTokens = common.NumTokensFromString(reqContent, chatRequest.Model) - log.Printf("返回内容:%v", reqContent) + fmt.Printf("返回内容:%v", reqContent) totalTokens = promptTokens + completionTokens - log.Printf("prompt_tokens: %v completion_tokens: %v total_tokens: %v", promptTokens, completionTokens, totalTokens) + fmt.Printf("prompt_tokens: %v completion_tokens: %v total_tokens: %v", promptTokens, completionTokens, totalTokens) //消费余额 _, err := service.Consumption(key, chatRequest.Model, promptTokens, completionTokens, totalTokens, chatRequestId) if err != nil { @@ -431,7 +430,7 @@ func Completions(c *gin.Context) { var chatResponse model.ChatResponse body, err := io.ReadAll(resp.Body) if err != nil { - log.Printf("非流式回应,处理 err: %v", err) + fmt.Printf("非流式回应,处理 err: %v", err) return err } err = json.Unmarshal(body, &chatResponse) @@ -442,7 +441,7 @@ func Completions(c *gin.Context) { completionTokens = chatResponse.Usage.CompletionTokens totalTokens = chatResponse.Usage.TotalTokens resp.Body = io.NopCloser(bytes.NewReader(body)) - log.Printf("prompt_tokens: %v completion_tokens: %v total_tokens: %v", promptTokens, completionTokens, totalTokens) + fmt.Printf("prompt_tokens: %v completion_tokens: %v total_tokens: %v", promptTokens, completionTokens, totalTokens) //消费余额 _, err = service.Consumption(key, chatRequest.Model, promptTokens, completionTokens, totalTokens, chatResponse.Id) if err != nil { diff --git a/service/business.go b/service/business.go index 4e95565..c723d01 100644 --- a/service/business.go +++ b/service/business.go @@ -6,7 +6,7 @@ import ( "api2gpt-mid/model" "encoding/json" "errors" - "log" + "fmt" "strconv" "time" ) @@ -16,7 +16,7 @@ func CheckKeyAndTimeCount(key string) (int, error) { var timeOut = 60 * time.Second var timeCount = 60 userInfoStr, err := common.RedisGet("user:" + key) - log.Printf("用户信息 %s", userInfoStr) + common.SysLog("用户信息" + userInfoStr) if err != nil { //用户不存在 return 401, errors.New("40003") @@ -31,15 +31,15 @@ func CheckKeyAndTimeCount(key string) (int, error) { timeCount = userInfo.RPM } count, err := common.RedisIncr("user:count:" + key) - log.Printf("用户请求次数 %d", count) + common.SysLog("用户请求次数" + strconv.FormatInt(count, 10)) if err != nil { - log.Printf("系统计数器设置异常 %s", err.Error()) + fmt.Printf("系统计数器设置异常 %s", err.Error()) return 500, errors.New("系统计数器设置异常") } if count == 1 { _, err := common.RedisExpire("user:count:"+key, timeOut) if err != nil { - log.Printf("系统计数器异常 %s", err.Error()) + fmt.Printf("系统计数器异常 %s", err.Error()) return 500, errors.New("系统计数器异常") } } @@ -99,7 +99,7 @@ func CheckBlance(key string, modelStr string, maxTokens int) (model.ServerInfo, if err != nil { return serverInfo, errors.New("余额计算失败") } - log.Printf("用户余额 %f key: %v 预扣了:%f", balance, key, (float64(maxTokens) * modelInfo.ModelPrice)) + fmt.Printf("用户余额 %f key: %v 预扣了:%f", balance, key, (float64(maxTokens) * modelInfo.ModelPrice)) if balance < 0 { _, err := common.RedisIncrByFloat("user:"+userInfo.UID+":balance", float64(maxTokens)*modelInfo.ModelPrice) if err != nil { @@ -145,7 +145,7 @@ func CheckBlanceForImages(key string, modelStr string, n int) (model.ServerInfo, if err != nil { return serverInfo, errors.New("余额计算失败") } - log.Printf("用户余额 %f key: %v 预扣了:%f", balance, key, (float64(modelInfo.ModelPrepayment*n) * modelInfo.ModelPrice)) + fmt.Printf("用户余额 %f key: %v 预扣了:%f", balance, key, (float64(modelInfo.ModelPrepayment*n) * modelInfo.ModelPrice)) if balance < 0 { _, err := common.RedisIncrByFloat("user:"+userInfo.UID+":balance", float64(modelInfo.ModelPrepayment*n)*modelInfo.ModelPrice) if err != nil { @@ -178,7 +178,7 @@ func CheckBlanceReturn(key string, modelStr string, maxTokens int) error { maxTokens = modelInfo.ModelPrepayment } balance, err := common.RedisIncrByFloat("user:"+userInfo.UID+":balance", (float64(maxTokens) * modelInfo.ModelPrice)) - log.Printf("用户余额 %f key: %v 返还预扣:%f", balance, key, (float64(maxTokens) * modelInfo.ModelPrice)) + fmt.Printf("用户余额 %f key: %v 返还预扣:%f", balance, key, (float64(maxTokens) * modelInfo.ModelPrice)) return nil } @@ -199,7 +199,7 @@ func CheckBlanceReturnForImages(key string, modelStr string, n int) error { return errors.New("模型信息解析失败") } balance, err := common.RedisIncrByFloat("user:"+userInfo.UID+":balance", (float64(modelInfo.ModelPrepayment*n) * modelInfo.ModelPrice)) - log.Printf("用户余额 %f key: %v 返还预扣:%f", balance, key, (float64(modelInfo.ModelPrepayment*n) * modelInfo.ModelPrice)) + fmt.Printf("用户余额 %f key: %v 返还预扣:%f", balance, key, (float64(modelInfo.ModelPrepayment*n) * modelInfo.ModelPrice)) return nil } @@ -229,9 +229,9 @@ func Consumption(key string, modelStr string, prompt_tokens int, completion_toke // 余额消费日志请求 result, err := api.BalanceConsumption(key, modelStr, prompt_tokens, completion_tokens, total_tokens, msg_id) - log.Printf("用户余额:%f 扣费KEY: %s 扣费token数: %d 扣费:%f 扣费日志发送结果 %s", balance, key, total_tokens, float64(modelInfo.ModelPrepayment)*modelInfo.ModelPrice-(float64(prompt_tokens)*modelInfo.ModelPrice+float64(completion_tokens)*modelInfo.ModelPrice2), result) + fmt.Printf("用户余额:%f 扣费KEY: %s 扣费token数: %d 扣费:%f 扣费日志发送结果 %s", balance, key, total_tokens, float64(modelInfo.ModelPrepayment)*modelInfo.ModelPrice-(float64(prompt_tokens)*modelInfo.ModelPrice+float64(completion_tokens)*modelInfo.ModelPrice2), result) if err != nil { - log.Printf("%s 余额消费日志请求失败 %v", key, err) + fmt.Printf("%s 余额消费日志请求失败 %v", key, err) return "", err } return result, nil @@ -263,9 +263,9 @@ func ConsumptionForImages(key string, modelStr string, n int, dataNum int, msg_i // 余额消费日志请求 result, err := api.BalanceConsumption(key, modelStr, 0, 1000*dataNum, 1000*dataNum, msg_id) - log.Printf("用户余额:%f 扣费KEY: %s 扣费token数: %d 扣费:%f 扣费日志发送结果 %s", balance, key, 1000*dataNum, float64(1000*dataNum)*modelInfo.ModelPrice, result) + fmt.Printf("用户余额:%f 扣费KEY: %s 扣费token数: %d 扣费:%f 扣费日志发送结果 %s", balance, key, 1000*dataNum, float64(1000*dataNum)*modelInfo.ModelPrice, result) if err != nil { - log.Printf("%s 余额消费日志请求失败 %v", key, err) + fmt.Printf("%s 余额消费日志请求失败 %v", key, err) return "", err } return result, nil