diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 31c117396..ef9f6294a 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -1,4 +1,16 @@ { + "aiContinueWrite": "Continue writing", + "aiTranslate": "Translate", + "aiExtractSummary": "Extract summary", + "aiTranslate_zh_CN": "Chinese", + "aiTranslate_ja_JP": "Japanese", + "aiTranslate_ko_KR": "Korean", + "aiTranslate_en_US": "English", + "aiTranslate_es_ES": "Spanish", + "aiTranslate_fr_FR": "French", + "aiTranslate_de_DE": "German", + "aiBrainStorm": "Brainstorm", + "aiFixGrammarSpell": "Fix grammar and spelling", "attributeView": "Attribute View", "mgmt": "Management", "spaceRepetition": "Spaced Repetition", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index fcbe99967..1de402117 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -1,4 +1,16 @@ { + "aiContinueWrite": "Continuar escribiendo", + "aiTranslate": "Traducir", + "aiExtractSummary": "Extraer resumen", + "aiTranslate_zh_CN": "Chino", + "aiTranslate_ja_JP": "Japonés", + "aiTranslate_ko_KR": "Coreano", + "aiTranslate_en_US": "Inglés", + "aiTranslate_es_ES": "Español", + "aiTranslate_fr_FR": "Francés", + "aiTranslate_de_DE": "Alemán", + "aiBrainStorm": "Lluvia de ideas", + "aiFixGrammarSpell": "Corregir gramática y ortografía", "attributeView": "Vista de atributos", "mgmt": "Administración", "spaceRepetition": "Repetición Espaciada", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index 5296617c9..0bf630c7d 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -1,4 +1,16 @@ { + "aiContinueWrite": "Continuer à écrire", + "aiTranslate": "Traduire", + "aiExtractSummary": "Résumé de l'extrait", + "aiTranslate_zh_CN": "Chinois", + "aiTranslate_ja_JP": "Japonais", + "aiTranslate_ko_KR": "Coréen", + "aiTranslate_en_US": "Anglais", + "aiTranslate_es_ES": "Espagnol", + "aiTranslate_fr_FR": "Français", + "aiTranslate_de_DE": "Allemand", + "aiBrainStorm": "Remue-méninges", + "aiFixGrammarSpell": "Corrige la grammaire et l'orthographe", "attributeView": "Vista de atributos", "mgmt": "Gestion", "spaceRepetition": "Répétition espacée", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 7d7eb260f..8403ae9d1 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -1,4 +1,16 @@ { + "aiContinueWrite": "續寫", + "aiTranslate": "翻譯", + "aiExtractSummary": "提取摘要", + "aiTranslate_zh_CN": "中文", + "aiTranslate_ja_JP": "日文", + "aiTranslate_ko_KR": "韓文", + "aiTranslate_en_US": "英文", + "aiTranslate_es_ES": "西班牙文", + "aiTranslate_fr_FR": "法文", + "aiTranslate_de_DE": "德文", + "aiBrainStorm": "頭腦風暴", + "aiFixGrammarSpell": "修正語法和拼寫", "attributeView": "屬性視圖", "mgmt": "管理", "spaceRepetition": "間隔重複", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 3f131c84c..f0a8ca466 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -1,4 +1,16 @@ { + "aiContinueWrite": "续写", + "aiTranslate": "翻译", + "aiExtractSummary": "提取摘要", + "aiTranslate_zh_CN": "中文", + "aiTranslate_ja_JP": "日文", + "aiTranslate_ko_KR": "韩文", + "aiTranslate_en_US": "英文", + "aiTranslate_es_ES": "西班牙文", + "aiTranslate_fr_FR": "法文", + "aiTranslate_de_DE": "德文", + "aiBrainStorm": "头脑风暴", + "aiFixGrammarSpell": "修正语法和拼写", "attributeView": "属性视图", "mgmt": "管理", "spaceRepetition": "间隔重复", diff --git a/kernel/api/ai.go b/kernel/api/ai.go index 13717e233..b0a49824c 100644 --- a/kernel/api/ai.go +++ b/kernel/api/ai.go @@ -89,3 +89,37 @@ func chatGPTSummary(c *gin.Context) { } ret.Data = model.ChatGPTSummary(ids) } + +func chatGPTBrainStorm(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + arg, ok := util.JsonArg(c, ret) + if !ok { + return + } + + idsArg := arg["ids"].([]interface{}) + var ids []string + for _, id := range idsArg { + ids = append(ids, id.(string)) + } + ret.Data = model.ChatGPTBrainStorm(ids) +} + +func chatGPTFixGrammarSpell(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + arg, ok := util.JsonArg(c, ret) + if !ok { + return + } + + idsArg := arg["ids"].([]interface{}) + var ids []string + for _, id := range idsArg { + ids = append(ids, id.(string)) + } + ret.Data = model.ChatGPTFixGrammarSpell(ids) +} diff --git a/kernel/api/router.go b/kernel/api/router.go index de415a515..9c10c5883 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -332,4 +332,6 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/ai/chatGPTContinueWriteBlocks", model.CheckAuth, chatGPTContinueWriteBlocks) ginServer.Handle("POST", "/api/ai/chatGPTTranslate", model.CheckAuth, chatGPTTranslate) ginServer.Handle("POST", "/api/ai/chatGPTSummary", model.CheckAuth, chatGPTSummary) + ginServer.Handle("POST", "/api/ai/chatGPTBrainStorm", model.CheckAuth, chatGPTBrainStorm) + ginServer.Handle("POST", "/api/ai/chatGPTFixGrammarSpell", model.CheckAuth, chatGPTFixGrammarSpell) } diff --git a/kernel/model/ai.go b/kernel/model/ai.go index bc48dc5a9..dabe796f7 100644 --- a/kernel/model/ai.go +++ b/kernel/model/ai.go @@ -25,6 +25,26 @@ import ( "github.com/siyuan-note/siyuan/kernel/util" ) +func ChatGPTFixGrammarSpell(ids []string) (ret string) { + if !isOpenAIAPIEnabled() { + return + } + + msg := getBlocksContent(ids) + ret = util.ChatGPTFixGrammarSpell(msg, Conf.Lang) + return +} + +func ChatGPTBrainStorm(ids []string) (ret string) { + if !isOpenAIAPIEnabled() { + return + } + + msg := getBlocksContent(ids) + ret = util.ChatGPTBrainStorm(msg, Conf.Lang) + return +} + func ChatGPTSummary(ids []string) (ret string) { if !isOpenAIAPIEnabled() { return diff --git a/kernel/util/openai.go b/kernel/util/openai.go index ca98d6528..17775ea11 100644 --- a/kernel/util/openai.go +++ b/kernel/util/openai.go @@ -57,6 +57,18 @@ func ChatGPTSummary(msg string, lang string) (ret string) { return } +func ChatGPTBrainStorm(msg string, lang string) (ret string) { + msg = "Brainstorm ideas as follows, the result is in {" + lang + "}:\n" + msg + ret, _ = ChatGPTContinueWrite(msg, nil) + return +} + +func ChatGPTFixGrammarSpell(msg string, lang string) (ret string) { + msg = "Fix grammar and spelling as follows, the result is in {" + lang + "}:\n" + msg + ret, _ = ChatGPTContinueWrite(msg, nil) + return +} + func ChatGPTContinueWrite(msg string, contextMsgs []string) (ret string, retContextMsgs []string) { if "" == OpenAIAPIKey { return