fix: preserve explicit zero values in native relay requests

This commit is contained in:
Seefs
2026-03-01 15:47:03 +08:00
parent 21cfc1ca38
commit 0e9198e9b5
52 changed files with 523 additions and 232 deletions

View File

@@ -12,6 +12,7 @@ import (
"github.com/QuantumNous/new-api/logger"
relayconstant "github.com/QuantumNous/new-api/relay/constant"
"github.com/QuantumNous/new-api/types"
"github.com/samber/lo"
"github.com/gin-gonic/gin"
)
@@ -151,7 +152,7 @@ func GetAndValidOpenAIImageRequest(c *gin.Context, relayMode int) (*dto.ImageReq
formData := c.Request.PostForm
imageRequest.Prompt = formData.Get("prompt")
imageRequest.Model = formData.Get("model")
imageRequest.N = uint(common.String2Int(formData.Get("n")))
imageRequest.N = common.GetPointer(uint(common.String2Int(formData.Get("n"))))
imageRequest.Quality = formData.Get("quality")
imageRequest.Size = formData.Get("size")
if imageValue := formData.Get("image"); imageValue != "" {
@@ -163,8 +164,8 @@ func GetAndValidOpenAIImageRequest(c *gin.Context, relayMode int) (*dto.ImageReq
imageRequest.Quality = "standard"
}
}
if imageRequest.N == 0 {
imageRequest.N = 1
if imageRequest.N == nil || *imageRequest.N == 0 {
imageRequest.N = common.GetPointer(uint(1))
}
hasWatermark := formData.Has("watermark")
@@ -218,8 +219,8 @@ func GetAndValidOpenAIImageRequest(c *gin.Context, relayMode int) (*dto.ImageReq
// return nil, errors.New("prompt is required")
//}
if imageRequest.N == 0 {
imageRequest.N = 1
if imageRequest.N == nil || *imageRequest.N == 0 {
imageRequest.N = common.GetPointer(uint(1))
}
}
@@ -260,7 +261,7 @@ func GetAndValidateTextRequest(c *gin.Context, relayMode int) (*dto.GeneralOpenA
textRequest.Model = c.Param("model")
}
if textRequest.MaxTokens > math.MaxInt32/2 {
if lo.FromPtrOr(textRequest.MaxTokens, uint(0)) > math.MaxInt32/2 {
return nil, errors.New("max_tokens is invalid")
}
if textRequest.Model == "" {