mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-17 23:20:13 +01:00
🎨 支持应用内配置人工智能 https://github.com/siyuan-note/siyuan/issues/7714
This commit is contained in:
parent
7ad5cdd067
commit
b595357610
2 changed files with 73 additions and 0 deletions
67
kernel/conf/ai.go
Normal file
67
kernel/conf/ai.go
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
// 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 conf
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
)
|
||||||
|
|
||||||
|
type AI struct {
|
||||||
|
OpenAI *OpenAI `json:"openAI"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type OpenAI struct {
|
||||||
|
APIKey string `json:"apiKey"`
|
||||||
|
APITimeout int `json:"apiTimeout"`
|
||||||
|
APIProxy string `json:"apiProxy"`
|
||||||
|
APIMaxTokens int `json:"apiMaxTokens"`
|
||||||
|
APIBaseURL string `json:"apiBaseURL"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewAI() *AI {
|
||||||
|
openAI := &OpenAI{
|
||||||
|
APITimeout: 30,
|
||||||
|
APIBaseURL: "https://api.openai.com/v1",
|
||||||
|
}
|
||||||
|
|
||||||
|
openAI.APIKey = os.Getenv("SIYUAN_OPENAI_API_KEY")
|
||||||
|
|
||||||
|
if timeout := os.Getenv("SIYUAN_OPENAI_API_TIMEOUT"); "" != timeout {
|
||||||
|
timeoutInt, err := strconv.Atoi(timeout)
|
||||||
|
if nil == err {
|
||||||
|
openAI.APITimeout = timeoutInt
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if proxy := os.Getenv("SIYUAN_OPENAI_API_PROXY"); "" != proxy {
|
||||||
|
openAI.APIProxy = proxy
|
||||||
|
}
|
||||||
|
|
||||||
|
if maxTokens := os.Getenv("SIYUAN_OPENAI_API_MAX_TOKENS"); "" != maxTokens {
|
||||||
|
maxTokensInt, err := strconv.Atoi(maxTokens)
|
||||||
|
if nil == err {
|
||||||
|
openAI.APIMaxTokens = maxTokensInt
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if baseURL := os.Getenv("SIYUAN_OPENAI_API_BASE_URL"); "" != baseURL {
|
||||||
|
openAI.APIBaseURL = baseURL
|
||||||
|
}
|
||||||
|
|
||||||
|
return &AI{OpenAI: openAI}
|
||||||
|
}
|
||||||
|
|
@ -70,6 +70,7 @@ type AppConf struct {
|
||||||
Sync *conf.Sync `json:"sync"` // 同步配置
|
Sync *conf.Sync `json:"sync"` // 同步配置
|
||||||
Search *conf.Search `json:"search"` // 搜索配置
|
Search *conf.Search `json:"search"` // 搜索配置
|
||||||
Flashcard *conf.Flashcard `json:"flashcard"` // 闪卡配置
|
Flashcard *conf.Flashcard `json:"flashcard"` // 闪卡配置
|
||||||
|
AI *conf.AI `json:"ai"` // 人工智能配置
|
||||||
Stat *conf.Stat `json:"stat"` // 统计
|
Stat *conf.Stat `json:"stat"` // 统计
|
||||||
Api *conf.API `json:"api"` // API
|
Api *conf.API `json:"api"` // API
|
||||||
Repo *conf.Repo `json:"repo"` // 数据仓库
|
Repo *conf.Repo `json:"repo"` // 数据仓库
|
||||||
|
|
@ -318,6 +319,11 @@ func InitConf() {
|
||||||
Conf.Flashcard = conf.NewFlashcard()
|
Conf.Flashcard = conf.NewFlashcard()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO 支持应用内配置人工智能 https://github.com/siyuan-note/siyuan/issues/7714
|
||||||
|
//if nil == Conf.AI {
|
||||||
|
// Conf.AI = conf.NewAI()
|
||||||
|
//}
|
||||||
|
|
||||||
Conf.ReadOnly = util.ReadOnly
|
Conf.ReadOnly = util.ReadOnly
|
||||||
|
|
||||||
if "" != util.AccessAuthCode {
|
if "" != util.AccessAuthCode {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue