diff --git a/api/core/types/config.go b/api/core/types/config.go
index 59c89589..25451355 100644
--- a/api/core/types/config.go
+++ b/api/core/types/config.go
@@ -116,6 +116,7 @@ type ChatConfig struct {
EnableHistory bool `json:"enable_history"` // 是否允许保存聊天记录
ContextDeep int `json:"context_deep"` // 上下文深度
DallApiURL string `json:"dall_api_url"` // dall-e3 绘图 API 地址
+ DallImgNum int `json:"dall_img_num"` // dall-e3 出图数量
}
type Platform string
diff --git a/api/service/fun/func_img.go b/api/service/fun/func_img.go
index 88e0e15e..d7476aec 100644
--- a/api/service/fun/func_img.go
+++ b/api/service/fun/func_img.go
@@ -6,6 +6,7 @@ import (
"chatplus/store/model"
"chatplus/utils"
"fmt"
+
"github.com/imroc/req/v3"
"gorm.io/gorm"
)
@@ -69,12 +70,20 @@ func (f FuncImage) Invoke(params map[string]interface{}) (string, error) {
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)
}
+ apiURL := chatConfig.DallApiURL
+ if utils.IsEmptyValue(apiURL) {
+ apiURL = "https://api.openai.com/v1/images/generations"
+ }
+ imgNum := chatConfig.DallImgNum
+ if imgNum <= 0 {
+ imgNum = 1
+ }
var res imgRes
var errRes ErrRes
r, err := req.C().SetProxyURL(f.proxyURL).R().SetHeader("Content-Type", "application/json").
@@ -82,11 +91,11 @@ func (f FuncImage) Invoke(params map[string]interface{}) (string, error) {
SetBody(imgReq{
Model: "dall-e-3",
Prompt: prompt,
- N: 1,
+ N: imgNum,
Size: "1024x1024",
}).
SetErrorResult(&errRes).
- SetSuccessResult(&res).Post(chatConfig.DallApiURL)
+ SetSuccessResult(&res).Post(apiURL)
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 a9108710..2eddff5a 100644
--- a/web/src/views/admin/SysConfig.vue
+++ b/web/src/views/admin/SysConfig.vue
@@ -249,10 +249,13 @@
- 绘图绘图
+ AI绘图
+
+
+
保存
@@ -295,26 +298,7 @@ onMounted(() => {
// 加载聊天配置
httpGet('/api/admin/config/get?key=chat').then(res => {
- // chat.value = res.data
- if (res.data.open_ai) {
- chat.value.open_ai = res.data.open_ai
- }
- if (res.data.azure) {
- chat.value.azure = res.data.azure
- }
- if (res.data.chat_gml) {
- chat.value.chat_gml = res.data.chat_gml
- }
- if (res.data.baidu) {
- chat.value.baidu = res.data.baidu
- }
- if (res.data.xun_fei) {
- chat.value.xun_fei = res.data.xun_fei
- }
- 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
+ chat.value = res.data
loading.value = false
}).catch(e => {
ElMessage.error("加载聊天配置失败: " + e.message)