diff --git a/relay/channel/task/vertex/adaptor.go b/relay/channel/task/vertex/adaptor.go index faedebdf2..766aec650 100644 --- a/relay/channel/task/vertex/adaptor.go +++ b/relay/channel/task/vertex/adaptor.go @@ -10,6 +10,7 @@ import ( "regexp" "strings" + "github.com/QuantumNous/new-api/common" "github.com/QuantumNous/new-api/model" "github.com/gin-gonic/gin" @@ -302,6 +303,29 @@ func (a *TaskAdaptor) ParseTaskResult(respBody []byte) (*relaycommon.TaskInfo, e return ti, nil } +func (a *TaskAdaptor) ConvertToOpenAIVideo(task *model.Task) ([]byte, error) { + upstreamName, err := decodeLocalTaskID(task.TaskID) + if err != nil { + upstreamName = "" + } + modelName := extractModelFromOperationName(upstreamName) + if strings.TrimSpace(modelName) == "" { + modelName = "veo-3.0-generate-001" + } + v := dto.NewOpenAIVideo() + v.ID = task.TaskID + v.Model = modelName + v.Status = task.Status.ToVideoStatus() + v.SetProgressStr(task.Progress) + v.CreatedAt = task.CreatedAt + v.CompletedAt = task.UpdatedAt + if strings.HasPrefix(task.FailReason, "data:") && len(task.FailReason) > 0 { + v.SetMetadata("url", task.FailReason) + } + + return common.Marshal(v) +} + // ============================ // helpers // ============================ diff --git a/relay/relay_task.go b/relay/relay_task.go index deb38d559..ca1b0bb1f 100644 --- a/relay/relay_task.go +++ b/relay/relay_task.go @@ -351,7 +351,10 @@ func videoFetchByIDRespBodyBuilder(c *gin.Context) (respBody []byte, taskResp *d originTask.Progress = ti.Progress } if ti.Url != "" { - originTask.FailReason = ti.Url + if strings.HasPrefix(ti.Url, "data:") { + } else { + originTask.FailReason = ti.Url + } } _ = originTask.Update() var raw map[string]any @@ -379,18 +382,20 @@ func videoFetchByIDRespBodyBuilder(c *gin.Context) (respBody []byte, taskResp *d case model.TaskStatusQueued, model.TaskStatusSubmitted: status = "queued" } - out := map[string]any{ - "error": nil, - "format": format, - "metadata": nil, - "status": status, - "task_id": originTask.TaskID, - "url": originTask.FailReason, + if !strings.HasPrefix(c.Request.RequestURI, "/v1/videos/") { + out := map[string]any{ + "error": nil, + "format": format, + "metadata": nil, + "status": status, + "task_id": originTask.TaskID, + "url": originTask.FailReason, + } + respBody, _ = json.Marshal(dto.TaskResponse[any]{ + Code: "success", + Data: out, + }) } - respBody, _ = json.Marshal(dto.TaskResponse[any]{ - Code: "success", - Data: out, - }) } }()