diff --git a/api/core/app_server.go b/api/core/app_server.go index 2fca4ea7..69645add 100644 --- a/api/core/app_server.go +++ b/api/core/app_server.go @@ -218,6 +218,7 @@ func needLogin(c *gin.Context) bool { c.Request.URL.Path == "/api/config/get" || c.Request.URL.Path == "/api/product/list" || c.Request.URL.Path == "/api/menu/list" || + c.Request.URL.Path == "/api/markMap/model" || strings.HasPrefix(c.Request.URL.Path, "/api/test") || strings.HasPrefix(c.Request.URL.Path, "/api/function/") || strings.HasPrefix(c.Request.URL.Path, "/api/sms/") || diff --git a/api/handler/markmap_handler.go b/api/handler/markmap_handler.go new file mode 100644 index 00000000..c4d749fd --- /dev/null +++ b/api/handler/markmap_handler.go @@ -0,0 +1,48 @@ +package handler + +import ( + "chatplus/core" + "chatplus/core/types" + "chatplus/store/model" + "chatplus/store/vo" + "chatplus/utils" + "chatplus/utils/resp" + + "github.com/gin-gonic/gin" + "gorm.io/gorm" +) + +// MarkMapHandler 生成思维导图 +type MarkMapHandler struct { + BaseHandler +} + +func NewMarkMapHandler(app *core.AppServer, db *gorm.DB) *MarkMapHandler { + return &MarkMapHandler{BaseHandler: BaseHandler{App: app, DB: db}} +} + +// GetModel get the chat model for generating Markdown text +func (h *MarkMapHandler) GetModel(c *gin.Context) { + modelId := h.App.SysConfig.XMindModelId + session := h.DB.Session(&gorm.Session{}).Where("enabled", true) + if modelId > 0 { + session = session.Where("id", modelId) + } else { + session = session.Where("platform", types.OpenAI) + } + var chatModel model.ChatModel + res := session.First(&chatModel) + if res.Error != nil { + resp.ERROR(c, "No available AI model") + return + } + + var modelVo vo.ChatModel + err := utils.CopyObject(chatModel, &modelVo) + if err != nil { + resp.ERROR(c, "error with copy object: "+err.Error()) + return + } + + resp.SUCCESS(c, modelVo) +} diff --git a/api/main.go b/api/main.go index e5b8f3cf..4cc2d5c5 100644 --- a/api/main.go +++ b/api/main.go @@ -436,6 +436,11 @@ func main() { group := s.Engine.Group("/api/menu/") group.GET("list", h.List) }), + fx.Provide(handler.NewMarkMapHandler), + fx.Invoke(func(s *core.AppServer, h *handler.MarkMapHandler) { + group := s.Engine.Group("/api/markMap/") + group.GET("model", h.GetModel) + }), fx.Invoke(func(s *core.AppServer, db *gorm.DB) { go func() { err := s.Run(db) diff --git a/web/src/views/MarkMap.vue b/web/src/views/MarkMap.vue index 8e162683..32aedeb8 100644 --- a/web/src/views/MarkMap.vue +++ b/web/src/views/MarkMap.vue @@ -6,7 +6,7 @@

思维导图创作中心

- +
你的需求?
@@ -20,7 +20,31 @@
- 智能生成思维导图 + 请选择生成思维导图的AI模型 +
+
+ + + {{ item.name }} + {{ + item.power + }}算力 + + + +
+ +
+ 当前可用算力:{{ power }} +
+ +
+ 智能生成思维导图
@@ -28,7 +52,7 @@
直接生成(免费)
- -
- - - 每次生成消耗1算力 - - - 当前可用算力:{{ power }} - - -
- @@ -58,7 +70,7 @@

思维导图

- +
@@ -71,13 +83,16 @@ diff --git a/web/src/views/admin/SysConfig.vue b/web/src/views/admin/SysConfig.vue index 8d7c28b3..1dff1cdc 100644 --- a/web/src/views/admin/SysConfig.vue +++ b/web/src/views/admin/SysConfig.vue @@ -275,8 +275,8 @@ const activeName = ref('basic') const system = ref({models: []}) const loading = ref(true) const systemFormRef = ref(null) -const chatFormRef = ref(null) const models = ref([]) +const openAIModels = ref([]) const notice = ref("") onMounted(() => { @@ -295,6 +295,7 @@ onMounted(() => { httpGet('/api/admin/model/list').then(res => { models.value = res.data + openAIModels.value = models.value.filter(v => v.platform === "OpenAI") loading.value = false }).catch(e => { ElMessage.error("获取模型失败:" + e.message) @@ -320,19 +321,6 @@ const save = function (key) { }) } }) - } else if (key === 'chat') { - if (chat.value.context_deep % 2 !== 0) { - return ElMessage.error("会话上下文深度必须为偶数!") - } - chatFormRef.value.validate((valid) => { - if (valid) { - httpPost('/api/admin/config/update', {key: key, config: chat.value}).then(() => { - ElMessage.success("操作成功!") - }).catch(e => { - ElMessage.error("操作失败:" + e.message) - }) - } - }) } else if (key === 'notice') { httpPost('/api/admin/config/update', {key: key, config: {content: notice.value, updated: true}}).then(() => { ElMessage.success("操作成功!")