diff --git a/api/core/types/config.go b/api/core/types/config.go
index 8e8f1094..1a337a63 100644
--- a/api/core/types/config.go
+++ b/api/core/types/config.go
@@ -106,9 +106,10 @@ type ChatConfig struct {
Baidu ModelAPIConfig `json:"baidu"`
XunFei ModelAPIConfig `json:"xun_fei"`
- EnableContext bool `json:"enable_context"` // 是否开启聊天上下文
- EnableHistory bool `json:"enable_history"` // 是否允许保存聊天记录
- ContextDeep int `json:"context_deep"` // 上下文深度
+ EnableContext bool `json:"enable_context"` // 是否开启聊天上下文
+ EnableHistory bool `json:"enable_history"` // 是否允许保存聊天记录
+ ContextDeep int `json:"context_deep"` // 上下文深度
+ DallApiURL string `json:"dall_api_url"` // dall-e3 绘图 API 地址
}
type Platform string
diff --git a/api/handler/chatimpl/openai_handler.go b/api/handler/chatimpl/openai_handler.go
index d8eaf6be..dfe0c23d 100644
--- a/api/handler/chatimpl/openai_handler.go
+++ b/api/handler/chatimpl/openai_handler.go
@@ -136,7 +136,6 @@ func (h *ChatHandler) sendOpenAiMessage(
params["user_id"] = userVo.Id
params["role_id"] = role.Id
params["chat_id"] = session.ChatId
- params["icon"] = "/images/avatar/mid_journey.png"
params["session_id"] = session.SessionId
}
data, err := f.Invoke(params)
diff --git a/api/service/fun/func_img.go b/api/service/fun/func_img.go
index 004251d6..88e0e15e 100644
--- a/api/service/fun/func_img.go
+++ b/api/service/fun/func_img.go
@@ -14,7 +14,6 @@ import (
type FuncImage struct {
name string
- apiURL string
db *gorm.DB
uploadManager *oss.UploaderManager
proxyURL string
@@ -26,7 +25,6 @@ func NewImageFunc(db *gorm.DB, manager *oss.UploaderManager, config *types.AppCo
name: "DALL-E3 绘画",
uploadManager: manager,
proxyURL: config.ProxyURL,
- apiURL: "https://api.openai.com/v1/images/generations",
}
}
@@ -57,9 +55,26 @@ type ErrRes struct {
func (f FuncImage) Invoke(params map[string]interface{}) (string, error) {
logger.Infof("绘画参数:%+v", params)
prompt := utils.InterfaceToString(params["prompt"])
- // 获取绘图 API KEY
+ // get image generation API KEY
var apiKey model.ApiKey
- f.db.Where("platform = ? AND type = ?", types.OpenAI, "img").Order("last_used_at ASC").First(&apiKey)
+ tx := f.db.Where("platform = ? AND type = ?", types.OpenAI, "img").Order("last_used_at ASC").First(&apiKey)
+ if tx.Error != nil {
+ return "", fmt.Errorf("error with get generation API KEY: %v", tx.Error)
+ }
+
+ // get image generation api URL
+ var conf model.Config
+ var chatConfig types.ChatConfig
+ tx = f.db.Where("marker", "chat").First(&conf)
+ if tx.Error != nil {
+ return "", fmt.Errorf("error with get chat configs: %v", tx.Error)
+ }
+
+ err := utils.JsonDecode(conf.Config, &chatConfig)
+ if err != nil {
+ return "", fmt.Errorf("error with decode chat config: %v", err)
+ }
+
var res imgRes
var errRes ErrRes
r, err := req.C().SetProxyURL(f.proxyURL).R().SetHeader("Content-Type", "application/json").
@@ -71,7 +86,7 @@ func (f FuncImage) Invoke(params map[string]interface{}) (string, error) {
Size: "1024x1024",
}).
SetErrorResult(&errRes).
- SetSuccessResult(&res).Post(f.apiURL)
+ SetSuccessResult(&res).Post(chatConfig.DallApiURL)
if err != nil || r.IsErrorState() {
return "", fmt.Errorf("error with http request: %v%v%s", err, r.Err, errRes.Error.Message)
}
diff --git a/web/src/views/admin/SysConfig.vue b/web/src/views/admin/SysConfig.vue
index 20e73184..a9108710 100644
--- a/web/src/views/admin/SysConfig.vue
+++ b/web/src/views/admin/SysConfig.vue
@@ -249,6 +249,10 @@
+ 绘图绘图
+
+
+
保存
@@ -274,6 +278,7 @@ const chat = ref({
context_deep: 0,
enable_context: true,
enable_history: true,
+ dall_api_url: "",
})
const loading = ref(true)
const systemFormRef = ref(null)
@@ -309,6 +314,7 @@ onMounted(() => {
chat.value.context_deep = res.data.context_deep
chat.value.enable_context = res.data.enable_context
chat.value.enable_history = res.data.enable_history
+ chat.value.dall_api_url = res.data.dall_api_url
loading.value = false
}).catch(e => {
ElMessage.error("加载聊天配置失败: " + e.message)