Explorar el Código

:art: 块级加入 `人工智能` https://github.com/siyuan-note/siyuan/issues/7566

Liang Ding hace 2 años
padre
commit
436f487171
Se han modificado 4 ficheros con 59 adiciones y 3 borrados
  1. 15 3
      kernel/api/ai.go
  2. 1 0
      kernel/api/router.go
  3. 41 0
      kernel/model/ai.go
  4. 2 0
      kernel/util/openai.go

+ 15 - 3
kernel/api/ai.go

@@ -35,10 +35,22 @@ func chatGPT(c *gin.Context) {
 	}
 
 	msg := arg["msg"].(string)
-	if "" == util.OpenAIAPIKey {
-		util.PushMsg(model.Conf.Language(193), 5000)
+	ret.Data = model.ChatGPT(msg)
+}
+
+func chatGPTContinueWriteBlocks(c *gin.Context) {
+	ret := gulu.Ret.NewResult()
+	defer c.JSON(http.StatusOK, ret)
+
+	arg, ok := util.JsonArg(c, ret)
+	if !ok {
 		return
 	}
 
-	ret.Data = util.ChatGPT(msg)
+	idsArg := arg["ids"].([]interface{})
+	var ids []string
+	for _, id := range idsArg {
+		ids = append(ids, id.(string))
+	}
+	ret.Data = model.ChatGPTContinueWriteBlocks(ids)
 }

+ 1 - 0
kernel/api/router.go

@@ -329,4 +329,5 @@ func ServeAPI(ginServer *gin.Engine) {
 	ginServer.Handle("POST", "/api/av/renderAttributeView", model.CheckAuth, renderAttributeView)
 
 	ginServer.Handle("POST", "/api/ai/chatGPT", model.CheckAuth, chatGPT)
+	ginServer.Handle("POST", "/api/ai/chatGPTContinueWriteBlocks", model.CheckAuth, chatGPTContinueWriteBlocks)
 }

+ 41 - 0
kernel/model/ai.go

@@ -0,0 +1,41 @@
+// SiYuan - Build Your Eternal Digital Garden
+// Copyright (c) 2020-present, b3log.org
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+package model
+
+import (
+	"bytes"
+
+	"github.com/siyuan-note/siyuan/kernel/sql"
+	"github.com/siyuan-note/siyuan/kernel/util"
+)
+
+func ChatGPTContinueWriteBlocks(ids []string) (ret string) {
+	sqlBlocks := sql.GetBlocks(ids)
+
+	buf := bytes.Buffer{}
+	for _, sqlBlock := range sqlBlocks {
+		buf.WriteString(sqlBlock.Content)
+		buf.WriteString("\n\n")
+	}
+
+	msg := buf.String()
+	ret, _ = util.ChatGPTContinueWrite(msg, nil)
+	return
+}
+func ChatGPT(msg string) (ret string) {
+	return util.ChatGPT(msg)
+}

+ 2 - 0
kernel/util/openai.go

@@ -19,6 +19,7 @@ package util
 import (
 	"bytes"
 	"context"
+	"github.com/siyuan-note/siyuan/kernel/model"
 	"net/http"
 	"net/url"
 	"os"
@@ -47,6 +48,7 @@ func ChatGPT(msg string) (ret string) {
 
 func ChatGPTContinueWrite(msg string, contextMsgs []string) (ret string, retContextMsgs []string) {
 	if "" == OpenAIAPIKey {
+		PushMsg(model.Conf.Language(193), 5000)
 		return
 	}