feat: add jimeng use openai sdk

This commit is contained in:
feitianbubu
2025-10-11 13:52:37 +08:00
parent 7cb60c7d83
commit 8a7033e5a3
3 changed files with 50 additions and 14 deletions

View File

@@ -158,7 +158,13 @@ func (a *TaskAdaptor) DoResponse(c *gin.Context, resp *http.Response, info *rela
return return
} }
c.JSON(http.StatusOK, gin.H{"task_id": jResp.Data.TaskID}) ov := relaycommon.NewOpenAIVideo()
ov.ID = jResp.Data.TaskID
ov.TaskID = jResp.Data.TaskID
ov.CreatedAt = time.Now().Unix()
ov.Model = info.OriginModelName
ov.Metadata = map[string]any{}
c.JSON(http.StatusOK, ov)
return jResp.Data.TaskID, responseBody, nil return jResp.Data.TaskID, responseBody, nil
} }
@@ -400,6 +406,30 @@ func (a *TaskAdaptor) ParseTaskResult(respBody []byte) (*relaycommon.TaskInfo, e
return &taskResult, nil return &taskResult, nil
} }
func (a *TaskAdaptor) ConvertToOpenAIVideo(originTask *model.Task) (*relaycommon.OpenAIVideo, error) {
var jimengResp responseTask
if err := json.Unmarshal(originTask.Data, &jimengResp); err != nil {
return nil, errors.Wrap(err, "unmarshal jimeng task data failed")
}
openAIVideo := relaycommon.NewOpenAIVideo()
openAIVideo.ID = originTask.TaskID
openAIVideo.Status = string(originTask.Status)
openAIVideo.SetProgressStr(originTask.Progress)
openAIVideo.SetMetadata("url", jimengResp.Data.VideoUrl)
openAIVideo.CreatedAt = originTask.CreatedAt
openAIVideo.CompletedAt = originTask.UpdatedAt
if jimengResp.Code != 10000 {
openAIVideo.Error = &relaycommon.OpenAIVideoError{
Message: jimengResp.Message,
Code: fmt.Sprintf("%d", jimengResp.Code),
}
}
return openAIVideo, nil
}
func isNewAPIRelay(apiKey string) bool { func isNewAPIRelay(apiKey string) bool {
return strings.HasPrefix(apiKey, "sk-") return strings.HasPrefix(apiKey, "sk-")
} }

View File

@@ -370,16 +370,6 @@ func (a *TaskAdaptor) ConvertToOpenAIVideo(originTask *model.Task) (*relaycommon
if err := json.Unmarshal(originTask.Data, &klingResp); err != nil { if err := json.Unmarshal(originTask.Data, &klingResp); err != nil {
return nil, errors.Wrap(err, "unmarshal kling task data failed") return nil, errors.Wrap(err, "unmarshal kling task data failed")
} }
convertProgress := func(progress string) int {
progress = strings.TrimSuffix(progress, "%")
p, err := strconv.Atoi(progress)
if err != nil {
logger.Warnf("convert progress failed, progress: %s, err: %v", progress, err)
}
return p
}
openAIVideo := &relaycommon.OpenAIVideo{ openAIVideo := &relaycommon.OpenAIVideo{
ID: klingResp.Data.TaskId, ID: klingResp.Data.TaskId,
Object: "video", Object: "video",
@@ -388,10 +378,8 @@ func (a *TaskAdaptor) ConvertToOpenAIVideo(originTask *model.Task) (*relaycommon
CreatedAt: klingResp.Data.CreatedAt, CreatedAt: klingResp.Data.CreatedAt,
CompletedAt: klingResp.Data.UpdatedAt, CompletedAt: klingResp.Data.UpdatedAt,
Metadata: make(map[string]any), Metadata: make(map[string]any),
Progress: convertProgress(originTask.Progress),
} }
openAIVideo.SetProgressStr(originTask.Progress)
// 处理视频 URL
if len(klingResp.Data.TaskResult.Videos) > 0 { if len(klingResp.Data.TaskResult.Videos) > 0 {
video := klingResp.Data.TaskResult.Videos[0] video := klingResp.Data.TaskResult.Videos[0]
if video.Url != "" { if video.Url != "" {

View File

@@ -3,6 +3,7 @@ package common
import ( import (
"errors" "errors"
"fmt" "fmt"
"strconv"
"strings" "strings"
"time" "time"
@@ -568,6 +569,23 @@ type OpenAIVideo struct {
Error *OpenAIVideoError `json:"error,omitempty"` Error *OpenAIVideoError `json:"error,omitempty"`
Metadata map[string]any `json:"metadata,omitempty"` Metadata map[string]any `json:"metadata,omitempty"`
} }
func (m *OpenAIVideo) SetProgressStr(progress string) {
progress = strings.TrimSuffix(progress, "%")
m.Progress, _ = strconv.Atoi(progress)
}
func (m *OpenAIVideo) SetMetadata(k string, v any) {
if m.Metadata == nil {
m.Metadata = make(map[string]any)
}
m.Metadata[k] = v
}
func NewOpenAIVideo() *OpenAIVideo {
return &OpenAIVideo{
Object: "video",
}
}
type OpenAIVideoError struct { type OpenAIVideoError struct {
Message string `json:"message"` Message string `json:"message"`
Code string `json:"code"` Code string `json:"code"`