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
59004a664f
commit
48b8fc536c
7 changed files with 81 additions and 17 deletions
|
|
@ -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",
|
||||||
|
|
|
||||||
|
|
@ -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",
|
||||||
|
|
|
||||||
|
|
@ -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",
|
||||||
|
|
|
||||||
|
|
@ -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": "保存佈局",
|
||||||
|
|
|
||||||
|
|
@ -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": "保存布局",
|
||||||
|
|
|
||||||
|
|
@ -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}"/>
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue