diff --git a/relay/channel/task/jimeng/adaptor.go b/relay/channel/task/jimeng/adaptor.go index f838bdb1..2bc45c54 100644 --- a/relay/channel/task/jimeng/adaptor.go +++ b/relay/channel/task/jimeng/adaptor.go @@ -318,11 +318,11 @@ func (a *TaskAdaptor) convertToRequestPayload(req *relaycommon.TaskSubmitReq) (* } // Handle one-of image_urls or binary_data_base64 - if req.Image != "" { - if strings.HasPrefix(req.Image, "http") { - r.ImageUrls = []string{req.Image} + if req.HasImage() { + if strings.HasPrefix(req.Images[0], "http") { + r.ImageUrls = req.Images } else { - r.BinaryDataBase64 = []string{req.Image} + r.BinaryDataBase64 = req.Images } } metadata := req.Metadata diff --git a/relay/common/relay_info.go b/relay/common/relay_info.go index eb292de2..99925dc5 100644 --- a/relay/common/relay_info.go +++ b/relay/common/relay_info.go @@ -481,6 +481,7 @@ type TaskSubmitReq struct { Model string `json:"model,omitempty"` Mode string `json:"mode,omitempty"` Image string `json:"image,omitempty"` + Images []string `json:"images,omitempty"` Size string `json:"size,omitempty"` Duration int `json:"duration,omitempty"` Metadata map[string]interface{} `json:"metadata,omitempty"` @@ -490,8 +491,8 @@ func (t TaskSubmitReq) GetPrompt() string { return t.Prompt } -func (t TaskSubmitReq) GetImage() string { - return t.Image +func (t TaskSubmitReq) HasImage() bool { + return len(t.Images) > 0 } type TaskInfo struct { diff --git a/relay/common/relay_utils.go b/relay/common/relay_utils.go index 10839561..cf6d08dd 100644 --- a/relay/common/relay_utils.go +++ b/relay/common/relay_utils.go @@ -16,7 +16,7 @@ type HasPrompt interface { } type HasImage interface { - GetImage() string + HasImage() bool } func GetFullRequestURL(baseURL string, requestURL string, channelType int) string { @@ -74,6 +74,11 @@ func ValidateBasicTaskRequest(c *gin.Context, info *RelayInfo, action string) *d return taskErr } + if len(req.Images) == 0 && strings.TrimSpace(req.Image) != "" { + // 兼容单图上传 + req.Images = []string{req.Image} + } + storeTaskRequest(c, info, action, req) return nil } @@ -89,7 +94,7 @@ func ValidateTaskRequestWithImage(c *gin.Context, info *RelayInfo, requestObj in } action := constant.TaskActionTextGenerate - if hasImage, ok := requestObj.(HasImage); ok && strings.TrimSpace(hasImage.GetImage()) != "" { + if hasImage, ok := requestObj.(HasImage); ok && hasImage.HasImage() { action = constant.TaskActionGenerate }