迁移音频生成与语音合成到 gateway 并补充 simulation 测试
This commit is contained in:
@@ -29,7 +29,7 @@ type providerTaskClient struct {
|
||||
}
|
||||
|
||||
func (c providerTaskClient) Run(ctx context.Context, request Request) (Response, error) {
|
||||
if request.Kind != "images.generations" && request.Kind != "images.edits" && request.Kind != "videos.generations" {
|
||||
if !providerTaskKindSupported(request.Kind) {
|
||||
return Response{}, &ClientError{Code: "unsupported_kind", Message: "unsupported " + c.Spec.Name + " request kind", Retryable: false}
|
||||
}
|
||||
startedAt := time.Now()
|
||||
@@ -119,6 +119,15 @@ func (c providerTaskClient) Run(ctx context.Context, request Request) (Response,
|
||||
}
|
||||
}
|
||||
|
||||
func providerTaskKindSupported(kind string) bool {
|
||||
switch kind {
|
||||
case "images.generations", "images.edits", "videos.generations", "song.generations", "music.generations", "speech.generations":
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
func (c providerTaskClient) submit(ctx context.Context, request Request, payload map[string]any) (map[string]any, string, error) {
|
||||
path := c.Spec.SubmitPath(request, payload)
|
||||
return providerPostJSON(ctx, httpClient(request.HTTPClient, c.HTTPClient), providerURL(request.Candidate.BaseURL, path), payload, request.Candidate.Credentials, c.Spec.Auth)
|
||||
@@ -287,7 +296,7 @@ func containsStatus(values []string, status string) bool {
|
||||
}
|
||||
|
||||
func hasProviderTaskResult(result map[string]any) bool {
|
||||
return result["data"] != nil || valueAtPath(result, "output.image_urls") != nil || valueAtPath(result, "output.video_url") != nil || valueAtPath(result, "Response.ResultVideoUrl") != nil || valueAtPath(result, "Response.ResultImages") != nil || result["urls"] != nil
|
||||
return result["data"] != nil || valueAtPath(result, "data.result") != nil || valueAtPath(result, "data.audio") != nil || valueAtPath(result, "output.image_urls") != nil || valueAtPath(result, "output.video_url") != nil || valueAtPath(result, "Response.ResultVideoUrl") != nil || valueAtPath(result, "Response.ResultImages") != nil || result["audio_url"] != nil || result["urls"] != nil
|
||||
}
|
||||
|
||||
func normalizeProviderTaskResult(request Request, spec providerTaskSpec, result map[string]any, upstreamTaskID string) map[string]any {
|
||||
@@ -316,9 +325,19 @@ func providerTaskData(request Request, result map[string]any) []any {
|
||||
if request.Kind == "videos.generations" || strings.Contains(request.ModelType, "video") {
|
||||
fileType = "video"
|
||||
}
|
||||
if request.Kind == "song.generations" || request.Kind == "music.generations" || request.Kind == "speech.generations" || strings.Contains(request.ModelType, "audio") || strings.Contains(request.ModelType, "speech") {
|
||||
fileType = "audio"
|
||||
}
|
||||
urlValues := []any{}
|
||||
for _, path := range []string{
|
||||
"urls",
|
||||
"audio_url",
|
||||
"audioUrl",
|
||||
"data.audio_url",
|
||||
"data.audioUrl",
|
||||
"data.result",
|
||||
"data.result.audio_url",
|
||||
"data.result.audioUrl",
|
||||
"image_urls",
|
||||
"data.image_urls",
|
||||
"data.images",
|
||||
@@ -368,7 +387,7 @@ func appendURLValues(out *[]any, value any) {
|
||||
*out = append(*out, item)
|
||||
}
|
||||
case map[string]any:
|
||||
for _, key := range []string{"url", "image_url", "imageUrl", "video_url", "videoUrl", "content", "output"} {
|
||||
for _, key := range []string{"url", "audio_url", "audioUrl", "image_url", "imageUrl", "video_url", "videoUrl", "content", "output"} {
|
||||
if item := strings.TrimSpace(fmt.Sprint(typed[key])); item != "" && item != "<nil>" {
|
||||
*out = append(*out, item)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user