feat: vidu video support multi images
This commit is contained in:
@@ -80,8 +80,7 @@ func (a *TaskAdaptor) Init(info *relaycommon.RelayInfo) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *TaskAdaptor) ValidateRequestAndSetAction(c *gin.Context, info *relaycommon.RelayInfo) *dto.TaskError {
|
func (a *TaskAdaptor) ValidateRequestAndSetAction(c *gin.Context, info *relaycommon.RelayInfo) *dto.TaskError {
|
||||||
// Use the unified validation method for TaskSubmitReq with image-based action determination
|
return relaycommon.ValidateBasicTaskRequest(c, info, constant.TaskActionGenerate)
|
||||||
return relaycommon.ValidateTaskRequestWithImageBinding(c, info)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *TaskAdaptor) BuildRequestBody(c *gin.Context, _ *relaycommon.RelayInfo) (io.Reader, error) {
|
func (a *TaskAdaptor) BuildRequestBody(c *gin.Context, _ *relaycommon.RelayInfo) (io.Reader, error) {
|
||||||
@@ -187,14 +186,9 @@ func (a *TaskAdaptor) GetChannelName() string {
|
|||||||
// ============================
|
// ============================
|
||||||
|
|
||||||
func (a *TaskAdaptor) convertToRequestPayload(req *relaycommon.TaskSubmitReq) (*requestPayload, error) {
|
func (a *TaskAdaptor) convertToRequestPayload(req *relaycommon.TaskSubmitReq) (*requestPayload, error) {
|
||||||
var images []string
|
|
||||||
if req.Image != "" {
|
|
||||||
images = []string{req.Image}
|
|
||||||
}
|
|
||||||
|
|
||||||
r := requestPayload{
|
r := requestPayload{
|
||||||
Model: defaultString(req.Model, "viduq1"),
|
Model: defaultString(req.Model, "viduq1"),
|
||||||
Images: images,
|
Images: req.Images,
|
||||||
Prompt: req.Prompt,
|
Prompt: req.Prompt,
|
||||||
Duration: defaultInt(req.Duration, 5),
|
Duration: defaultInt(req.Duration, 5),
|
||||||
Resolution: defaultString(req.Size, "1080p"),
|
Resolution: defaultString(req.Size, "1080p"),
|
||||||
|
|||||||
@@ -79,34 +79,10 @@ func ValidateBasicTaskRequest(c *gin.Context, info *RelayInfo, action string) *d
|
|||||||
req.Images = []string{req.Image}
|
req.Images = []string{req.Image}
|
||||||
}
|
}
|
||||||
|
|
||||||
storeTaskRequest(c, info, action, req)
|
if req.HasImage() {
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func ValidateTaskRequestWithImage(c *gin.Context, info *RelayInfo, requestObj interface{}) *dto.TaskError {
|
|
||||||
hasPrompt, ok := requestObj.(HasPrompt)
|
|
||||||
if !ok {
|
|
||||||
return createTaskError(fmt.Errorf("request must have prompt"), "invalid_request", http.StatusBadRequest, true)
|
|
||||||
}
|
|
||||||
|
|
||||||
if taskErr := validatePrompt(hasPrompt.GetPrompt()); taskErr != nil {
|
|
||||||
return taskErr
|
|
||||||
}
|
|
||||||
|
|
||||||
action := constant.TaskActionTextGenerate
|
|
||||||
if hasImage, ok := requestObj.(HasImage); ok && hasImage.HasImage() {
|
|
||||||
action = constant.TaskActionGenerate
|
action = constant.TaskActionGenerate
|
||||||
}
|
}
|
||||||
|
|
||||||
storeTaskRequest(c, info, action, requestObj)
|
storeTaskRequest(c, info, action, req)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func ValidateTaskRequestWithImageBinding(c *gin.Context, info *RelayInfo) *dto.TaskError {
|
|
||||||
var req TaskSubmitReq
|
|
||||||
if err := c.ShouldBindJSON(&req); err != nil {
|
|
||||||
return createTaskError(err, "invalid_request_body", http.StatusBadRequest, false)
|
|
||||||
}
|
|
||||||
|
|
||||||
return ValidateTaskRequestWithImage(c, info, req)
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user