This commit is contained in:
Liang Ding 2023-03-20 11:09:13 +08:00
parent 7ad5cdd067
commit b595357610
No known key found for this signature in database
GPG key ID: 136F30F901A2231D
2 changed files with 73 additions and 0 deletions

67
kernel/conf/ai.go Normal file
View 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}
}

View file

@ -70,6 +70,7 @@ type AppConf struct {
Sync *conf.Sync `json:"sync"` // 同步配置
Search *conf.Search `json:"search"` // 搜索配置
Flashcard *conf.Flashcard `json:"flashcard"` // 闪卡配置
AI *conf.AI `json:"ai"` // 人工智能配置
Stat *conf.Stat `json:"stat"` // 统计
Api *conf.API `json:"api"` // API
Repo *conf.Repo `json:"repo"` // 数据仓库
@ -318,6 +319,11 @@ func InitConf() {
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
if "" != util.AccessAuthCode {