diff --git a/api/core/types/task.go b/api/core/types/task.go
index 599482af..afdcf504 100644
--- a/api/core/types/task.go
+++ b/api/core/types/task.go
@@ -70,17 +70,18 @@ type SdTaskParams struct {
// DallTask DALL-E task
type DallTask struct {
- ModelId uint `json:"model_id"`
- ModelName string `json:"model_name"`
- Id uint `json:"id"`
- UserId uint `json:"user_id"`
- Prompt string `json:"prompt"`
- N int `json:"n"`
- Quality string `json:"quality"`
- Size string `json:"size"`
- Style string `json:"style"`
- Power int `json:"power"`
- TranslateModelId int `json:"translate_model_id"` // 提示词翻译模型ID
+ ModelId uint `json:"model_id"`
+ ModelName string `json:"model_name"`
+ Image []string `json:"image,omitempty"`
+ Id uint `json:"id"`
+ UserId uint `json:"user_id"`
+ Prompt string `json:"prompt"`
+ N int `json:"n"`
+ Quality string `json:"quality"`
+ Size string `json:"size"`
+ Style string `json:"style"`
+ Power int `json:"power"`
+ TranslateModelId int `json:"translate_model_id"` // 提示词翻译模型ID
}
type SunoTask struct {
diff --git a/api/handler/dalle_handler.go b/api/handler/dalle_handler.go
index 959b3298..5c34d613 100644
--- a/api/handler/dalle_handler.go
+++ b/api/handler/dalle_handler.go
@@ -118,6 +118,7 @@ func (h *DallJobHandler) Image(c *gin.Context) {
UserId: uint(userId),
ModelId: chatModel.Id,
ModelName: chatModel.Value,
+ Image: data.Image,
Prompt: data.Prompt,
Quality: data.Quality,
Size: data.Size,
diff --git a/api/service/dalle/service.go b/api/service/dalle/service.go
index 065e27e5..8dabfa70 100644
--- a/api/service/dalle/service.go
+++ b/api/service/dalle/service.go
@@ -16,6 +16,7 @@ import (
"geekai/store"
"geekai/store/model"
"geekai/utils"
+ "strings"
"time"
"github.com/go-redis/redis/v8"
@@ -94,12 +95,14 @@ func (s *Service) Run() {
}
type imgReq struct {
- Model string `json:"model"`
- Prompt string `json:"prompt"`
- N int `json:"n,omitempty"`
- Size string `json:"size,omitempty"`
- Quality string `json:"quality,omitempty"`
- Style string `json:"style,omitempty"`
+ Model string `json:"model"`
+ Image []string `json:"image,omitempty"`
+ Prompt string `json:"prompt"`
+ N int `json:"n,omitempty"`
+ Size string `json:"size,omitempty"`
+ Quality string `json:"quality,omitempty"`
+ Style string `json:"style,omitempty"`
+ ResponseFormat string `json:"response_format,omitempty"`
}
type imgRes struct {
@@ -157,6 +160,11 @@ func (s *Service) Image(task types.DallTask, sync bool) (string, error) {
Style: task.Style,
Quality: task.Quality,
}
+ // 图片编辑
+ if len(task.Image) > 0 {
+ reqBody.Prompt = fmt.Sprintf("%s, %s", strings.Join(task.Image, " "), task.Prompt)
+ }
+
logger.Infof("Channel:%s, API KEY:%s, BODY: %+v", apiURL, apiKey.Value, reqBody)
r, err := s.httpClient.R().SetHeader("Body-Type", "application/json").
SetHeader("Authorization", "Bearer "+apiKey.Value).
diff --git a/web/src/components/ChatPrompt.vue b/web/src/components/ChatPrompt.vue
index 6fe20889..4b403646 100644
--- a/web/src/components/ChatPrompt.vue
+++ b/web/src/components/ChatPrompt.vue
@@ -232,6 +232,7 @@ const copyContent = (text) => {
flex-flow: row;
margin-right: 10px;
position: relative;
+ justify-content: start;
.el-image {
border: 1px solid #e3e3e3;
@@ -365,6 +366,7 @@ const copyContent = (text) => {
flex-flow: row;
margin-right: 10px;
position: relative;
+ justify-content: end;
.el-image {
border: 1px solid #e3e3e3;
diff --git a/web/src/components/ImageUpload.vue b/web/src/components/ImageUpload.vue
index e1a3845c..26163cd8 100644
--- a/web/src/components/ImageUpload.vue
+++ b/web/src/components/ImageUpload.vue
@@ -85,7 +85,7 @@