This commit is contained in:
Liang Ding 2023-03-22 09:23:58 +08:00
parent 59004a664f
commit 48b8fc536c
No known key found for this signature in database
GPG key ID: 136F30F901A2231D
7 changed files with 81 additions and 17 deletions

View file

@ -1,4 +1,14 @@
{ {
"apiKey": "API Key",
"apiKeyTip": "It is recommended to assign an API Key to SiYuan separately for subsequent management. If this item is left blank, AI-related functions will be disabled",
"apiTimeout": "Timeout",
"apiTimeoutTip": "The timeout period for initiating a request, unit: second",
"apiProxy": "Network Proxy",
"apiProxyTip": "The network proxy that initiates the request, such as <code class='fn__code'>socks://127.0.0.1:1080</code>",
"apiMaxTokens": "Maximum number of Tokens",
"apiMaxTokensTip": "The <code class='fn__code'>max_tokens</code> parameter passed in when requesting the API is used to control the length of the generated text",
"apiBaseURL": "API Base URL",
"apiBaseURLTip": "The base address of the request, such as <code class='fn__code'>https://api.openai.com/v1</code>",
"skip": "Skip", "skip": "Skip",
"reboot": "Reboot", "reboot": "Reboot",
"saveLayout": "Save Layout", "saveLayout": "Save Layout",

View file

@ -1,4 +1,14 @@
{ {
"apiKey": "Clave API",
"apiKeyTip": "Se recomienda asignar una clave API a SiYuan por separado para su posterior administración. Si este elemento se deja en blanco, las funciones relacionadas con la IA se desactivarán",
"apiTimeout": "Tiempo de espera",
"apiTimeoutTip": "El tiempo de espera para iniciar una solicitud, unidad: segundo",
"apiProxy": "Proxy web",
"apiProxyTip": "El proxy de red que inicia la solicitud, como <code class='fn__code'>socks://127.0.0.1:1080</code>",
"apiMaxTokens": "Número máximo de tokens",
"apiMaxTokensTip": "El parámetro <code class='fn__code'>max_tokens</code> que se pasa al solicitar la API se usa para controlar la longitud del texto generado",
"apiBaseURL": "URL base de la API",
"apiBaseURLTip": "La dirección base de la solicitud, como <code class='fn__code'>https://api.openai.com/v1</code>",
"skip": "barco", "skip": "barco",
"reboot": "Reiniciar", "reboot": "Reiniciar",
"saveLayout": "Guardar diseño", "saveLayout": "Guardar diseño",

View file

@ -1,4 +1,14 @@
{ {
"apiKey": "Clé API",
"apiKeyTip": "Il est recommandé d'attribuer une clé API à SiYuan séparément pour une gestion ultérieure. Si cet élément est laissé vide, les fonctions liées à l'IA seront désactivées",
"apiTimeout": "Délai d'expiration",
"apiTimeoutTip": "Le délai d'attente pour lancer une requête, unité : seconde",
"apiProxy": "Proxy Web",
"apiProxyTip": "Le proxy réseau qui lance la requête, tel que <code class='fn__code'>socks://127.0.0.1:1080</code>",
"apiMaxTokens": "Nombre maximum de jetons",
"apiMaxTokensTip": "Le paramètre <code class='fn__code'>max_tokens</code> transmis lors de la demande de l'API est utilisé pour contrôler la longueur du texte généré",
"apiBaseURL": "URL de base de l'API",
"apiBaseURLTip": "L'adresse de base de la requête, telle que <code class='fn__code'>https://api.openai.com/v1</code>",
"skip": "Navire", "skip": "Navire",
"reboot": "Redémarrer", "reboot": "Redémarrer",
"saveLayout": "Enregistrer la mise en page", "saveLayout": "Enregistrer la mise en page",

View file

@ -1,4 +1,14 @@
{ {
"apiKey": "API Key",
"apiKeyTip": "建議為思源單獨分配 API Key 以便於後續管理。該項留空則禁用 AI 相關功能",
"apiTimeout": "超時時間",
"apiTimeoutTip": "發起請求的超時時間,單位:秒",
"apiProxy": "網絡代理",
"apiProxyTip": "發起請求的網絡代理,如 <code class='fn__code'>socks://127.0.0.1:1080</code>",
"apiMaxTokens": "最大 Token 數",
"apiMaxTokensTip": "請求 API 時傳入的 <code class='fn__code'>max_tokens</code> 參數,用於控制生成的文本長度",
"apiBaseURL": "API 基礎地址",
"apiBaseURLTip": "發起請求的基礎地址,如 <code class='fn__code'>https://api.openai.com/v1</code>",
"skip": "跳過", "skip": "跳過",
"reboot": "重啟", "reboot": "重啟",
"saveLayout": "保存佈局", "saveLayout": "保存佈局",

View file

@ -1,4 +1,14 @@
{ {
"apiKey": "API Key",
"apiKeyTip": "建议为思源单独分配 API Key 以便于后续管理。该项留空则禁用 AI 相关功能",
"apiTimeout": "超时时间",
"apiTimeoutTip": "发起请求的超时时间,单位:秒",
"apiProxy": "网络代理",
"apiProxyTip": "发起请求的网络代理,如 <code class='fn__code'>socks://127.0.0.1:1080</code>",
"apiMaxTokens": "最大 Token 数",
"apiMaxTokensTip": "请求 API 时传入的 <code class='fn__code'>max_tokens</code> 参数,用于控制生成的文本长度",
"apiBaseURL": "API 基础地址",
"apiBaseURLTip": "发起请求的基础地址,如 <code class='fn__code'>https://api.openai.com/v1</code>",
"skip": "跳过", "skip": "跳过",
"reboot": "重启", "reboot": "重启",
"saveLayout": "保存布局", "saveLayout": "保存布局",

View file

@ -11,40 +11,40 @@ export const AI = {
<div data-type="openai"> <div data-type="openai">
<label class="fn__flex b3-label"> <label class="fn__flex b3-label">
<div class="fn__flex-1"> <div class="fn__flex-1">
APIKey ${window.siyuan.languages.apiKey}
<div class="b3-label__text">APIKeyAPIKeyAPIKey</div> <div class="b3-label__text">${window.siyuan.languages.apiKeyTip}</div>
</div> </div>
<span class="fn__space"></span> <span class="fn__space"></span>
<input class="b3-text-field fn__flex-center" id="apiKey" value="${window.siyuan.config.ai.openAI.apiKey}"/> <input class="b3-text-field fn__flex-center" id="apiKey" value="${window.siyuan.config.ai.openAI.apiKey}"/>
</label> </label>
<label class="fn__flex b3-label"> <label class="fn__flex b3-label">
<div class="fn__flex-1"> <div class="fn__flex-1">
APITimeout ${window.siyuan.languages.apiTimeout}
<div class="b3-label__text">APITimeoutAPITimeoutAPITimeout</div> <div class="b3-label__text">${window.siyuan.languages.apiTimeoutTip}</div>
</div> </div>
<span class="fn__space"></span> <span class="fn__space"></span>
<input class="b3-text-field fn__flex-center" type="number" step="1" min="1" id="openFilesUseCurrentTab" value="${window.siyuan.config.ai.openAI}"/> <input class="b3-text-field fn__flex-center" type="number" step="1" min="5" max="600" id="openFilesUseCurrentTab" value="${window.siyuan.config.ai.openAI.apiTimeout}"/>
</label> </label>
<label class="fn__flex b3-label"> <label class="fn__flex b3-label">
<div class="fn__flex-1"> <div class="fn__flex-1">
APIProxy ${window.siyuan.languages.apiMaxTokens}
<div class="b3-label__text">APIProxyAPIProxyAPIProxy</div> <div class="b3-label__text">${window.siyuan.languages.apiMaxTokensTip}</div>
</div>
<span class="fn__space"></span>
<input class="b3-text-field fn__flex-center" type="number" step="1" min="0" id="apiMaxTokens" max="4096" value="${window.siyuan.config.ai.openAI.apiMaxTokens}"/>
</label>
<label class="fn__flex b3-label">
<div class="fn__flex-1">
${window.siyuan.languages.apiProxy}
<div class="b3-label__text">${window.siyuan.languages.apiProxyTip}</div>
</div> </div>
<span class="fn__space"></span> <span class="fn__space"></span>
<input class="b3-text-field fn__flex-center" id="apiProxy" value="${window.siyuan.config.ai.openAI.apiProxy}"/> <input class="b3-text-field fn__flex-center" id="apiProxy" value="${window.siyuan.config.ai.openAI.apiProxy}"/>
</label> </label>
<label class="fn__flex b3-label"> <label class="fn__flex b3-label">
<div class="fn__flex-1"> <div class="fn__flex-1">
APIMaxTokens ${window.siyuan.languages.apiBaseURL}
<div class="b3-label__text">APIMaxTokensAPIMaxTokensAPIMaxTokens</div> <div class="b3-label__text">${window.siyuan.languages.apiBaseURLTip}</div>
</div>
<span class="fn__space"></span>
<input class="b3-text-field fn__flex-center" type="number" step="1" min="0" id="apiMaxTokens" value="${window.siyuan.config.ai.openAI.apiMaxTokens}"/>
</label>
<label class="fn__flex b3-label">
<div class="fn__flex-1">
APIBaseURL
<div class="b3-label__text">APIBaseURLAPIBaseURLAPIBaseURL</div>
</div> </div>
<span class="fn__space"></span> <span class="fn__space"></span>
<input class="b3-text-field fn__flex-center" id="apiBaseURL" value="${window.siyuan.config.ai.openAI.apiBaseURL}"/> <input class="b3-text-field fn__flex-center" id="apiBaseURL" value="${window.siyuan.config.ai.openAI.apiBaseURL}"/>

View file

@ -52,6 +52,20 @@ func setAI(c *gin.Context) {
return return
} }
if 5 > ai.OpenAI.APITimeout {
ai.OpenAI.APITimeout = 5
}
if 600 < ai.OpenAI.APITimeout {
ai.OpenAI.APITimeout = 600
}
if 0 > ai.OpenAI.APIMaxTokens {
ai.OpenAI.APIMaxTokens = 0
}
if 4096 < ai.OpenAI.APIMaxTokens {
ai.OpenAI.APIMaxTokens = 4096
}
model.Conf.AI = ai model.Conf.AI = ai
model.Conf.Save() model.Conf.Save()