Merge branch 'staging' into ffmpeg-videobg
| @@ -48,6 +48,7 @@ | ||
| 48 | 48 | "cookie-parser": "^1.4.6", |
| 49 | 49 | "cookie-session": "^2.1.0", |
| 50 | 50 | "cors": "^2.8.5", |
| 51 | + "crc": "^4.3.2", | |
| 51 | 52 | "csrf-sync": "^4.0.3", |
| 52 | 53 | "diff-match-patch": "^1.0.5", |
| 53 | 54 | "dompurify": "^3.2.4", |
| @@ -76,7 +77,6 @@ | ||
| 76 | 77 | "node-persist": "^4.0.4", |
| 77 | 78 | "open": "^8.4.2", |
| 78 | 79 | "png-chunk-text": "^1.0.0", |
| 79 | - "png-chunks-encode": "^1.0.0", | |
| 80 | 80 | "png-chunks-extract": "^1.0.0", |
| 81 | 81 | "proxy-agent": "^6.5.0", |
| 82 | 82 | "rate-limiter-flexible": "^5.0.5", |
| @@ -121,7 +121,6 @@ | ||
| 121 | 121 | "@types/node": "^18.19.80", |
| 122 | 122 | "@types/node-persist": "^3.1.8", |
| 123 | 123 | "@types/png-chunk-text": "^1.0.3", |
| 124 | - "@types/png-chunks-encode": "^1.0.2", | |
| 125 | 124 | "@types/png-chunks-extract": "^1.0.2", |
| 126 | 125 | "@types/response-time": "^2.3.8", |
| 127 | 126 | "@types/select2": "^4.0.63", |
| @@ -2033,13 +2032,6 @@ | ||
| 2033 | 2032 | "dev": true, |
| 2034 | 2033 | "license": "MIT" |
| 2035 | 2034 | }, |
| 2036 | - "node_modules/@types/png-chunks-encode": { | |
| 2037 | - "version": "1.0.2", | |
| 2038 | - "resolved": "https://registry.npmjs.org/@types/png-chunks-encode/-/png-chunks-encode-1.0.2.tgz", | |
| 2039 | - "integrity": "sha512-Dxn0aXEcSg1wVeHjvNlygm/+fKBDzWMCdxJYhjGUTeefFW/jYxWcrg+W7ppLBfH44iJMqeVBHtHBwtYQUeYvgw==", | |
| 2040 | - "dev": true, | |
| 2041 | - "license": "MIT" | |
| 2042 | - }, | |
| 2043 | 2035 | "node_modules/@types/png-chunks-extract": { |
| 2044 | 2036 | "version": "1.0.2", |
| 2045 | 2037 | "resolved": "https://registry.npmjs.org/@types/png-chunks-extract/-/png-chunks-extract-1.0.2.tgz", |
| @@ -3542,6 +3534,23 @@ | ||
| 3542 | 3534 | "node": ">= 0.10" |
| 3543 | 3535 | } |
| 3544 | 3536 | }, |
| 3537 | + "node_modules/crc": { | |
| 3538 | + "version": "4.3.2", | |
| 3539 | + "resolved": "https://registry.npmjs.org/crc/-/crc-4.3.2.tgz", | |
| 3540 | + "integrity": "sha512-uGDHf4KLLh2zsHa8D8hIQ1H/HtFQhyHrc0uhHBcoKGol/Xnb+MPYfUMw7cvON6ze/GUESTudKayDcJC5HnJv1A==", | |
| 3541 | + "license": "MIT", | |
| 3542 | + "engines": { | |
| 3543 | + "node": ">=12" | |
| 3544 | + }, | |
| 3545 | + "peerDependencies": { | |
| 3546 | + "buffer": ">=6.0.3" | |
| 3547 | + }, | |
| 3548 | + "peerDependenciesMeta": { | |
| 3549 | + "buffer": { | |
| 3550 | + "optional": true | |
| 3551 | + } | |
| 3552 | + } | |
| 3553 | + }, | |
| 3545 | 3554 | "node_modules/crc-32": { |
| 3546 | 3555 | "version": "0.3.0", |
| 3547 | 3556 | "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-0.3.0.tgz", |
| @@ -6686,16 +6695,6 @@ | ||
| 6686 | 6695 | "integrity": "sha512-DEROKU3SkkLGWNMzru3xPVgxyd48UGuMSZvioErCure6yhOc/pRH2ZV+SEn7nmaf7WNf3NdIpH+UTrRdKyq9Lw==", |
| 6687 | 6696 | "license": "MIT" |
| 6688 | 6697 | }, |
| 6689 | - "node_modules/png-chunks-encode": { | |
| 6690 | - "version": "1.0.0", | |
| 6691 | - "resolved": "https://registry.npmjs.org/png-chunks-encode/-/png-chunks-encode-1.0.0.tgz", | |
| 6692 | - "integrity": "sha512-J1jcHgbQRsIIgx5wxW9UmCymV3wwn4qCCJl6KYgEU/yHCh/L2Mwq/nMOkRPtmV79TLxRZj5w3tH69pvygFkDqA==", | |
| 6693 | - "license": "MIT", | |
| 6694 | - "dependencies": { | |
| 6695 | - "crc-32": "^0.3.0", | |
| 6696 | - "sliced": "^1.0.1" | |
| 6697 | - } | |
| 6698 | - }, | |
| 6699 | 6698 | "node_modules/png-chunks-extract": { |
| 6700 | 6699 | "version": "1.0.0", |
| 6701 | 6700 | "resolved": "https://registry.npmjs.org/png-chunks-extract/-/png-chunks-extract-1.0.0.tgz", |
| @@ -7532,12 +7531,6 @@ | ||
| 7532 | 7531 | "dev": true, |
| 7533 | 7532 | "license": "ISC" |
| 7534 | 7533 | }, |
| 7535 | - "node_modules/sliced": { | |
| 7536 | - "version": "1.0.1", | |
| 7537 | - "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", | |
| 7538 | - "integrity": "sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==", | |
| 7539 | - "license": "MIT" | |
| 7540 | - }, | |
| 7541 | 7534 | "node_modules/slidetoggle": { |
| 7542 | 7535 | "version": "4.0.0", |
| 7543 | 7536 | "resolved": "https://registry.npmjs.org/slidetoggle/-/slidetoggle-4.0.0.tgz", |
| @@ -38,6 +38,7 @@ | ||
| 38 | 38 | "cookie-parser": "^1.4.6", |
| 39 | 39 | "cookie-session": "^2.1.0", |
| 40 | 40 | "cors": "^2.8.5", |
| 41 | + "crc": "^4.3.2", | |
| 41 | 42 | "csrf-sync": "^4.0.3", |
| 42 | 43 | "diff-match-patch": "^1.0.5", |
| 43 | 44 | "dompurify": "^3.2.4", |
| @@ -66,7 +67,6 @@ | ||
| 66 | 67 | "node-persist": "^4.0.4", |
| 67 | 68 | "open": "^8.4.2", |
| 68 | 69 | "png-chunk-text": "^1.0.0", |
| 69 | - "png-chunks-encode": "^1.0.0", | |
| 70 | 70 | "png-chunks-extract": "^1.0.0", |
| 71 | 71 | "proxy-agent": "^6.5.0", |
| 72 | 72 | "rate-limiter-flexible": "^5.0.5", |
| @@ -151,7 +151,6 @@ | ||
| 151 | 151 | "@types/node": "^18.19.80", |
| 152 | 152 | "@types/node-persist": "^3.1.8", |
| 153 | 153 | "@types/png-chunk-text": "^1.0.3", |
| 154 | - "@types/png-chunks-encode": "^1.0.2", | |
| 155 | 154 | "@types/png-chunks-extract": "^1.0.2", |
| 156 | 155 | "@types/response-time": "^2.3.8", |
| 157 | 156 | "@types/select2": "^4.0.63", |
| @@ -2432,7 +2432,7 @@ | ||
| 2432 | 2432 | </div> |
| 2433 | 2433 | <div class="flex1"> |
| 2434 | 2434 | <h4 data-i18n="Server url">Server URL</h4> |
| 2435 | 2435 | <small data-i18n="Example: http://127.0.0.1:5000">Example: http://127.0.0.1:5000</small> |
| 2436 | 2436 | <input id="generic_api_url_text" name="generic_api_url" class="text_pole wide100p" value="" autocomplete="off" data-server-history="generic"> |
| 2437 | 2437 | </div> |
| 2438 | 2438 | <datalist id="generic_model_fill"></datalist> |
| @@ -2461,7 +2461,7 @@ | ||
| 2461 | 2461 | </div> |
| 2462 | 2462 | <div class="flex1"> |
| 2463 | 2463 | <h4 data-i18n="Server url">Server URL</h4> |
| 2464 | 2464 | <small data-i18n="Example: http://127.0.0.1:5000">Example: http://127.0.0.1:5000</small> |
| 2465 | 2465 | <input id="textgenerationwebui_api_url_text" name="textgenerationwebui_api_url" class="text_pole wide100p" value="" autocomplete="off" data-server-history="ooba_blocking"> |
| 2466 | 2466 | </div> |
| 2467 | 2467 | <input id="custom_model_textgenerationwebui" class="text_pole wide100p" placeholder="Custom model (optional)" data-i18n="[placeholder]Custom model (optional)" type="text"> |
| @@ -2534,7 +2534,7 @@ | ||
| 2534 | 2534 | </div> |
| 2535 | 2535 | <div class="flex1"> |
| 2536 | 2536 | <h4 data-i18n="API url">API URL</h4> |
| 2537 | 2537 | <small data-i18n="Example: http://127.0.0.1:8000">Example: http://127.0.0.1:8000</small> |
| 2538 | 2538 | <input id="vllm_api_url_text" class="text_pole wide100p" value="" autocomplete="off" data-server-history="vllm"> |
| 2539 | 2539 | </div> |
| 2540 | 2540 | <div> |
| @@ -2580,7 +2580,7 @@ | ||
| 2580 | 2580 | </div> |
| 2581 | 2581 | <div class="flex1"> |
| 2582 | 2582 | <h4 data-i18n="API url">API URL</h4> |
| 2583 | 2583 | <small data-i18n="Example: http://127.0.0.1:5000">Example: http://127.0.0.1:5000</small> |
| 2584 | 2584 | <input id="aphrodite_api_url_text" class="text_pole wide100p" value="" autocomplete="off" data-server-history="aphrodite"> |
| 2585 | 2585 | </div> |
| 2586 | 2586 | <div> |
| @@ -2609,7 +2609,7 @@ | ||
| 2609 | 2609 | </div> |
| 2610 | 2610 | <div class="flex1"> |
| 2611 | 2611 | <h4 data-i18n="API url">API URL</h4> |
| 2612 | 2612 | <small data-i18n="Example: http://127.0.0.1:8080">Example: http://127.0.0.1:8080</small> |
| 2613 | 2613 | <input id="llamacpp_api_url_text" class="text_pole wide100p" value="" autocomplete="off" data-server-history="llamacpp"> |
| 2614 | 2614 | </div> |
| 2615 | 2615 | </div> |
| @@ -2621,7 +2621,7 @@ | ||
| 2621 | 2621 | </div> |
| 2622 | 2622 | <div class="flex1"> |
| 2623 | 2623 | <h4 data-i18n="API url">API URL</h4> |
| 2624 | 2624 | <small data-i18n="Example: http://127.0.0.1:11434">Example: http://127.0.0.1:11434</small> |
| 2625 | 2625 | <input id="ollama_api_url_text" class="text_pole wide100p" value="" autocomplete="off" data-server-history="ollama"> |
| 2626 | 2626 | </div> |
| 2627 | 2627 | <div class="flex1"> |
| @@ -2656,7 +2656,7 @@ | ||
| 2656 | 2656 | </div> |
| 2657 | 2657 | <div class="flex1"> |
| 2658 | 2658 | <h4 data-i18n="API url">API URL</h4> |
| 2659 | 2659 | <small data-i18n="Example: http://127.0.0.1:5000">Example: http://127.0.0.1:5000</small> |
| 2660 | 2660 | <input id="tabby_api_url_text" class="text_pole wide100p" value="" autocomplete="off" data-server-history="tabby"> |
| 2661 | 2661 | </div> |
| 2662 | 2662 | <div class="flex1"> |
| @@ -2708,7 +2708,7 @@ | ||
| 2708 | 2708 | </div> |
| 2709 | 2709 | <div class="flex1"> |
| 2710 | 2710 | <h4 data-i18n="API url">API URL</h4> |
| 2711 | 2711 | <small data-i18n="Example: http://127.0.0.1:5001">Example: http://127.0.0.1:5001</small> |
| 2712 | 2712 | <input id="koboldcpp_api_url_text" class="text_pole wide100p" value="" autocomplete="off" data-server-history="koboldcpp"> |
| 2713 | 2713 | </div> |
| 2714 | 2714 | </div> |
| @@ -3140,6 +3140,7 @@ | ||
| 3140 | 3140 | <option value="gemma-3-27b-it">Gemma 3 27B</option> |
| 3141 | 3141 | </optgroup> |
| 3142 | 3142 | <optgroup label="Subversions"> |
| 3143 | + <option value="gemini-2.5-pro-preview-03-25">Gemini 2.5 Pro Preview 2025-03-25</option> | |
| 3143 | 3144 | <option value="gemini-2.5-pro-exp-03-25">Gemini 2.5 Pro Experimental 2025-03-25</option> |
| 3144 | 3145 | <option value="gemini-2.0-pro-exp">Gemini 2.0 Pro Experimental</option> |
| 3145 | 3146 | <option value="gemini-2.0-pro-exp-02-05">Gemini 2.0 Pro Experimental 2025-02-05</option> |
| @@ -3248,28 +3249,29 @@ | ||
| 3248 | 3249 | <option value="qwen-2.5-32b">qwen-2.5-32b</option> |
| 3249 | 3250 | <option value="qwen-2.5-coder-32b">qwen-2.5-coder-32b</option> |
| 3250 | 3251 | </optgroup> |
| 3251 | 3252 | <optgroup label="DeepSeek / Alibaba Cloud"> |
| 3252 | 3253 | <option value="deepseek-r1-distill-qwen-32b">deepseek-r1-distill-qwen-32b</option> |
| 3253 | - </optgroup> | |
| 3254 | - <optgroup label="DeepSeek / Meta"> | |
| 3255 | 3254 | <option value="deepseek-r1-distill-llama-70b">deepseek-r1-distill-llama-70b</option> |
| 3256 | 3255 | </optgroup> |
| 3257 | 3256 | <optgroup label="Google"> |
| 3258 | 3257 | <option value="gemma2-9b-it">gemma2-9b-it</option> |
| 3259 | 3258 | </optgroup> |
| 3260 | 3259 | <optgroup label="Meta"> |
| 3261 | 3260 | <option value="meta-llama/llama-3.14-8bscout-instant17b-16e-instruct">meta-llama/llama-3.14-8bscout-instant 17b-16e-instruct</option> |
| 3261 | + <option value="meta-llama/llama-4-maverick-17b-128e-instruct">meta-llama/llama-4-maverick-17b-128e-instruct</option> | |
| 3262 | + <option value="llama-3.1-8b-instant">llama-3.1-8b-instant</option> | |
| 3262 | 3263 | <option value="llama-3.2-11b-vision-preview">llama-3.2-11b-vision-preview </option> |
| 3263 | 3264 | <option value="llama-3.2-1b-preview">llama-3.2-1b-preview </option> |
| 3264 | 3265 | <option value="llama-3.2-3b-preview">llama-3.2-3b-preview </option> |
| 3265 | 3266 | <option value="llama-3.2-90b-vision-preview">llama-3.2-90b-vision-preview </option> |
| 3266 | 3267 | <option value="llama-3.3-70b-specdec">llama-3.3-70b-specdec </option> |
| 3267 | 3268 | <option value="llama-3.3-70b-versatile">llama-3.3-70b-versatile </option> |
| 3268 | 3269 | <option value="llama-guard-3-8b">llama-guard-3-8b </option> |
| 3269 | 3270 | <option value="llama3-70b-8192">llama3-70b-8192 </option> |
| 3270 | 3271 | <option value="llama3-8b-8192">llama3-8b-8192 </option> |
| 3271 | 3272 | </optgroup> |
| 3272 | 3273 | <optgroup label="Mistral AI"> |
| 3274 | + <option value="mistral-saba-24b">mistral-saba-24b</option> | |
| 3273 | 3275 | <option value="mixtral-8x7b-32768">mixtral-8x7b-32768</option> |
| 3274 | 3276 | </optgroup> |
| 3275 | 3277 | </select> |
| @@ -6450,7 +6452,7 @@ | ||
| 6450 | 6452 | <div class="mes_text"></div> |
| 6451 | 6453 | <div class="mes_img_container"> |
| 6452 | 6454 | <div class="mes_img_controls"> |
| 6453 | 6455 | <div title="EnlargeExpand and zoom" class="right_menu_button fa-lg fa-solid fa-magnifying-glass mes_img_enlarge" data-i18n="[title]EnlargeExpand and zoom"></div> |
| 6454 | 6456 | <div title="Caption" class="right_menu_button fa-lg fa-solid fa-envelope-open-text mes_img_caption" data-i18n="[title]Caption"></div> |
| 6455 | 6457 | <div title="Delete" class="right_menu_button fa-lg fa-solid fa-trash-can mes_img_delete" data-i18n="[title]Delete"></div> |
| 6456 | 6458 | </div> |
| @@ -318,23 +318,23 @@ | ||
| 318 | 318 | "flag": "وضع علامة", |
| 319 | 319 | "API key (optional)": "مفتاح API (اختياري)", |
| 320 | 320 | "Server url": "رابط الخادم", |
| 321 | 321 | "Example: http://127.0.0.1:5000": "مثال: http://127.0.0.1:5000", |
| 322 | 322 | "Custom model (optional)": "نموذج مخصص (اختياري)", |
| 323 | 323 | "vllm-project/vllm": "vllm-project/vllm (وضع غلاف OpenAI API)", |
| 324 | 324 | "vLLM API key": "مفتاح واجهة برمجة التطبيقات vLLM", |
| 325 | 325 | "Example: http://127.0.0.1:8000": "مثال: http://127.0.0.1:8000", |
| 326 | 326 | "vLLM Model": "نموذج vLLM", |
| 327 | 327 | "PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (وضع التغليف لواجهة برمجة التطبيقات OpenAI)", |
| 328 | 328 | "Aphrodite API key": "مفتاح واجهة برمجة التطبيقات Aphrodite", |
| 329 | 329 | "Aphrodite Model": "نموذج أفروديت", |
| 330 | 330 | "ggerganov/llama.cpp": "ggerganov/llama.cpp (خادم إخراج)", |
| 331 | 331 | "Example: http://127.0.0.1:8080": "مثال: http://127.0.0.1:8080", |
| 332 | 332 | "Example: http://127.0.0.1:11434": "مثال: http://127.0.0.1:11434", |
| 333 | 333 | "Ollama Model": "نموذج Ollama", |
| 334 | 334 | "Download": "تحميل", |
| 335 | 335 | "Tabby API key": "مفتاح API لـ Tabby", |
| 336 | 336 | "koboldcpp API key (optional)": "مفتاح koboldcpp API (اختياري)", |
| 337 | 337 | "Example: http://127.0.0.1:5001": "مثال: http://127.0.0.1:5001", |
| 338 | 338 | "Authorize": "تفويض", |
| 339 | 339 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "احصل على رمز واجهة برمجة التطبيقات الخاص بك لموزع الاتصالات باستخدام تدفق OAuth. سيتم توجيهك إلى openrouter.ai", |
| 340 | 340 | "Bypass status check": "تجاوز فحص الحالة", |
| @@ -318,23 +318,23 @@ | ||
| 318 | 318 | "flag": "Flagge", |
| 319 | 319 | "API key (optional)": "API-Schlüssel (optional)", |
| 320 | 320 | "Server url": "Server-URL", |
| 321 | 321 | "Example: http://127.0.0.1:5000": "Beispiel: http://127.0.0.1:5000", |
| 322 | 322 | "Custom model (optional)": "Benutzerdefiniertes Modell (optional)", |
| 323 | 323 | "vllm-project/vllm": "vllm-project/vllm (OpenAI API-Wrappermodus)", |
| 324 | 324 | "vLLM API key": "vLLM-API-Schlüssel", |
| 325 | 325 | "Example: http://127.0.0.1:8000": "Beispiel: http://127.0.0.1:8000", |
| 326 | 326 | "vLLM Model": "vLLM-Modell", |
| 327 | 327 | "PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (Wrappermodus für OpenAI API)", |
| 328 | 328 | "Aphrodite API key": "Aphrodite API-Schlüssel", |
| 329 | 329 | "Aphrodite Model": "Aphrodite-Modell", |
| 330 | 330 | "ggerganov/llama.cpp": "ggerganov/llama.cpp (Output-Server)", |
| 331 | 331 | "Example: http://127.0.0.1:8080": "Beispiel: http://127.0.0.1:8080", |
| 332 | 332 | "Example: http://127.0.0.1:11434": "Beispiel: http://127.0.0.1:11434", |
| 333 | 333 | "Ollama Model": "Ollama-Modell", |
| 334 | 334 | "Download": "Herunterladen", |
| 335 | 335 | "Tabby API key": "Tabby API-Schlüssel", |
| 336 | 336 | "koboldcpp API key (optional)": "koboldcpp API-Schlüssel (optional)", |
| 337 | 337 | "Example: http://127.0.0.1:5001": "Beispiel: http://127.0.0.1:5001", |
| 338 | 338 | "Authorize": "Autorisieren", |
| 339 | 339 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Hole dein OpenRouter-API-Token mit OAuth-Fluss. Du wirst zu openrouter.ai weitergeleitet", |
| 340 | 340 | "Bypass status check": "Umgehe Statusüberprüfung", |
| @@ -318,23 +318,23 @@ | ||
| 318 | 318 | "flag": "bandera", |
| 319 | 319 | "API key (optional)": "Clave API (opcional)", |
| 320 | 320 | "Server url": "URL del servidor", |
| 321 | 321 | "Example: http://127.0.0.1:5000": "Ejemplo: http://127.0.0.1:5000", |
| 322 | 322 | "Custom model (optional)": "Modelo personalizado (opcional)", |
| 323 | 323 | "vllm-project/vllm": "vllm-project/vllm (modo contenedor de API OpenAI)", |
| 324 | 324 | "vLLM API key": "Clave API vLLM", |
| 325 | 325 | "Example: http://127.0.0.1:8000": "Ejemplo: http://127.0.0.1:8000", |
| 326 | 326 | "vLLM Model": "Modelo vLLM", |
| 327 | 327 | "PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (Modo envolvente para API de OpenAI)", |
| 328 | 328 | "Aphrodite API key": "Clave de API de Aphrodite", |
| 329 | 329 | "Aphrodite Model": "Modelo Afrodita", |
| 330 | 330 | "ggerganov/llama.cpp": "ggerganov/llama.cpp (Servidor de salida)", |
| 331 | 331 | "Example: http://127.0.0.1:8080": "Ejemplo: http://127.0.0.1:8080", |
| 332 | 332 | "Example: http://127.0.0.1:11434": "Ejemplo: http://127.0.0.1:11434", |
| 333 | 333 | "Ollama Model": "Modelo Ollama", |
| 334 | 334 | "Download": "Descargar", |
| 335 | 335 | "Tabby API key": "Clave API de Tabby", |
| 336 | 336 | "koboldcpp API key (optional)": "Clave API de koboldcpp (opcional)", |
| 337 | 337 | "Example: http://127.0.0.1:5001": "Ejemplo: http://127.0.0.1:5001", |
| 338 | 338 | "Authorize": "Autorizar", |
| 339 | 339 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Obtenga su token de API de OpenRouter utilizando el flujo OAuth. Será redirigido a openrouter.ai", |
| 340 | 340 | "Bypass status check": "Saltar la verificación del estado", |
| @@ -301,23 +301,23 @@ | ||
| 301 | 301 | "flag": "fanion", |
| 302 | 302 | "API key (optional)": "Clé API (optionnelle)", |
| 303 | 303 | "Server url": "URL du serveur", |
| 304 | 304 | "Example: http://127.0.0.1:5000": "Exemple : http://127.0.0.1:5000", |
| 305 | 305 | "Custom model (optional)": "Modèle personnalisé (optionnel)", |
| 306 | 306 | "vllm-project/vllm": "vllm-project/vllm (mode wrapper de l'API OpenAI)", |
| 307 | 307 | "vLLM API key": "Clé API vLLM", |
| 308 | 308 | "Example: http://127.0.0.1:8000": "Exemple : http://127.0.0.1:8000", |
| 309 | 309 | "vLLM Model": "Modèle vLLM", |
| 310 | 310 | "PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (mode wrapper pour l'API OpenAI)", |
| 311 | 311 | "Aphrodite API key": "Clé API Aphrodite", |
| 312 | 312 | "Aphrodite Model": "Modèle Aphrodite", |
| 313 | 313 | "ggerganov/llama.cpp": "ggerganov/llama.cpp", |
| 314 | 314 | "Example: http://127.0.0.1:8080": "Exemple : http://127.0.0.1:8080", |
| 315 | 315 | "Example: http://127.0.0.1:11434": "Exemple : http://127.0.0.1:11434", |
| 316 | 316 | "Ollama Model": "Modèle Ollama", |
| 317 | 317 | "Download": "Télécharger", |
| 318 | 318 | "Tabby API key": "Clé API de Tabby", |
| 319 | 319 | "koboldcpp API key (optional)": "Clé API koboldcpp (facultatif)", |
| 320 | 320 | "Example: http://127.0.0.1:5001": "Exemple : http://127.0.0.1:5001", |
| 321 | 321 | "Authorize": "Autoriser", |
| 322 | 322 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Obtenez votre jeton API OpenRouter en utilisant le flux OAuth. Vous serez redirigé vers openrouter.ai", |
| 323 | 323 | "Bypass status check": "Contourner la vérification de l'état", |
| @@ -318,23 +318,23 @@ | ||
| 318 | 318 | "flag": "merki", |
| 319 | 319 | "API key (optional)": "API lykill (valkvæmt)", |
| 320 | 320 | "Server url": "URL þjóns", |
| 321 | 321 | "Example: http://127.0.0.1:5000": "Dæmi: http://127.0.0.1:5000", |
| 322 | 322 | "Custom model (optional)": "Sérsniðið módel (valkvæmt)", |
| 323 | 323 | "vllm-project/vllm": "vllm-project/vllm (OpenAI API umbúðastilling)", |
| 324 | 324 | "vLLM API key": "vLLM API lykill", |
| 325 | 325 | "Example: http://127.0.0.1:8000": "Dæmi: http://127.0.0.1:8000", |
| 326 | 326 | "vLLM Model": "vLLM líkan", |
| 327 | 327 | "PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (OpenAI forritunargrensl)", |
| 328 | 328 | "Aphrodite API key": "Aphrodite API lykill", |
| 329 | 329 | "Aphrodite Model": "Afródíta fyrirmynd", |
| 330 | 330 | "ggerganov/llama.cpp": "ggerganov/llama.cpp (úttak þjónn)", |
| 331 | 331 | "Example: http://127.0.0.1:8080": "Dæmi: http://127.0.0.1:8080", |
| 332 | 332 | "Example: http://127.0.0.1:11434": "Dæmi: http://127.0.0.1:11434", |
| 333 | 333 | "Ollama Model": "Ollama módel", |
| 334 | 334 | "Download": "Niðurhal", |
| 335 | 335 | "Tabby API key": "Tabby API lykill", |
| 336 | 336 | "koboldcpp API key (optional)": "koboldcpp API lykill (valfrjálst)", |
| 337 | 337 | "Example: http://127.0.0.1:5001": "Dæmi: http://127.0.0.1:5001", |
| 338 | 338 | "Authorize": "Heimild", |
| 339 | 339 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Fáðu API lykilinn þinn fyrir OpenRouter með því að nota OAuth strauminn. Þú verður endurvísað(ð/ur) á openrouter.ai", |
| 340 | 340 | "Bypass status check": "Hlaupa framhjá stöðutík", |
| @@ -318,23 +318,23 @@ | ||
| 318 | 318 | "flag": "bandiera", |
| 319 | 319 | "API key (optional)": "Chiave API (opzionale)", |
| 320 | 320 | "Server url": "URL del server", |
| 321 | 321 | "Example: http://127.0.0.1:5000": "Esempio: http://127.0.0.1:5000", |
| 322 | 322 | "Custom model (optional)": "Modello personalizzato (opzionale)", |
| 323 | 323 | "vllm-project/vllm": "vllm-project/vllm (modalità wrapper API OpenAI)", |
| 324 | 324 | "vLLM API key": "Chiave API vLLM", |
| 325 | 325 | "Example: http://127.0.0.1:8000": "Esempio: http://127.0.0.1:8000", |
| 326 | 326 | "vLLM Model": "Modello vLLM", |
| 327 | 327 | "PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (Modalità wrapper per l'API OpenAI)", |
| 328 | 328 | "Aphrodite API key": "Chiave API di Aphrodite", |
| 329 | 329 | "Aphrodite Model": "Modello di Afrodite", |
| 330 | 330 | "ggerganov/llama.cpp": "ggerganov/llama.cpp (Server di output)", |
| 331 | 331 | "Example: http://127.0.0.1:8080": "Esempio: http://127.0.0.1:8080", |
| 332 | 332 | "Example: http://127.0.0.1:11434": "Esempio: http://127.0.0.1:11434", |
| 333 | 333 | "Ollama Model": "Modello Ollama", |
| 334 | 334 | "Download": "Scarica", |
| 335 | 335 | "Tabby API key": "Chiave API di Tabby", |
| 336 | 336 | "koboldcpp API key (optional)": "Chiave API koboldcpp (opzionale)", |
| 337 | 337 | "Example: http://127.0.0.1:5001": "Esempio: http://127.0.0.1:5001", |
| 338 | 338 | "Authorize": "Autorizzare", |
| 339 | 339 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Ottieni il tuo token API di OpenRouter utilizzando il flusso OAuth. Sarai reindirizzato su openrouter.ai", |
| 340 | 340 | "Bypass status check": "Ignora controllo stato", |
| @@ -318,23 +318,23 @@ | ||
| 318 | 318 | "flag": "フラグ", |
| 319 | 319 | "API key (optional)": "APIキー(オプション)", |
| 320 | 320 | "Server url": "サーバーURL", |
| 321 | 321 | "Example: http://127.0.0.1:5000": "例: http://127.0.0.1:5000", |
| 322 | 322 | "Custom model (optional)": "カスタムモデル(オプション)", |
| 323 | 323 | "vllm-project/vllm": "vllm-project/vllm (OpenAI API ラッパーモード)", |
| 324 | 324 | "vLLM API key": "vLLM API キー", |
| 325 | 325 | "Example: http://127.0.0.1:8000": "例: http://127.0.0.1:8000", |
| 326 | 326 | "vLLM Model": "vLLM モデル", |
| 327 | 327 | "PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine(OpenAI APIエンドポイントのパッケージングモード)", |
| 328 | 328 | "Aphrodite API key": "アフロディーテAPIキー", |
| 329 | 329 | "Aphrodite Model": "アフロディーテモデル", |
| 330 | 330 | "ggerganov/llama.cpp": "ggerganov/llama.cpp(出力サーバー)", |
| 331 | 331 | "Example: http://127.0.0.1:8080": "例: http://127.0.0.1:8080", |
| 332 | 332 | "Example: http://127.0.0.1:11434": "例: http://127.0.0.1:11434", |
| 333 | 333 | "Ollama Model": "Ollamaモデル", |
| 334 | 334 | "Download": "ダウンロード", |
| 335 | 335 | "Tabby API key": "TabbyのAPIキー", |
| 336 | 336 | "koboldcpp API key (optional)": "koboldcpp API キー (オプション)", |
| 337 | 337 | "Example: http://127.0.0.1:5001": "例: http://127.0.0.1:5001", |
| 338 | 338 | "Authorize": "承認", |
| 339 | 339 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "OAuthフローを使用してOpenRouter APIトークンを取得します。 openrouter.aiにリダイレクトされます", |
| 340 | 340 | "Bypass status check": "ステータスのチェックをバイパスする", |
| @@ -320,23 +320,23 @@ | ||
| 320 | 320 | "flag": "깃발", |
| 321 | 321 | "API key (optional)": "API 키 (선택 사항)", |
| 322 | 322 | "Server url": "서버 URL", |
| 323 | 323 | "Example: http://127.0.0.1:5000": "예시: http://127.0.0.1:5000", |
| 324 | 324 | "Custom model (optional)": "사용자 정의 모델 (선택 사항)", |
| 325 | 325 | "vllm-project/vllm": "vllm-project/vllm(OpenAI API 래퍼 모드)", |
| 326 | 326 | "vLLM API key": "vLLM API 키", |
| 327 | 327 | "Example: http://127.0.0.1:8000": "예: http://127.0.0.1:8000", |
| 328 | 328 | "vLLM Model": "vLLM 모델", |
| 329 | 329 | "PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (OpenAI API의 래퍼 모드)", |
| 330 | 330 | "Aphrodite API key": "Aphrodite API 키", |
| 331 | 331 | "Aphrodite Model": "Aphrodite 모델", |
| 332 | 332 | "ggerganov/llama.cpp": "ggerganov/llama.cpp (출력 서버)", |
| 333 | 333 | "Example: http://127.0.0.1:8080": "예: http://127.0.0.1:8080", |
| 334 | 334 | "Example: http://127.0.0.1:11434": "예: http://127.0.0.1:11434", |
| 335 | 335 | "Ollama Model": "Ollama 모델", |
| 336 | 336 | "Download": "다운로드", |
| 337 | 337 | "Tabby API key": "Tabby API 키", |
| 338 | 338 | "koboldcpp API key (optional)": "koboldcpp API 키(선택사항)", |
| 339 | 339 | "Example: http://127.0.0.1:5001": "예: http://127.0.0.1:5001", |
| 340 | 340 | "Authorize": "승인하기", |
| 341 | 341 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "OAuth 플로우를 사용하여 OpenRouter API 토큰을 가져옵니다. openrouter.ai로 리디렉션됩니다.", |
| 342 | 342 | "Legacy API (pre-OAI, no streaming)": "레거시 API (OAI 이전, 스트리밍 없음)", |
| @@ -318,23 +318,23 @@ | ||
| 318 | 318 | "flag": "vlag", |
| 319 | 319 | "API key (optional)": "API-sleutel (optioneel)", |
| 320 | 320 | "Server url": "Server-URL", |
| 321 | 321 | "Example: http://127.0.0.1:5000": "Voorbeeld: http://127.0.0.1:5000", |
| 322 | 322 | "Custom model (optional)": "Aangepast model (optioneel)", |
| 323 | 323 | "vllm-project/vllm": "vllm-project/vllm (OpenAI API-wrappermodus)", |
| 324 | 324 | "vLLM API key": "vLLM API-sleutel", |
| 325 | 325 | "Example: http://127.0.0.1:8000": "Voorbeeld: http://127.0.0.1:8000", |
| 326 | 326 | "vLLM Model": "vLLM-model", |
| 327 | 327 | "PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (Wrappermodus voor OpenAI API)", |
| 328 | 328 | "Aphrodite API key": "Aphrodite API-sleutel", |
| 329 | 329 | "Aphrodite Model": "Aphrodite-model", |
| 330 | 330 | "ggerganov/llama.cpp": "ggerganov/llama.cpp (Output-server)", |
| 331 | 331 | "Example: http://127.0.0.1:8080": "Voorbeeld: http://127.0.0.1:8080", |
| 332 | 332 | "Example: http://127.0.0.1:11434": "Voorbeeld: http://127.0.0.1:11434", |
| 333 | 333 | "Ollama Model": "Ollama-model", |
| 334 | 334 | "Download": "Downloaden", |
| 335 | 335 | "Tabby API key": "Tabby API-sleutel", |
| 336 | 336 | "koboldcpp API key (optional)": "koboldcpp API-sleutel (optioneel)", |
| 337 | 337 | "Example: http://127.0.0.1:5001": "Voorbeeld: http://127.0.0.1:5001", |
| 338 | 338 | "Authorize": "Toestemming geven", |
| 339 | 339 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Haal uw OpenRouter API-token op met behulp van OAuth-flow. U wordt doorgestuurd naar openrouter.ai", |
| 340 | 340 | "Bypass status check": "Omzeil statuscontrole", |
| @@ -318,23 +318,23 @@ | ||
| 318 | 318 | "flag": "bandeira", |
| 319 | 319 | "API key (optional)": "Chave da API (opcional)", |
| 320 | 320 | "Server url": "URL do servidor", |
| 321 | 321 | "Example: http://127.0.0.1:5000": "Exemplo: http://127.0.0.1:5000", |
| 322 | 322 | "Custom model (optional)": "Modelo personalizado (opcional)", |
| 323 | 323 | "vllm-project/vllm": "vllm-project/vllm (modo wrapper da API OpenAI)", |
| 324 | 324 | "vLLM API key": "Chave de API vLLM", |
| 325 | 325 | "Example: http://127.0.0.1:8000": "Exemplo: http://127.0.0.1:8000", |
| 326 | 326 | "vLLM Model": "Modelo vLLM", |
| 327 | 327 | "PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (Modo Wrapper para API OpenAI)", |
| 328 | 328 | "Aphrodite API key": "Chave da API Aphrodite", |
| 329 | 329 | "Aphrodite Model": "Modelo Afrodite", |
| 330 | 330 | "ggerganov/llama.cpp": "ggerganov/llama.cpp (Servidor de Saída)", |
| 331 | 331 | "Example: http://127.0.0.1:8080": "Exemplo: http://127.0.0.1:8080", |
| 332 | 332 | "Example: http://127.0.0.1:11434": "Exemplo: http://127.0.0.1:11434", |
| 333 | 333 | "Ollama Model": "Modelo Ollama", |
| 334 | 334 | "Download": "Baixar", |
| 335 | 335 | "Tabby API key": "Chave da API do Tabby", |
| 336 | 336 | "koboldcpp API key (optional)": "Chave API koboldcpp (opcional)", |
| 337 | 337 | "Example: http://127.0.0.1:5001": "Exemplo: http://127.0.0.1:5001", |
| 338 | 338 | "Authorize": "Autorizar", |
| 339 | 339 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Obtenha seu token da API do OpenRouter usando o fluxo OAuth. Você será redirecionado para openrouter.ai", |
| 340 | 340 | "Bypass status check": "Ignorar verificação de status", |
| @@ -109,10 +109,10 @@ | ||
| 109 | 109 | "Get it here:": "Получите здесь:", |
| 110 | 110 | "Register": "Зарегистрироваться", |
| 111 | 111 | "TogetherAI Model": "Модель TogetherAI", |
| 112 | 112 | "Example: http://127.0.0.1:5001": "Пример: http://127.0.0.1:5001", |
| 113 | 113 | "ggerganov/llama.cpp": "ggerganov/llama.cpp (сервер вывода)", |
| 114 | 114 | "Example: http://127.0.0.1:8080": "Пример: http://127.0.0.1:8080", |
| 115 | 115 | "Example: http://127.0.0.1:11434": "Пример: http://127.0.0.1:11434", |
| 116 | 116 | "Ollama Model": "Модель Ollama", |
| 117 | 117 | "Download": "Скачать", |
| 118 | 118 | "TogetherAI API Key": "TogetherAI API-ключ", |
| @@ -133,7 +133,7 @@ | ||
| 133 | 133 | "Server url": "URL-адрес сервера", |
| 134 | 134 | "Custom model (optional)": "Пользовательская модель (необязательно)", |
| 135 | 135 | "Bypass API status check": "Обход проверки статуса API", |
| 136 | 136 | "Example: http://127.0.0.1:5000": "Пример: http://127.0.0.1:5000", |
| 137 | 137 | "Bypass status check": "Обход проверки статуса", |
| 138 | 138 | "Mancer API key": "Ключ от Mancer API", |
| 139 | 139 | "to get your OpenAI API key.": "для получения ключа от API OpenAI", |
| @@ -1252,7 +1252,6 @@ | ||
| 1252 | 1252 | "DreamGen Model": "Модель DreamGen", |
| 1253 | 1253 | "vllm-project/vllm": "vllm-project/vllm (режим враппера OpenAI API)", |
| 1254 | 1254 | "vLLM API key": "Ключ от API vLLM", |
| 1255 | - "Example: 127.0.0.1:8000": "Example: http://127.0.0.1:8000", | |
| 1256 | 1255 | "vLLM Model": "Модель vLLM", |
| 1257 | 1256 | "Aphrodite Model": "Модель Aphrodite", |
| 1258 | 1257 | "Peek a password": "Посмотреть пароль", |
| @@ -2033,7 +2032,7 @@ | ||
| 2033 | 2032 | "[Currently loaded]": "[Загруженная сейчас]", |
| 2034 | 2033 | "Search providers...": "Искать по провайдерам...", |
| 2035 | 2034 | "Automatically chooses an alternative provider if chosen providers can't serve your request.": "Автоматически переключаться на другого провайдера, если текущий не может обслужить запрос.", |
| 2036 | 2035 | "Example: http://127.0.0.1:8000": "Пример: http://127.0.0.1:8000", |
| 2037 | 2036 | "Edit a connection profile": "Редактировать профиль соединения", |
| 2038 | 2037 | "System Prompt Name": "Название системного промпта", |
| 2039 | 2038 | "Use System Prompt": "Использовать системный промпт", |
| @@ -318,23 +318,23 @@ | ||
| 318 | 318 | "flag": "прапорцем", |
| 319 | 319 | "API key (optional)": "Ключ API (необов'язково)", |
| 320 | 320 | "Server url": "URL-адреса сервера", |
| 321 | 321 | "Example: http://127.0.0.1:5000": "Приклад: http://127.0.0.1:5000", |
| 322 | 322 | "Custom model (optional)": "Власна модель (необов'язково)", |
| 323 | 323 | "vllm-project/vllm": "vllm-project/vllm (режим оболонки OpenAI API)", |
| 324 | 324 | "vLLM API key": "Ключ API vLLM", |
| 325 | 325 | "Example: http://127.0.0.1:8000": "Приклад: http://127.0.0.1:8000", |
| 326 | 326 | "vLLM Model": "Модель vLLM", |
| 327 | 327 | "PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (режим OpenAI API)", |
| 328 | 328 | "Aphrodite API key": "Ключ API для Aphrodite", |
| 329 | 329 | "Aphrodite Model": "Модель Афродіта", |
| 330 | 330 | "ggerganov/llama.cpp": "ggerganov/llama.cpp (сервер виведення)", |
| 331 | 331 | "Example: http://127.0.0.1:8080": "Приклад: http://127.0.0.1:8080", |
| 332 | 332 | "Example: http://127.0.0.1:11434": "Приклад: http://127.0.0.1:11434", |
| 333 | 333 | "Ollama Model": "Модель Ollama", |
| 334 | 334 | "Download": "Завантажити", |
| 335 | 335 | "Tabby API key": "Ключ API для Tabby", |
| 336 | 336 | "koboldcpp API key (optional)": "API-ключ koboldcpp (необов’язково)", |
| 337 | 337 | "Example: http://127.0.0.1:5001": "Приклад: http://127.0.0.1:5001", |
| 338 | 338 | "Authorize": "Авторизувати", |
| 339 | 339 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Отримайте свій токен API OpenRouter за допомогою OAuth. Вас буде перенаправлено на openrouter.ai", |
| 340 | 340 | "Bypass status check": "Обійти перевірку статусу", |
| @@ -318,23 +318,23 @@ | ||
| 318 | 318 | "flag": "cờ", |
| 319 | 319 | "API key (optional)": "Key API (tùy chọn)", |
| 320 | 320 | "Server url": "URL máy chủ", |
| 321 | 321 | "Example: http://127.0.0.1:5000": "Ví dụ: http://127.0.0.1:5000", |
| 322 | 322 | "Custom model (optional)": "Model tùy chỉnh (tùy chọn)", |
| 323 | 323 | "vllm-project/vllm": "vllm-project/vllm (Chế độ trình bao bọc API OpenAI)", |
| 324 | 324 | "vLLM API key": "Key API vLLM", |
| 325 | 325 | "Example: http://127.0.0.1:8000": "Ví dụ: http://127.0.0.1:8000", |
| 326 | 326 | "vLLM Model": "Model vLLM", |
| 327 | 327 | "PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (Chế độ đóng gói cho Giao diện lập trình ứng dụng OpenAI)", |
| 328 | 328 | "Aphrodite API key": "Key API Aphrodite", |
| 329 | 329 | "Aphrodite Model": "Moddel cho Aphrodite", |
| 330 | 330 | "ggerganov/llama.cpp": "ggerganov/llama.cpp", |
| 331 | 331 | "Example: http://127.0.0.1:8080": "Ví dụ: http://127.0.0.1:8080", |
| 332 | 332 | "Example: http://127.0.0.1:11434": "Ví dụ: http://127.0.0.1:11434", |
| 333 | 333 | "Ollama Model": "Model Ollama", |
| 334 | 334 | "Download": "Tải xuống", |
| 335 | 335 | "Tabby API key": "Key API Tabby", |
| 336 | 336 | "koboldcpp API key (optional)": "Key API koboldcpp (tùy chọn)", |
| 337 | 337 | "Example: http://127.0.0.1:5001": "Ví dụ: http://127.0.0.1:5001", |
| 338 | 338 | "Cho phép": "Ủy quyền", |
| 339 | 339 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Nhận mã thông báo API OpenRouter của bạn bằng cách sử dụng luồng OAuth. Bạn sẽ được chuyển hướng đến openrouter.ai", |
| 340 | 340 | "Bypass status check": "Bỏ qua check trạng thái", |
| @@ -347,7 +347,7 @@ | ||
| 347 | 347 | "Mancer Model": "Mancer 模型", |
| 348 | 348 | "API key (optional)": "API密钥(可选)", |
| 349 | 349 | "Server url": "服务器URL", |
| 350 | 350 | "Example: http://127.0.0.1:5000": "示例:http://127.0.0.1:5000", |
| 351 | 351 | "Model ID (optional)": "模型 ID(可选)", |
| 352 | 352 | "Make sure you run it with": "确保您在运行时加上", |
| 353 | 353 | "flag": "标志", |
| @@ -364,7 +364,7 @@ | ||
| 364 | 364 | "No model description": "[无描述]", |
| 365 | 365 | "vllm-project/vllm": "vllm-project/vllm(OpenAI API 包装器模式)", |
| 366 | 366 | "vLLM API key": "vLLM API 密钥", |
| 367 | 367 | "Example: http://127.0.0.1:8000": "示例:http://127.0.0.1:8000", |
| 368 | 368 | "vLLM Model": "vLLM 模型", |
| 369 | 369 | "HuggingFace Token": "HuggingFace 代币", |
| 370 | 370 | "Endpoint URL": "端点 URL", |
| @@ -373,8 +373,8 @@ | ||
| 373 | 373 | "Aphrodite API key": "Aphrodite API 密钥", |
| 374 | 374 | "Aphrodite Model": "Aphrodite 模型", |
| 375 | 375 | "ggerganov/llama.cpp": "ggerganov/llama.cpp", |
| 376 | 376 | "Example: http://127.0.0.1:8080": "示例:http://127.0.0.1:8080", |
| 377 | 377 | "Example: http://127.0.0.1:11434": "示例:http://127.0.0.1:11434", |
| 378 | 378 | "Ollama Model": "Ollama 模型", |
| 379 | 379 | "Download": "下载", |
| 380 | 380 | "Tabby API key": "Tabby API 密钥", |
| @@ -382,7 +382,7 @@ | ||
| 382 | 382 | "must be set in Tabby's config.yml to switch models.": "必须在Tabby的config.yml内设置以切换模型", |
| 383 | 383 | "Use an admin API key.": "使用管理员API密钥。", |
| 384 | 384 | "koboldcpp API key (optional)": "koboldcpp API 密钥(可选)", |
| 385 | 385 | "Example: http://127.0.0.1:5001": "示例:http://127.0.0.1:5001", |
| 386 | 386 | "Bypass status check": "跳过状态检查", |
| 387 | 387 | "Derive context size from backend": "从后端获取上下文长度", |
| 388 | 388 | "Authorize": "授权", |
| @@ -319,23 +319,23 @@ | ||
| 319 | 319 | "flag": "旗標", |
| 320 | 320 | "API key (optional)": "API 金鑰(可選)", |
| 321 | 321 | "Server url": "伺服器 URL", |
| 322 | 322 | "Example: http://127.0.0.1:5000": "範例:http://127.0.0.1:5000", |
| 323 | 323 | "Custom model (optional)": "自訂模型(選填)", |
| 324 | 324 | "vllm-project/vllm": "vllm-project/vllm", |
| 325 | 325 | "vLLM API key": "vLLM API 金鑰", |
| 326 | 326 | "Example: http://127.0.0.1:8000": "範例:http://127.0.0.1:8000", |
| 327 | 327 | "vLLM Model": "vLLM 模型", |
| 328 | 328 | "PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite 引擎", |
| 329 | 329 | "Aphrodite API key": "Aphrodite API 金鑰", |
| 330 | 330 | "Aphrodite Model": "Aphrodite 模型", |
| 331 | 331 | "ggerganov/llama.cpp": "ggerganov/llama.cpp", |
| 332 | 332 | "Example: http://127.0.0.1:8080": "範例:http://127.0.0.1:8080", |
| 333 | 333 | "Example: http://127.0.0.1:11434": "範例:http://127.0.0.1:11434", |
| 334 | 334 | "Ollama Model": "Ollama 模型", |
| 335 | 335 | "Download": "下載", |
| 336 | 336 | "Tabby API key": "Tabby API 金鑰", |
| 337 | 337 | "koboldcpp API key (optional)": "KoboldCpp API 金鑰(可選)", |
| 338 | 338 | "Example: http://127.0.0.1:5001": "範例:http://127.0.0.1:5001", |
| 339 | 339 | "Authorize": "授權", |
| 340 | 340 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "使用 OAuth 流程取得您的 OpenRouter API 符元。您將被重新導向到 openrouter.ai", |
| 341 | 341 | "Bypass status check": "繞過狀態檢查", |
| @@ -173,6 +173,7 @@ import { | ||
| 173 | 173 | escapeHtml, |
| 174 | 174 | saveBase64AsFile, |
| 175 | 175 | uuidv4, |
| 176 | + equalsIgnoreCaseAndAccents, | |
| 176 | 177 | } from './scripts/utils.js'; |
| 177 | 178 | import { debounce_timeout, IGNORE_SYMBOL } from './scripts/constants.js'; |
| 178 | 179 | |
| @@ -2133,7 +2134,7 @@ export function messageFormatting(mes, ch_name, isSystem, isUser, messageId, san | ||
| 2133 | 2134 | } |
| 2134 | 2135 | |
| 2135 | 2136 | mes = mes.replace( |
| 2136 | 2137 | /<style>[\s\S]*?<\/style>|```[\s\S]*?```|~~~[\s\S]*?~~~|``[\s\S]*?``|`[\s\S]*?`|(".*?")|(\u201C.*?\u201D)|(\u00AB.*?\u00BB)|(\u300C.*?\u300D)|(\u300E.*?\u300F)|(\uFF02.*?\uFF02)/gmgim, |
| 2137 | 2138 | function (match, p1, p2, p3, p4, p5, p6) { |
| 2138 | 2139 | if (p1) { |
| 2139 | 2140 | // English double quotes |
| @@ -9878,6 +9879,15 @@ export async function renameChat(oldFileName, newName) { | ||
| 9878 | 9879 | renamed_file: `${newName.trim()}.jsonl`, |
| 9879 | 9880 | }; |
| 9880 | 9881 | |
| 9882 | + if (body.original_file === body.renamed_file) { | |
| 9883 | + console.debug('Chat rename cancelled, old and new names are the same'); | |
| 9884 | + return; | |
| 9885 | + } | |
| 9886 | + if (equalsIgnoreCaseAndAccents(body.original_file, body.renamed_file)) { | |
| 9887 | + toastr.warning(t`Name not accepted, as it is the same as before (ignoring case and accents).`, t`Rename Chat`); | |
| 9888 | + return; | |
| 9889 | + } | |
| 9890 | + | |
| 9881 | 9891 | try { |
| 9882 | 9892 | showLoader(); |
| 9883 | 9893 | const response = await fetch('/api/chats/rename', { |
| @@ -12209,4 +12219,11 @@ jQuery(async function () { | ||
| 12209 | 12219 | }); |
| 12210 | 12220 | |
| 12211 | 12221 | initCustomSelectedSamplers(); |
| 12222 | + | |
| 12223 | + window.addEventListener('beforeunload', (e) => { | |
| 12224 | + if (isChatSaving) { | |
| 12225 | + e.preventDefault(); | |
| 12226 | + e.returnValue = true; | |
| 12227 | + } | |
| 12228 | + }); | |
| 12212 | 12229 | }); |
| @@ -459,7 +459,7 @@ export async function appendFileContent(message, messageText) { | ||
| 459 | 459 | * @copyright https://github.com/kwaroran/risuAI |
| 460 | 460 | */ |
| 461 | 461 | export function encodeStyleTags(text) { |
| 462 | 462 | const styleRegex = /<style>(.+?)<\/style>/gmsgims; |
| 463 | 463 | return text.replaceAll(styleRegex, (_, match) => { |
| 464 | 464 | return `<custom-style>${escape(match)}</custom-style>`; |
| 465 | 465 | }); |
| @@ -65,6 +65,7 @@ | ||
| 65 | 65 | <option data-type="anthropic" value="claude-3-opus-20240229">claude-3-opus-20240229</option> |
| 66 | 66 | <option data-type="anthropic" value="claude-3-sonnet-20240229">claude-3-sonnet-20240229</option> |
| 67 | 67 | <option data-type="anthropic" value="claude-3-haiku-20240307">claude-3-haiku-20240307</option> |
| 68 | + <option data-type="google" value="gemini-2.5-pro-preview-03-25">gemini-2.5-pro-preview-03-25</option> | |
| 68 | 69 | <option data-type="google" value="gemini-2.5-pro-exp-03-25">gemini-2.5-pro-exp-03-25</option> |
| 69 | 70 | <option data-type="google" value="gemini-2.0-pro-exp">gemini-2.0-pro-exp</option> |
| 70 | 71 | <option data-type="google" value="gemini-2.0-pro-exp-02-05">gemini-2.0-pro-exp-02-05</option> |
| @@ -180,13 +180,18 @@ function displayError(message) { | ||
| 180 | 180 | * Preserves the query string. |
| 181 | 181 | */ |
| 182 | 182 | function redirectToHome() { |
| 183 | 183 | // AfterCreate a loginURL theresobject nobased needon tothe preservecurrent thelocation |
| 184 | - // noauto (if present) | |
| 184 | + const currentUrl = new URL(window.location.href); | |
| 185 | - const urlParams = new URLSearchParams(window.location.search); | |
| 186 | 185 | |
| 187 | - urlParams.delete('noauto'); | |
| 186 | + // After a login there's no need to preserve the | |
| 187 | + // noauto parameter (if present) | |
| 188 | + currentUrl.searchParams.delete('noauto'); | |
| 188 | 189 | |
| 189 | - window.location.href = '/' + urlParams.toString(); | |
| 190 | + // Set the pathname to root and keep the updated query string | |
| 191 | + currentUrl.pathname = '/'; | |
| 192 | + | |
| 193 | + // Redirect to the new URL | |
| 194 | + window.location.href = currentUrl.toString(); | |
| 190 | 195 | } |
| 191 | 196 | |
| 192 | 197 | /** |
| @@ -4193,6 +4193,9 @@ function getGroqMaxContext(model, isUnlocked) { | ||
| 4193 | 4193 | 'qwen-2.5-32b': max_128k, |
| 4194 | 4194 | 'deepseek-r1-distill-qwen-32b': max_128k, |
| 4195 | 4195 | 'deepseek-r1-distill-llama-70b-specdec': max_128k, |
| 4196 | + 'mistral-saba-24b': max_32k, | |
| 4197 | + 'meta-llama/llama-4-scout-17b-16e-instruct': max_128k, | |
| 4198 | + 'meta-llama/llama-4-maverick-17b-128e-instruct': max_128k, | |
| 4196 | 4199 | }; |
| 4197 | 4200 | |
| 4198 | 4201 | // Return context size if model found, otherwise default to 128k |
| @@ -4327,7 +4330,7 @@ async function onModelChange() { | ||
| 4327 | 4330 | $('#openai_max_context').attr('max', max_32k); |
| 4328 | 4331 | } else if (value.includes('gemini-1.5-pro') || value.includes('gemini-exp-1206') || value.includes('gemini-2.0-pro')) { |
| 4329 | 4332 | $('#openai_max_context').attr('max', max_2mil); |
| 4330 | 4333 | } else if (value.includes('gemini-1.5-flash') || value.includes('gemini-2.0-flash') || value.includes('gemini-2.5-pro-exp-03-25') || value.includes('gemini-2.5-pro-preview-03-25')) { |
| 4331 | 4334 | $('#openai_max_context').attr('max', max_1mil); |
| 4332 | 4335 | } else if (value.includes('gemini-1.0-pro') || value === 'gemini-pro') { |
| 4333 | 4336 | $('#openai_max_context').attr('max', max_32k); |
| @@ -4961,6 +4964,7 @@ export function isImageInliningSupported() { | ||
| 4961 | 4964 | const visionSupportedModels = [ |
| 4962 | 4965 | 'gpt-4-vision', |
| 4963 | 4966 | 'gemini-2.5-pro-exp-03-25', |
| 4967 | + 'gemini-2.5-pro-preview-03-25', | |
| 4964 | 4968 | 'gemini-2.0-pro-exp', |
| 4965 | 4969 | 'gemini-2.0-pro-exp-02-05', |
| 4966 | 4970 | 'gemini-2.0-flash-lite-preview', |
| @@ -36,7 +36,7 @@ import { | ||
| 36 | 36 | textgenerationwebui_presets, |
| 37 | 37 | textgenerationwebui_settings as textgen_settings, |
| 38 | 38 | } from './textgen-settings.js'; |
| 39 | 39 | import { download, equalsIgnoreCaseAndAccents, parseJsonFile, waitUntilCondition } from './utils.js'; |
| 40 | 40 | import { t } from './i18n.js'; |
| 41 | 41 | import { reasoning_templates } from './reasoning.js'; |
| 42 | 42 | |
| @@ -454,6 +454,9 @@ class PresetManager { | ||
| 454 | 454 | |
| 455 | 455 | async renamePreset(newName) { |
| 456 | 456 | const oldName = this.getSelectedPresetName(); |
| 457 | + if (equalsIgnoreCaseAndAccents(oldName, newName)) { | |
| 458 | + throw new Error('New name must be different from old name'); | |
| 459 | + } | |
| 457 | 460 | try { |
| 458 | 461 | await this.savePreset(newName); |
| 459 | 462 | await this.deletePreset(oldName); |
| @@ -892,6 +895,10 @@ export async function initPresetManager() { | ||
| 892 | 895 | console.debug(!presetManager.isAdvancedFormatting() ? 'Preset rename cancelled' : 'Template rename cancelled'); |
| 893 | 896 | return; |
| 894 | 897 | } |
| 898 | + if (equalsIgnoreCaseAndAccents(oldName, newName)) { | |
| 899 | + toastr.warning(t`Name not accepted, as it is the same as before (ignoring case and accents).`, t`Rename Preset`); | |
| 900 | + return; | |
| 901 | + } | |
| 895 | 902 | |
| 896 | 903 | await presetManager.renamePreset(newName); |
| 897 | 904 | |
| @@ -832,6 +832,12 @@ function registerReasoningSlashCommands() { | ||
| 832 | 832 | typeList: ARGUMENT_TYPE.NUMBER, |
| 833 | 833 | enumProvider: commonEnumProviders.messages(), |
| 834 | 834 | }), |
| 835 | + SlashCommandNamedArgument.fromProps({ | |
| 836 | + name: 'collapse', | |
| 837 | + description: 'Whether to collapse the reasoning block. (If not provided, uses the default expand setting)', | |
| 838 | + typeList: [ARGUMENT_TYPE.BOOLEAN], | |
| 839 | + enumList: commonEnumProviders.boolean('trueFalse')(), | |
| 840 | + }), | |
| 835 | 841 | ], |
| 836 | 842 | unnamedArgumentList: [ |
| 837 | 843 | SlashCommandArgument.fromProps({ |
| @@ -856,6 +862,9 @@ function registerReasoningSlashCommands() { | ||
| 856 | 862 | |
| 857 | 863 | closeMessageEditor('reasoning'); |
| 858 | 864 | updateMessageBlock(messageId, message); |
| 865 | + | |
| 866 | + if (isTrueBoolean(String(args.collapse))) $(`#chat [mesid="${messageId}"] .mes_reasoning_details`).removeAttr('open'); | |
| 867 | + if (isFalseBoolean(String(args.collapse))) $(`#chat [mesid="${messageId}"] .mes_reasoning_details`).attr('open', ''); | |
| 859 | 868 | return message.extra.reasoning; |
| 860 | 869 | }, |
| 861 | 870 | })); |
| @@ -8,10 +8,10 @@ export const markdownUnderscoreExt = () => { | ||
| 8 | 8 | |
| 9 | 9 | return [{ |
| 10 | 10 | type: 'output', |
| 11 | 11 | regex: new RegExp('(<code(?:\\s+[^>]*)?>[\\s\\S]*?<\\/code>|<style(?:\\s+[^>]*)?>[\\s\\S]*?<\\/style>)|\\b(?<!_)_(?!_)(.*?)(?<!_)_(?!_)\\b', 'ggi'), |
| 12 | 12 | replace: function(match, codeContenttagContent, italicContent) { |
| 13 | 13 | if (codeContenttagContent) { |
| 14 | 14 | // If it's inside <code> or <style> tags, return unchanged |
| 15 | 15 | return match; |
| 16 | 16 | } else if (italicContent) { |
| 17 | 17 | // If it's an italic group, apply the replacement |
| @@ -9,8 +9,8 @@ import { ensureImageFormatSupported, getBase64Async, humanFileSize } from './uti | ||
| 9 | 9 | export let currentUser = null; |
| 10 | 10 | export let accountsEnabled = false; |
| 11 | 11 | |
| 12 | 12 | // Extend the session every 3010 minutes |
| 13 | 13 | const SESSION_EXTEND_INTERVAL = 3010 * 60 * 1000; |
| 14 | 14 | |
| 15 | 15 | /** |
| 16 | 16 | * Enable or disable user account controls in the UI. |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | import { Fuse } from '../lib.js'; |
| 2 | 2 | |
| 3 | 3 | import { saveSettings, substituteParams, getRequestHeaders, chat_metadata, this_chid, characters, saveCharacterDebounced, menu_type, eventSource, event_types, getExtensionPromptByName, saveMetadata, getCurrentChatId, extension_prompt_roles } from '../script.js'; |
| 4 | 4 | import { download, debounce, initScrollHeight, resetScrollHeight, parseJsonFile, extractDataFromPng, getFileBuffer, getCharaFilename, getSortableDelay, escapeRegex, PAGINATION_TEMPLATE, navigation_option, waitUntilCondition, isTrueBoolean, setValueByPath, flashHighlight, select2ModifyOptions, getSelect2OptionId, dynamicSelect2DataViaAjax, highlightRegex, select2ChoiceClickSubscribe, isFalseBoolean, getSanitizedFilename, checkOverwriteExistingData, getStringHash, parseStringArray, cancelDebounce, findChar, onlyUnique, equalsIgnoreCaseAndAccents } from './utils.js'; |
| 5 | 5 | import { extension_settings, getContext } from './extensions.js'; |
| 6 | 6 | import { NOTE_MODULE_NAME, metadata_keys, shouldWIAddPrompt } from './authors-note.js'; |
| 7 | 7 | import { isMobile } from './RossAscends-mods.js'; |
| @@ -3586,6 +3586,10 @@ async function renameWorldInfo(name, data) { | ||
| 3586 | 3586 | console.debug('World info rename cancelled'); |
| 3587 | 3587 | return; |
| 3588 | 3588 | } |
| 3589 | + if (equalsIgnoreCaseAndAccents(oldName, newName)) { | |
| 3590 | + toastr.warning(t`Name not accepted, as it is the same as before (ignoring case and accents).`, t`Rename World Info`); | |
| 3591 | + return; | |
| 3592 | + } | |
| 3589 | 3593 | |
| 3590 | 3594 | const entryPreviouslySelected = selected_world_info.findIndex((e) => e === oldName); |
| 3591 | 3595 | |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | import fs from 'node:fs'; |
| 2 | 2 | import { Buffer } from 'node:buffer'; |
| 3 | 3 | |
| 4 | 4 | import encode from './png-chunks-/encode.js'; |
| 5 | 5 | import extract from 'png-chunks-extract'; |
| 6 | 6 | import PNGtext from 'png-chunk-text'; |
| 7 | 7 | |
| @@ -16,7 +16,7 @@ router.post('/caption-image', async (request, response) => { | ||
| 16 | 16 | const base64Data = request.body.image.split(',')[1]; |
| 17 | 17 | const apiKey = request.body.reverse_proxy ? request.body.proxy_password : readSecret(request.user.directories, SECRET_KEYS.MAKERSUITE); |
| 18 | 18 | const apiUrl = new URL(request.body.reverse_proxy || API_MAKERSUITE); |
| 19 | 19 | const model = request.body.model || 'gemini-pro2.0-visionflash'; |
| 20 | 20 | const url = `${apiUrl.origin}/v1beta/models/${model}:generateContent?key=${apiKey}`; |
| 21 | 21 | const body = { |
| 22 | 22 | contents: [{ |
| @@ -30,7 +30,6 @@ router.post('/caption-image', async (request, response) => { | ||
| 30 | 30 | }], |
| 31 | 31 | }], |
| 32 | 32 | safetySettings: GEMINI_SAFETY, |
| 33 | - generationConfig: { maxOutputTokens: 1000 }, | |
| 34 | 33 | }; |
| 35 | 34 | |
| 36 | 35 | console.debug('Multimodal captioning request', model, body); |
| @@ -0,0 +1,68 @@ | ||
| 1 | +import { crc32 } from 'crc'; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * Encodes PNG chunks into a PNG file format buffer. | |
| 5 | + * @param {Array<{ name: string; data: Uint8Array }>} chunks Array of PNG chunks | |
| 6 | + * @returns {Uint8Array} Encoded PNG data | |
| 7 | + * @copyright Based on https://github.com/hughsk/png-chunks-encode (MIT) | |
| 8 | + */ | |
| 9 | +export default function encode(chunks) { | |
| 10 | + const uint8 = new Uint8Array(4); | |
| 11 | + const int32 = new Int32Array(uint8.buffer); | |
| 12 | + const uint32 = new Uint32Array(uint8.buffer); | |
| 13 | + | |
| 14 | + let totalSize = 8; | |
| 15 | + let idx = totalSize; | |
| 16 | + | |
| 17 | + for (let i = 0; i < chunks.length; i++) { | |
| 18 | + totalSize += chunks[i].data.length; | |
| 19 | + totalSize += 12; | |
| 20 | + } | |
| 21 | + | |
| 22 | + const output = new Uint8Array(totalSize); | |
| 23 | + | |
| 24 | + output[0] = 0x89; | |
| 25 | + output[1] = 0x50; | |
| 26 | + output[2] = 0x4E; | |
| 27 | + output[3] = 0x47; | |
| 28 | + output[4] = 0x0D; | |
| 29 | + output[5] = 0x0A; | |
| 30 | + output[6] = 0x1A; | |
| 31 | + output[7] = 0x0A; | |
| 32 | + | |
| 33 | + for (let i = 0; i < chunks.length; i++) { | |
| 34 | + const { name, data } = chunks[i]; | |
| 35 | + const size = data.length; | |
| 36 | + const nameChars = [ | |
| 37 | + name.charCodeAt(0), | |
| 38 | + name.charCodeAt(1), | |
| 39 | + name.charCodeAt(2), | |
| 40 | + name.charCodeAt(3), | |
| 41 | + ]; | |
| 42 | + | |
| 43 | + uint32[0] = size; | |
| 44 | + output[idx++] = uint8[3]; | |
| 45 | + output[idx++] = uint8[2]; | |
| 46 | + output[idx++] = uint8[1]; | |
| 47 | + output[idx++] = uint8[0]; | |
| 48 | + | |
| 49 | + output[idx++] = nameChars[0]; | |
| 50 | + output[idx++] = nameChars[1]; | |
| 51 | + output[idx++] = nameChars[2]; | |
| 52 | + output[idx++] = nameChars[3]; | |
| 53 | + | |
| 54 | + for (let j = 0; j < size;) { | |
| 55 | + output[idx++] = data[j++]; | |
| 56 | + } | |
| 57 | + | |
| 58 | + const crc = crc32(data, crc32(new Uint8Array(nameChars))); | |
| 59 | + | |
| 60 | + int32[0] = crc; | |
| 61 | + output[idx++] = uint8[3]; | |
| 62 | + output[idx++] = uint8[2]; | |
| 63 | + output[idx++] = uint8[1]; | |
| 64 | + output[idx++] = uint8[0]; | |
| 65 | + } | |
| 66 | + | |
| 67 | + return output; | |
| 68 | +} | |
| @@ -360,6 +360,7 @@ export function convertCohereMessages(messages, names) { | ||
| 360 | 360 | */ |
| 361 | 361 | export function convertGooglePrompt(messages, model, useSysPrompt, names) { |
| 362 | 362 | const visionSupportedModels = [ |
| 363 | + 'gemini-2.5-pro-preview-03-25', | |
| 363 | 364 | 'gemini-2.5-pro-exp-03-25', |
| 364 | 365 | 'gemini-2.0-pro-exp', |
| 365 | 366 | 'gemini-2.0-pro-exp-02-05', |
| @@ -412,7 +413,7 @@ export function convertGooglePrompt(messages, model, useSysPrompt, names) { | ||
| 412 | 413 | } |
| 413 | 414 | } |
| 414 | 415 | |
| 415 | 416 | const system_instruction = { parts: [{ text: sys_prompt.trim() } ]}; |
| 416 | 417 | const toolNameMap = {}; |
| 417 | 418 | |
| 418 | 419 | const contents = []; |