From 429242b4d3bb6e24badfc403f690540b3b44cd6f Mon Sep 17 00:00:00 2001 From: Self Denial Date: Wed, 10 Apr 2024 20:30:00 -0600 Subject: [PATCH 01/59] Introduce Whisper model auto-update control. * Introduce WHISPER_MODEL_AUTO_UPDATE env var * Pass local_files_only to WhisperModel() * Handle cases where auto-update is disabled but model is non-existent --- backend/apps/audio/main.py | 23 +++++++++++++++++------ backend/config.py | 3 +++ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/backend/apps/audio/main.py b/backend/apps/audio/main.py index 02d1f5e8..4f65b5f5 100644 --- a/backend/apps/audio/main.py +++ b/backend/apps/audio/main.py @@ -28,6 +28,7 @@ from config import ( UPLOAD_DIR, WHISPER_MODEL, WHISPER_MODEL_DIR, + WHISPER_MODEL_AUTO_UPDATE, DEVICE_TYPE, ) @@ -69,12 +70,22 @@ def transcribe( f.write(contents) f.close() - model = WhisperModel( - WHISPER_MODEL, - device=whisper_device_type, - compute_type="int8", - download_root=WHISPER_MODEL_DIR, - ) + whisper_kwargs = { + "model_size_or_path": WHISPER_MODEL, + "device": whisper_device_type, + "compute_type": "int8", + "download_root": WHISPER_MODEL_DIR, + "local_files_only": not WHISPER_MODEL_AUTO_UPDATE, + } + + log.debug(f"whisper_kwargs: {whisper_kwargs}") + + try: + model = WhisperModel(**whisper_kwargs) + except: + log.debug("WhisperModel initialization failed, attempting download with local_files_only=False") + whisper_kwargs["local_files_only"] = False + model = WhisperModel(**whisper_kwargs) segments, info = model.transcribe(file_path, beam_size=5) log.info( diff --git a/backend/config.py b/backend/config.py index 6e3cf92a..4436a5a0 100644 --- a/backend/config.py +++ b/backend/config.py @@ -446,6 +446,9 @@ Query: [query]""" WHISPER_MODEL = os.getenv("WHISPER_MODEL", "base") WHISPER_MODEL_DIR = os.getenv("WHISPER_MODEL_DIR", f"{CACHE_DIR}/whisper/models") +WHISPER_MODEL_AUTO_UPDATE = ( + os.environ.get("WHISPER_MODEL_AUTO_UPDATE", "").lower() == "true" +) #################################### From 81c8717d75170a5d5a8526dea35894060105d222 Mon Sep 17 00:00:00 2001 From: Self Denial Date: Wed, 10 Apr 2024 20:44:44 -0600 Subject: [PATCH 02/59] Format fix --- backend/apps/audio/main.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/apps/audio/main.py b/backend/apps/audio/main.py index 4f65b5f5..0111ebaf 100644 --- a/backend/apps/audio/main.py +++ b/backend/apps/audio/main.py @@ -80,10 +80,12 @@ def transcribe( log.debug(f"whisper_kwargs: {whisper_kwargs}") - try: + try: model = WhisperModel(**whisper_kwargs) except: - log.debug("WhisperModel initialization failed, attempting download with local_files_only=False") + log.debug( + "WhisperModel initialization failed, attempting download with local_files_only=False" + ) whisper_kwargs["local_files_only"] = False model = WhisperModel(**whisper_kwargs) From 3b8ea55bc8ec0cd00b31001e431021c39b174150 Mon Sep 17 00:00:00 2001 From: Self Denial Date: Wed, 10 Apr 2024 23:21:12 -0600 Subject: [PATCH 03/59] Add IMAGE_GENERATION_ENABLED env var With default of `False`. --- backend/apps/images/main.py | 4 ++-- backend/config.py | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/backend/apps/images/main.py b/backend/apps/images/main.py index af8cbf7c..bf312598 100644 --- a/backend/apps/images/main.py +++ b/backend/apps/images/main.py @@ -29,7 +29,7 @@ import base64 import json import logging -from config import SRC_LOG_LEVELS, CACHE_DIR, AUTOMATIC1111_BASE_URL, COMFYUI_BASE_URL +from config import SRC_LOG_LEVELS, CACHE_DIR, IMAGE_GENERATION_ENABLED, AUTOMATIC1111_BASE_URL, COMFYUI_BASE_URL log = logging.getLogger(__name__) @@ -48,7 +48,7 @@ app.add_middleware( ) app.state.ENGINE = "" -app.state.ENABLED = False +app.state.ENABLED = IMAGE_GENERATION_ENABLED app.state.OPENAI_API_KEY = "" app.state.MODEL = "" diff --git a/backend/config.py b/backend/config.py index 6e3cf92a..24ccaa47 100644 --- a/backend/config.py +++ b/backend/config.py @@ -452,5 +452,8 @@ WHISPER_MODEL_DIR = os.getenv("WHISPER_MODEL_DIR", f"{CACHE_DIR}/whisper/models" # Images #################################### +IMAGE_GENERATION_ENABLED = ( + os.environ.get("IMAGE_GENERATION_ENABLED", "").lower() == "true" +) AUTOMATIC1111_BASE_URL = os.getenv("AUTOMATIC1111_BASE_URL", "") COMFYUI_BASE_URL = os.getenv("COMFYUI_BASE_URL", "") From ff0139881212d636232880f7b5bf1656104f0e0d Mon Sep 17 00:00:00 2001 From: Self Denial Date: Wed, 10 Apr 2024 23:39:11 -0600 Subject: [PATCH 04/59] Format fix --- backend/apps/images/main.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/backend/apps/images/main.py b/backend/apps/images/main.py index bf312598..271928f0 100644 --- a/backend/apps/images/main.py +++ b/backend/apps/images/main.py @@ -29,7 +29,13 @@ import base64 import json import logging -from config import SRC_LOG_LEVELS, CACHE_DIR, IMAGE_GENERATION_ENABLED, AUTOMATIC1111_BASE_URL, COMFYUI_BASE_URL +from config import ( + SRC_LOG_LEVELS, + CACHE_DIR, + IMAGE_GENERATION_ENABLED, + AUTOMATIC1111_BASE_URL, + COMFYUI_BASE_URL, +) log = logging.getLogger(__name__) From 872ea83c50a38cacea30c77cd0e64ea67f36d2aa Mon Sep 17 00:00:00 2001 From: tabacoWang <7a6ac0@users.noreply.github.com> Date: Tue, 2 Apr 2024 18:22:56 +0800 Subject: [PATCH 05/59] feat: admin panel user list pagination --- src/lib/components/common/Paginator.svelte | 254 +++++++++++++++++++++ src/routes/(app)/admin/+page.svelte | 18 +- 2 files changed, 271 insertions(+), 1 deletion(-) create mode 100644 src/lib/components/common/Paginator.svelte diff --git a/src/lib/components/common/Paginator.svelte b/src/lib/components/common/Paginator.svelte new file mode 100644 index 00000000..dd5c5296 --- /dev/null +++ b/src/lib/components/common/Paginator.svelte @@ -0,0 +1,254 @@ + + +
+ + {#if settings.amounts.length} + + {/if} + +
+ + {#if showFirstLastButtons} + + {/if} + + {#if showPreviousNextButtons} + + {/if} + + {#if showNumerals === false} + + + {:else} + + {#each controlPages as page} + + {/each} + {/if} + + {#if showPreviousNextButtons} + + {/if} + + {#if showFirstLastButtons} + + {/if} +
+
diff --git a/src/routes/(app)/admin/+page.svelte b/src/routes/(app)/admin/+page.svelte index a90b3262..92a8315b 100644 --- a/src/routes/(app)/admin/+page.svelte +++ b/src/routes/(app)/admin/+page.svelte @@ -12,6 +12,7 @@ import { getSignUpEnabledStatus, toggleSignUpEnabledStatus } from '$lib/apis/auths'; import EditUserModal from '$lib/components/admin/EditUserModal.svelte'; import SettingsModal from '$lib/components/admin/SettingsModal.svelte'; + import Paginator from '$lib/components/common/Paginator.svelte'; const i18n = getContext('i18n'); @@ -24,6 +25,13 @@ let showSettingsModal = false; let showEditUserModal = false; + let paginatorSettings = { + page: 0, + limit: 5, + size: users.length, + amounts: [5, 10, 15, 20] + }; + const updateRoleHandler = async (id, role) => { const res = await updateUserRole(localStorage.token, id, role).catch((error) => { toast.error(error); @@ -64,6 +72,13 @@ } loaded = true; }); + + $: paginatedSource = users.slice( + paginatorSettings.page * paginatorSettings.limit, + paginatorSettings.page * paginatorSettings.limit + paginatorSettings.limit + ); + + $: paginatorSettings.size = users.length; @@ -159,7 +174,7 @@ - {#each users.filter((user) => { + {#each paginatedSource.filter((user) => { if (search === '') { return true; } else { @@ -265,6 +280,7 @@ {/each} +
From 8a9cf44dbc2c7c377659dfcbeb39905575edfeea Mon Sep 17 00:00:00 2001 From: tabacoWang <7a6ac0@users.noreply.github.com> Date: Mon, 8 Apr 2024 11:23:20 +0800 Subject: [PATCH 06/59] feat: combine with search result --- src/routes/(app)/admin/+page.svelte | 31 ++++++++++++++++------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/routes/(app)/admin/+page.svelte b/src/routes/(app)/admin/+page.svelte index 92a8315b..6d153d8a 100644 --- a/src/routes/(app)/admin/+page.svelte +++ b/src/routes/(app)/admin/+page.svelte @@ -73,10 +73,20 @@ loaded = true; }); - $: paginatedSource = users.slice( - paginatorSettings.page * paginatorSettings.limit, - paginatorSettings.page * paginatorSettings.limit + paginatorSettings.limit - ); + $: paginatedSource = users + .filter((user) => { + if (search === '') { + return true; + } else { + let name = user.name.toLowerCase(); + const query = search.toLowerCase(); + return name.includes(query); + } + }) + .slice( + paginatorSettings.page * paginatorSettings.limit, + paginatorSettings.page * paginatorSettings.limit + paginatorSettings.limit + ); $: paginatorSettings.size = users.length; @@ -174,15 +184,7 @@ - {#each paginatedSource.filter((user) => { - if (search === '') { - return true; - } else { - let name = user.name.toLowerCase(); - const query = search.toLowerCase(); - return name.includes(query); - } - }) as user} + {#each paginatedSource as user}
ⓘ {$i18n.t("Click on the user role button to change a user's role.")}
+ + From 1d8496eabb5fa69ace5fd57a001b5722096a6246 Mon Sep 17 00:00:00 2001 From: Valentino Stillhardt <4715129+Fusseldieb@users.noreply.github.com> Date: Thu, 11 Apr 2024 10:58:46 -0300 Subject: [PATCH 07/59] Fixed malformed date format --- src/lib/i18n/locales/pt-BR/translation.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/i18n/locales/pt-BR/translation.json b/src/lib/i18n/locales/pt-BR/translation.json index 9dd6b11a..5d5369e4 100644 --- a/src/lib/i18n/locales/pt-BR/translation.json +++ b/src/lib/i18n/locales/pt-BR/translation.json @@ -86,7 +86,7 @@ "Customize Ollama models for a specific purpose": "Personalize os modelos Ollama para um propósito específico", "Dark": "Escuro", "Database": "Banco de dados", - "DD/MM/YYYY HH:mm": "DD/MM/AAAA HH:mm", + "DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm", "Default": "Padrão", "Default (Automatic1111)": "Padrão (Automatic1111)", "Default (Web API)": "Padrão (API Web)", From 6623ecb3028e8c360ec750852a141c86d8b4b4ce Mon Sep 17 00:00:00 2001 From: JanSolo1 Date: Fri, 12 Apr 2024 00:36:48 +0200 Subject: [PATCH 08/59] Comment fix config.py ln 412 --- backend/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/config.py b/backend/config.py index 6e3cf92a..92cd9b56 100644 --- a/backend/config.py +++ b/backend/config.py @@ -409,7 +409,7 @@ RAG_EMBEDDING_MODEL_AUTO_UPDATE = ( ) -# device type ebbeding models - "cpu" (default), "cuda" (nvidia gpu required) or "mps" (apple silicon) - choosing this right can lead to better performance +# device type embbeding models - "cpu" (default), "cuda" (nvidia gpu required) or "mps" (apple silicon) - choosing the correct model can lead to better performance USE_CUDA = os.environ.get("USE_CUDA_DOCKER", "false") if USE_CUDA.lower() == "true": From 79a4abc3ec978cc5d635c0570418fb5978aeb890 Mon Sep 17 00:00:00 2001 From: JanSolo1 Date: Fri, 12 Apr 2024 00:44:44 +0200 Subject: [PATCH 09/59] Comment spelling mistake fix --- backend/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/config.py b/backend/config.py index 92cd9b56..1633acc3 100644 --- a/backend/config.py +++ b/backend/config.py @@ -409,7 +409,7 @@ RAG_EMBEDDING_MODEL_AUTO_UPDATE = ( ) -# device type embbeding models - "cpu" (default), "cuda" (nvidia gpu required) or "mps" (apple silicon) - choosing the correct model can lead to better performance +# device type embbeding models - "cpu" (default), "cuda" (nvidia gpu required) or "mps" (apple silicon) - choosing this right can lead to better performance USE_CUDA = os.environ.get("USE_CUDA_DOCKER", "false") if USE_CUDA.lower() == "true": From e17d66eb61bd62ec711c82a291cea05a9f006d6f Mon Sep 17 00:00:00 2001 From: Que Nguyen Date: Fri, 12 Apr 2024 09:44:40 +0700 Subject: [PATCH 10/59] Update locales/vi-VN/translation.json Fixed translation errors in Vietnamese locale file `locales/vi-VN/translation.json` --- src/lib/i18n/locales/vi-VN/translation.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/lib/i18n/locales/vi-VN/translation.json b/src/lib/i18n/locales/vi-VN/translation.json index 1ef7fef8..36ad86ab 100644 --- a/src/lib/i18n/locales/vi-VN/translation.json +++ b/src/lib/i18n/locales/vi-VN/translation.json @@ -55,9 +55,9 @@ "Check for updates": "Kiểm tra cập nhật", "Checking for updates...": "Đang kiểm tra cập nhật...", "Choose a model before saving...": "Chọn mô hình trước khi lưu...", - "Chunk Overlap": "Kích thước chồng lấn (overlap)", + "Chunk Overlap": "Chồng lấn (overlap)", "Chunk Params": "Cài đặt số lượng ký tự cho khối ký tự (chunk)", - "Chunk Size": "Kích thức khối (size)", + "Chunk Size": "Kích thước khối (size)", "Click here for help.": "Bấm vào đây để được trợ giúp.", "Click here to check other modelfiles.": "Bấm vào đây để kiểm tra các tệp mô tả mô hình (modelfiles) khác.", "Click here to select": "Bấm vào đây để chọn", @@ -65,7 +65,7 @@ "click here.": "bấm vào đây.", "Click on the user role button to change a user's role.": "Bấm vào nút trong cột VAI TRÒ để thay đổi quyền của người sử dụng.", "Close": "Đóng", - "Collection": "Bộ sưu tập", + "Collection": "Tổng hợp mọi tài liệu", "Command": "Lệnh", "Confirm Password": "Xác nhận Mật khẩu", "Connections": "Kết nối", @@ -76,7 +76,7 @@ "Copy last response": "Sao chép phản hồi cuối cùng", "Copying to clipboard was successful!": "Sao chép vào clipboard thành công!", "Create a concise, 3-5 word phrase as a header for the following query, strictly adhering to the 3-5 word limit and avoiding the use of the word 'title':": "Tạo một cụm từ súc tích, 3-5 từ làm tiêu đề cho truy vấn sau, tuân thủ nghiêm ngặt giới hạn 3-5 từ và tránh sử dụng từ 'tiêu đề':", - "Create a modelfile": "Tạo tệp mô tả mô hình", + "Create a modelfile": "Tạo tệp mô tả cho mô hình", "Create Account": "Tạo Tài khoản", "Created at": "Được tạo vào lúc", "Created by": "Được tạo bởi", @@ -347,7 +347,7 @@ "Valid time units:": "Đơn vị thời gian hợp lệ:", "variable": "biến", "variable to have them replaced with clipboard content.": "biến để có chúng được thay thế bằng nội dung clipboard.", - "Version": "Phiên bản", + "Version": "Version", "Web": "Web", "WebUI Add-ons": "Tiện ích WebUI", "WebUI Settings": "Cài đặt WebUI", From c49cc3fa86a92c26ad1ea352d44f78faa3d32440 Mon Sep 17 00:00:00 2001 From: tabacoWang <7a6ac0@users.noreply.github.com> Date: Fri, 12 Apr 2024 17:27:40 +0800 Subject: [PATCH 11/59] fix: Invoke the function before it is defined --- backend/config.py | 86 +++++++++++++++++++++++++---------------------- 1 file changed, 45 insertions(+), 41 deletions(-) diff --git a/backend/config.py b/backend/config.py index 6e3cf92a..b90935be 100644 --- a/backend/config.py +++ b/backend/config.py @@ -18,6 +18,51 @@ from secrets import token_bytes from constants import ERROR_MESSAGES +#################################### +# LOGGING +#################################### + +log_levels = ["CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG"] + +GLOBAL_LOG_LEVEL = os.environ.get("GLOBAL_LOG_LEVEL", "").upper() +if GLOBAL_LOG_LEVEL in log_levels: + logging.basicConfig(stream=sys.stdout, level=GLOBAL_LOG_LEVEL, force=True) +else: + GLOBAL_LOG_LEVEL = "INFO" + +log = logging.getLogger(__name__) +log.info(f"GLOBAL_LOG_LEVEL: {GLOBAL_LOG_LEVEL}") + +log_sources = [ + "AUDIO", + "COMFYUI", + "CONFIG", + "DB", + "IMAGES", + "LITELLM", + "MAIN", + "MODELS", + "OLLAMA", + "OPENAI", + "RAG", + "WEBHOOK", +] + +SRC_LOG_LEVELS = {} + +for source in log_sources: + log_env_var = source + "_LOG_LEVEL" + SRC_LOG_LEVELS[source] = os.environ.get(log_env_var, "").upper() + if SRC_LOG_LEVELS[source] not in log_levels: + SRC_LOG_LEVELS[source] = GLOBAL_LOG_LEVEL + log.info(f"{log_env_var}: {SRC_LOG_LEVELS[source]}") + +log.setLevel(SRC_LOG_LEVELS["CONFIG"]) + +#################################### +# Load .env file +#################################### + try: from dotenv import load_dotenv, find_dotenv @@ -122,47 +167,6 @@ STATIC_DIR = str(Path(os.getenv("STATIC_DIR", "./static")).resolve()) shutil.copyfile(f"{FRONTEND_BUILD_DIR}/favicon.png", f"{STATIC_DIR}/favicon.png") -#################################### -# LOGGING -#################################### -log_levels = ["CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG"] - -GLOBAL_LOG_LEVEL = os.environ.get("GLOBAL_LOG_LEVEL", "").upper() -if GLOBAL_LOG_LEVEL in log_levels: - logging.basicConfig(stream=sys.stdout, level=GLOBAL_LOG_LEVEL, force=True) -else: - GLOBAL_LOG_LEVEL = "INFO" - -log = logging.getLogger(__name__) -log.info(f"GLOBAL_LOG_LEVEL: {GLOBAL_LOG_LEVEL}") - -log_sources = [ - "AUDIO", - "COMFYUI", - "CONFIG", - "DB", - "IMAGES", - "LITELLM", - "MAIN", - "MODELS", - "OLLAMA", - "OPENAI", - "RAG", - "WEBHOOK", -] - -SRC_LOG_LEVELS = {} - -for source in log_sources: - log_env_var = source + "_LOG_LEVEL" - SRC_LOG_LEVELS[source] = os.environ.get(log_env_var, "").upper() - if SRC_LOG_LEVELS[source] not in log_levels: - SRC_LOG_LEVELS[source] = GLOBAL_LOG_LEVEL - log.info(f"{log_env_var}: {SRC_LOG_LEVELS[source]}") - -log.setLevel(SRC_LOG_LEVELS["CONFIG"]) - - #################################### # CUSTOM_NAME #################################### From e08c144f0b93672eae7eff1f4914a8bc14751f00 Mon Sep 17 00:00:00 2001 From: Dario Thornhill Date: Sat, 13 Apr 2024 07:32:28 +0200 Subject: [PATCH 12/59] fix(helm): remove trailing slash The trailing `/` causes requests to be written with `//` and results in 404 responses from the ollama service. This results in ollama models being unusable. Removing the training slash here resolves the issue. --- kubernetes/helm/templates/_helpers.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/helm/templates/_helpers.tpl b/kubernetes/helm/templates/_helpers.tpl index 0f514523..6233efab 100644 --- a/kubernetes/helm/templates/_helpers.tpl +++ b/kubernetes/helm/templates/_helpers.tpl @@ -10,7 +10,7 @@ ollama {{- if .Values.ollama.externalHost }} {{- printf .Values.ollama.externalHost }} {{- else }} -{{- printf "http://%s.%s.svc.cluster.local:%d/" (include "ollama.name" .) (.Release.Namespace) (.Values.ollama.service.port | int) }} +{{- printf "http://%s.%s.svc.cluster.local:%d" (include "ollama.name" .) (.Release.Namespace) (.Values.ollama.service.port | int) }} {{- end }} {{- end }} From 922628c1ee21cb1ae601aa1eca43bdbc3be156d6 Mon Sep 17 00:00:00 2001 From: Self Denial Date: Sat, 13 Apr 2024 03:04:11 -0600 Subject: [PATCH 13/59] feat: small change to support ollama pull QOL Use regex replace during trim "sanitize" to support `ollama run ` or `ollama pull ` syntax. --- src/lib/components/chat/Settings/Models.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/chat/Settings/Models.svelte b/src/lib/components/chat/Settings/Models.svelte index baa2f6c4..15b05402 100644 --- a/src/lib/components/chat/Settings/Models.svelte +++ b/src/lib/components/chat/Settings/Models.svelte @@ -139,7 +139,7 @@ }; const pullModelHandler = async () => { - const sanitizedModelTag = modelTag.trim(); + const sanitizedModelTag = modelTag.trim().replace(/^ollama\s+(run|pull)\s+/, ''); if (modelDownloadStatus[sanitizedModelTag]) { toast.error( $i18n.t(`Model '{{modelTag}}' is already in queue for downloading.`, { From faa58841508c181a08e816c1a90d487910adf20c Mon Sep 17 00:00:00 2001 From: Self Denial Date: Sat, 13 Apr 2024 03:18:13 -0600 Subject: [PATCH 14/59] Use log.warning instead of log.debug --- backend/apps/audio/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/apps/audio/main.py b/backend/apps/audio/main.py index 0111ebaf..f93b50f6 100644 --- a/backend/apps/audio/main.py +++ b/backend/apps/audio/main.py @@ -83,7 +83,7 @@ def transcribe( try: model = WhisperModel(**whisper_kwargs) except: - log.debug( + log.warning( "WhisperModel initialization failed, attempting download with local_files_only=False" ) whisper_kwargs["local_files_only"] = False From db817fcf29cdeede00244c8eb8bbbc726fdf4b39 Mon Sep 17 00:00:00 2001 From: Jun Siang Cheah Date: Sat, 13 Apr 2024 18:26:50 +0100 Subject: [PATCH 15/59] feat: add {{prompt:start:length}} and {{prompt:end:length}} to title gen --- src/lib/apis/ollama/index.ts | 3 ++- src/lib/apis/openai/index.ts | 3 ++- src/lib/utils/index.ts | 25 +++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/lib/apis/ollama/index.ts b/src/lib/apis/ollama/index.ts index 7c4e809e..237c1642 100644 --- a/src/lib/apis/ollama/index.ts +++ b/src/lib/apis/ollama/index.ts @@ -1,4 +1,5 @@ import { OLLAMA_API_BASE_URL } from '$lib/constants'; +import { templatePrompt } from '$lib/utils'; export const getOllamaUrls = async (token: string = '') => { let error = null; @@ -144,7 +145,7 @@ export const generateTitle = async ( ) => { let error = null; - template = template.replace(/{{prompt}}/g, prompt); + template = templatePrompt(template, prompt); console.log(template); diff --git a/src/lib/apis/openai/index.ts b/src/lib/apis/openai/index.ts index 7d0d9415..1502b4a8 100644 --- a/src/lib/apis/openai/index.ts +++ b/src/lib/apis/openai/index.ts @@ -1,4 +1,5 @@ import { OPENAI_API_BASE_URL } from '$lib/constants'; +import { templatePrompt } from '$lib/utils'; export const getOpenAIUrls = async (token: string = '') => { let error = null; @@ -273,7 +274,7 @@ export const generateTitle = async ( ) => { let error = null; - template = template.replace(/{{prompt}}/g, prompt); + template = templatePrompt(template, prompt); console.log(template); diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index e9a4e229..8a3cdf16 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -467,3 +467,28 @@ export const blobToFile = (blob, fileName) => { const file = new File([blob], fileName, { type: blob.type }); return file; }; + +// templatePrompt replaces any occurrences of the following in the template with the prompt +// {{prompt}} will be replaced with the prompt +// {{prompt:start:}} will be replaced with the first characters of the prompt +// {{prompt:end:}} will be replaced with the last characters of the prompt +// Character length is used as we don't have the ability to tokenize the prompt +export const templatePrompt = (template, prompt) => { + template = template.replace(/{{prompt}}/g, prompt); + + // Replace {{prompt:start:}} with the first characters of the prompt + const startMatch = template.match(/{{prompt:start:(\d+)}}/); + if (startMatch) { + const length = parseInt(startMatch[1]); + template = template.replace(startMatch[0], prompt.substring(0, length)); + } + + // Replace {{prompt:end:}} with the last characters of the prompt + const endMatch = template.match(/{{prompt:end:(\d+)}}/); + if (endMatch) { + const length = parseInt(endMatch[1]); + template = template.replace(endMatch[0], prompt.substring(prompt.length - length)); + } + + return template; +}; From fffd42e4d782b37fe7771d9aaa4ff8653b79c88b Mon Sep 17 00:00:00 2001 From: Jun Siang Cheah Date: Sat, 13 Apr 2024 18:44:49 +0100 Subject: [PATCH 16/59] fix: replace all instances of prompt:start and prompt:end --- src/lib/utils/index.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index 8a3cdf16..3ea82783 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -473,19 +473,21 @@ export const blobToFile = (blob, fileName) => { // {{prompt:start:}} will be replaced with the first characters of the prompt // {{prompt:end:}} will be replaced with the last characters of the prompt // Character length is used as we don't have the ability to tokenize the prompt -export const templatePrompt = (template, prompt) => { +export const templatePrompt = (template: string, prompt: string) => { template = template.replace(/{{prompt}}/g, prompt); - // Replace {{prompt:start:}} with the first characters of the prompt - const startMatch = template.match(/{{prompt:start:(\d+)}}/); - if (startMatch) { + // Replace all instances of {{prompt:start:}} with the first characters of the prompt + const startRegex = /{{prompt:start:(\d+)}}/g; + let startMatch: RegExpMatchArray | null; + while ((startMatch = startRegex.exec(template)) !== null) { const length = parseInt(startMatch[1]); template = template.replace(startMatch[0], prompt.substring(0, length)); } - // Replace {{prompt:end:}} with the last characters of the prompt - const endMatch = template.match(/{{prompt:end:(\d+)}}/); - if (endMatch) { + // Replace all instances of {{prompt:end:}} with the last characters of the prompt + const endRegex = /{{prompt:end:(\d+)}}/g; + let endMatch: RegExpMatchArray | null; + while ((endMatch = endRegex.exec(template)) !== null) { const length = parseInt(endMatch[1]); template = template.replace(endMatch[0], prompt.substring(prompt.length - length)); } From 838778aa3e6b1166f3b217c07e5ef7cfd3b2cbab Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Sat, 13 Apr 2024 14:40:54 -0700 Subject: [PATCH 17/59] fix: typo --- backend/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/config.py b/backend/config.py index cb4aca75..311a9f05 100644 --- a/backend/config.py +++ b/backend/config.py @@ -413,7 +413,7 @@ RAG_EMBEDDING_MODEL_AUTO_UPDATE = ( ) -# device type embbeding models - "cpu" (default), "cuda" (nvidia gpu required) or "mps" (apple silicon) - choosing this right can lead to better performance +# device type embedding models - "cpu" (default), "cuda" (nvidia gpu required) or "mps" (apple silicon) - choosing this right can lead to better performance USE_CUDA = os.environ.get("USE_CUDA_DOCKER", "false") if USE_CUDA.lower() == "true": From 2649d29a3ef455e8180aee6c05b0cba2f62ef2bd Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Sat, 13 Apr 2024 14:42:38 -0700 Subject: [PATCH 18/59] fix: manifest.json issue --- src/app.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app.html b/src/app.html index f731761c..2d1ef0d1 100644 --- a/src/app.html +++ b/src/app.html @@ -3,7 +3,7 @@ - + + +
+ +
+ + + +
+ {#each pages as page (page.key)} + {#if page.type === 'ellipsis'} +
...
+ {:else} + + {page.value} + + {/if} + {/each} +
+ + + +
+
+
diff --git a/src/lib/components/common/Paginator.svelte b/src/lib/components/common/Paginator.svelte deleted file mode 100644 index dd5c5296..00000000 --- a/src/lib/components/common/Paginator.svelte +++ /dev/null @@ -1,254 +0,0 @@ - - -
- - {#if settings.amounts.length} - - {/if} - -
- - {#if showFirstLastButtons} - - {/if} - - {#if showPreviousNextButtons} - - {/if} - - {#if showNumerals === false} - - - {:else} - - {#each controlPages as page} - - {/each} - {/if} - - {#if showPreviousNextButtons} - - {/if} - - {#if showFirstLastButtons} - - {/if} -
-
diff --git a/src/lib/components/icons/ChevronLeft.svelte b/src/lib/components/icons/ChevronLeft.svelte new file mode 100644 index 00000000..78ee64d2 --- /dev/null +++ b/src/lib/components/icons/ChevronLeft.svelte @@ -0,0 +1,15 @@ + + + + + diff --git a/src/lib/components/icons/ChevronRight.svelte b/src/lib/components/icons/ChevronRight.svelte new file mode 100644 index 00000000..7daf4a14 --- /dev/null +++ b/src/lib/components/icons/ChevronRight.svelte @@ -0,0 +1,15 @@ + + + + + diff --git a/src/routes/(app)/admin/+page.svelte b/src/routes/(app)/admin/+page.svelte index 6d153d8a..a3493cb6 100644 --- a/src/routes/(app)/admin/+page.svelte +++ b/src/routes/(app)/admin/+page.svelte @@ -12,7 +12,7 @@ import { getSignUpEnabledStatus, toggleSignUpEnabledStatus } from '$lib/apis/auths'; import EditUserModal from '$lib/components/admin/EditUserModal.svelte'; import SettingsModal from '$lib/components/admin/SettingsModal.svelte'; - import Paginator from '$lib/components/common/Paginator.svelte'; + import Pagination from '$lib/components/common/Pagination.svelte'; const i18n = getContext('i18n'); @@ -22,16 +22,11 @@ let search = ''; let selectedUser = null; + let page = 1; + let showSettingsModal = false; let showEditUserModal = false; - let paginatorSettings = { - page: 0, - limit: 5, - size: users.length, - amounts: [5, 10, 15, 20] - }; - const updateRoleHandler = async (id, role) => { const res = await updateUserRole(localStorage.token, id, role).catch((error) => { toast.error(error); @@ -72,23 +67,6 @@ } loaded = true; }); - - $: paginatedSource = users - .filter((user) => { - if (search === '') { - return true; - } else { - let name = user.name.toLowerCase(); - const query = search.toLowerCase(); - return name.includes(query); - } - }) - .slice( - paginatorSettings.page * paginatorSettings.limit, - paginatorSettings.page * paginatorSettings.limit + paginatorSettings.limit - ); - - $: paginatorSettings.size = users.length; @@ -184,7 +162,17 @@ - {#each paginatedSource as user} + {#each users + .filter((user) => { + if (search === '') { + return true; + } else { + let name = user.name.toLowerCase(); + const query = search.toLowerCase(); + return name.includes(query); + } + }) + .slice((page - 1) * 20, page * 20) as user} -
-
-
{$i18n.t('Update Embedding Model')}
-
-
- -
- +
+ +
+ {$i18n.t( + 'Warning: If you update or change your embedding model, you will need to re-import all documents.' + )} +
+ {/if} + +
+ +
+
+ {$i18n.t('Scan for documents from {{path}}', { path: '/data/docs' })} +
+ +
-
- {$i18n.t( - 'Warning: If you update or change your embedding model, you will need to re-import all documents.' - )} -
-
From 9cdb5bf9fe656fb26d1e0a2fc7551af1e08cbfb2 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Sun, 14 Apr 2024 18:31:40 -0400 Subject: [PATCH 33/59] feat: frontend integration --- backend/apps/rag/main.py | 34 +++-- src/lib/apis/rag/index.ts | 9 +- .../documents/Settings/General.svelte | 124 +++++++++++++++--- 3 files changed, 134 insertions(+), 33 deletions(-) diff --git a/backend/apps/rag/main.py b/backend/apps/rag/main.py index 423f1e03..e1a5e6eb 100644 --- a/backend/apps/rag/main.py +++ b/backend/apps/rag/main.py @@ -138,20 +138,22 @@ async def get_status(): } -@app.get("/embedding/model") -async def get_embedding_model(user=Depends(get_admin_user)): +@app.get("/embedding") +async def get_embedding_config(user=Depends(get_admin_user)): return { "status": True, + "embedding_engine": app.state.RAG_EMBEDDING_ENGINE, "embedding_model": app.state.RAG_EMBEDDING_MODEL, } class EmbeddingModelUpdateForm(BaseModel): + embedding_engine: str embedding_model: str -@app.post("/embedding/model/update") -async def update_embedding_model( +@app.post("/embedding/update") +async def update_embedding_config( form_data: EmbeddingModelUpdateForm, user=Depends(get_admin_user) ): @@ -160,18 +162,26 @@ async def update_embedding_model( ) try: - sentence_transformer_ef = ( - embedding_functions.SentenceTransformerEmbeddingFunction( - model_name=get_embedding_model_path(form_data.embedding_model, True), - device=DEVICE_TYPE, - ) - ) + app.state.RAG_EMBEDDING_ENGINE = form_data.embedding_engine - app.state.RAG_EMBEDDING_MODEL = form_data.embedding_model - app.state.sentence_transformer_ef = sentence_transformer_ef + if app.state.RAG_EMBEDDING_ENGINE == "ollama": + app.state.RAG_EMBEDDING_MODEL = form_data.embedding_model + app.state.sentence_transformer_ef = None + else: + sentence_transformer_ef = ( + embedding_functions.SentenceTransformerEmbeddingFunction( + model_name=get_embedding_model_path( + form_data.embedding_model, True + ), + device=DEVICE_TYPE, + ) + ) + app.state.RAG_EMBEDDING_MODEL = form_data.embedding_model + app.state.sentence_transformer_ef = sentence_transformer_ef return { "status": True, + "embedding_engine": app.state.RAG_EMBEDDING_ENGINE, "embedding_model": app.state.RAG_EMBEDDING_MODEL, } diff --git a/src/lib/apis/rag/index.ts b/src/lib/apis/rag/index.ts index 33c70e2b..bfcee55f 100644 --- a/src/lib/apis/rag/index.ts +++ b/src/lib/apis/rag/index.ts @@ -346,10 +346,10 @@ export const resetVectorDB = async (token: string) => { return res; }; -export const getEmbeddingModel = async (token: string) => { +export const getEmbeddingConfig = async (token: string) => { let error = null; - const res = await fetch(`${RAG_API_BASE_URL}/embedding/model`, { + const res = await fetch(`${RAG_API_BASE_URL}/embedding`, { method: 'GET', headers: { 'Content-Type': 'application/json', @@ -374,13 +374,14 @@ export const getEmbeddingModel = async (token: string) => { }; type EmbeddingModelUpdateForm = { + embedding_engine: string; embedding_model: string; }; -export const updateEmbeddingModel = async (token: string, payload: EmbeddingModelUpdateForm) => { +export const updateEmbeddingConfig = async (token: string, payload: EmbeddingModelUpdateForm) => { let error = null; - const res = await fetch(`${RAG_API_BASE_URL}/embedding/model/update`, { + const res = await fetch(`${RAG_API_BASE_URL}/embedding/update`, { method: 'POST', headers: { 'Content-Type': 'application/json', diff --git a/src/lib/components/documents/Settings/General.svelte b/src/lib/components/documents/Settings/General.svelte index 85df678c..c9142fbe 100644 --- a/src/lib/components/documents/Settings/General.svelte +++ b/src/lib/components/documents/Settings/General.svelte @@ -7,11 +7,11 @@ scanDocs, updateQuerySettings, resetVectorDB, - getEmbeddingModel, - updateEmbeddingModel + getEmbeddingConfig, + updateEmbeddingConfig } from '$lib/apis/rag'; - import { documents } from '$lib/stores'; + import { documents, models } from '$lib/stores'; import { onMount, getContext } from 'svelte'; import { toast } from 'svelte-sonner'; @@ -27,6 +27,8 @@ let showResetConfirm = false; let embeddingEngine = ''; + let embeddingModel = ''; + let chunkSize = 0; let chunkOverlap = 0; let pdfExtractImages = true; @@ -36,8 +38,6 @@ k: 4 }; - let embeddingModel = ''; - const scanHandler = async () => { scanDirLoading = true; const res = await scanDocs(localStorage.token); @@ -50,7 +50,16 @@ }; const embeddingModelUpdateHandler = async () => { - if (embeddingModel.split('/').length - 1 > 1) { + if (embeddingModel === '') { + toast.error( + $i18n.t( + 'Model filesystem path detected. Model shortname is required for update, cannot continue.' + ) + ); + return; + } + + if (embeddingEngine === '' && embeddingModel.split('/').length - 1 > 1) { toast.error( $i18n.t( 'Model filesystem path detected. Model shortname is required for update, cannot continue.' @@ -62,11 +71,17 @@ console.log('Update embedding model attempt:', embeddingModel); updateEmbeddingModelLoading = true; - const res = await updateEmbeddingModel(localStorage.token, { + const res = await updateEmbeddingConfig(localStorage.token, { + embedding_engine: embeddingEngine, embedding_model: embeddingModel }).catch(async (error) => { toast.error(error); - embeddingModel = (await getEmbeddingModel(localStorage.token)).embedding_model; + + const embeddingConfig = await getEmbeddingConfig(localStorage.token); + if (embeddingConfig) { + embeddingEngine = embeddingConfig.embedding_engine; + embeddingModel = embeddingConfig.embedding_model; + } return null; }); updateEmbeddingModelLoading = false; @@ -102,7 +117,12 @@ chunkOverlap = res.chunk.chunk_overlap; } - embeddingModel = (await getEmbeddingModel(localStorage.token)).embedding_model; + const embeddingConfig = await getEmbeddingConfig(localStorage.token); + + if (embeddingConfig) { + embeddingEngine = embeddingConfig.embedding_engine; + embeddingModel = embeddingConfig.embedding_model; + } querySettings = await getQuerySettings(localStorage.token); }); @@ -126,6 +146,9 @@ class="dark:bg-gray-900 w-fit pr-8 rounded px-2 p-1 text-xs bg-transparent outline-none text-right" bind:value={embeddingEngine} placeholder="Select an embedding engine" + on:change={() => { + embeddingModel = ''; + }} > @@ -136,10 +159,77 @@
+
{$i18n.t('Update Embedding Model')}
+ {#if embeddingEngine === 'ollama'} -
da
+
+
+ +
+ +
{:else} -
{$i18n.t('Update Embedding Model')}
- -
- {$i18n.t( - 'Warning: If you update or change your embedding model, you will need to re-import all documents.' - )} -
{/if} +
+ {$i18n.t( + 'Warning: If you update or change your embedding model, you will need to re-import all documents.' + )} +
+
From 36ce157907b8800bed25fd671d60359ce97c93c7 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Sun, 14 Apr 2024 18:47:45 -0400 Subject: [PATCH 34/59] fix: integration --- backend/apps/ollama/main.py | 5 +++++ backend/apps/rag/main.py | 27 ++++++++++++++++++++------- backend/apps/rag/utils.py | 3 +++ 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/backend/apps/ollama/main.py b/backend/apps/ollama/main.py index 0132179f..387ff05d 100644 --- a/backend/apps/ollama/main.py +++ b/backend/apps/ollama/main.py @@ -658,6 +658,9 @@ def generate_ollama_embeddings( form_data: GenerateEmbeddingsForm, url_idx: Optional[int] = None, ): + + log.info("generate_ollama_embeddings", form_data) + if url_idx == None: model = form_data.model @@ -685,6 +688,8 @@ def generate_ollama_embeddings( data = r.json() + log.info("generate_ollama_embeddings", data) + if "embedding" in data: return data["embedding"] else: diff --git a/backend/apps/rag/main.py b/backend/apps/rag/main.py index e1a5e6eb..976c7735 100644 --- a/backend/apps/rag/main.py +++ b/backend/apps/rag/main.py @@ -39,7 +39,7 @@ import uuid import json -from apps.ollama.main import generate_ollama_embeddings +from apps.ollama.main import generate_ollama_embeddings, GenerateEmbeddingsForm from apps.web.models.documents import ( Documents, @@ -277,7 +277,12 @@ def query_doc_handler( try: if app.state.RAG_EMBEDDING_ENGINE == "ollama": query_embeddings = generate_ollama_embeddings( - {"model": app.state.RAG_EMBEDDING_MODEL, "prompt": form_data.query} + GenerateEmbeddingsForm( + **{ + "model": app.state.RAG_EMBEDDING_MODEL, + "prompt": form_data.query, + } + ) ) return query_embeddings_doc( @@ -314,7 +319,12 @@ def query_collection_handler( try: if app.state.RAG_EMBEDDING_ENGINE == "ollama": query_embeddings = generate_ollama_embeddings( - {"model": app.state.RAG_EMBEDDING_MODEL, "prompt": form_data.query} + GenerateEmbeddingsForm( + **{ + "model": app.state.RAG_EMBEDDING_MODEL, + "prompt": form_data.query, + } + ) ) return query_embeddings_collection( @@ -373,6 +383,7 @@ def store_data_in_vector_db(data, collection_name, overwrite: bool = False) -> b docs = text_splitter.split_documents(data) if len(docs) > 0: + log.info("store_data_in_vector_db", "store_docs_in_vector_db") return store_docs_in_vector_db(docs, collection_name, overwrite), None else: raise ValueError(ERROR_MESSAGES.EMPTY_CONTENT) @@ -390,9 +401,8 @@ def store_text_in_vector_db( return store_docs_in_vector_db(docs, collection_name, overwrite) -async def store_docs_in_vector_db( - docs, collection_name, overwrite: bool = False -) -> bool: +def store_docs_in_vector_db(docs, collection_name, overwrite: bool = False) -> bool: + log.info("store_docs_in_vector_db", docs, collection_name) texts = [doc.page_content for doc in docs] metadatas = [doc.metadata for doc in docs] @@ -413,13 +423,16 @@ async def store_docs_in_vector_db( metadatas=metadatas, embeddings=[ generate_ollama_embeddings( - {"model": RAG_EMBEDDING_MODEL, "prompt": text} + GenerateEmbeddingsForm( + **{"model": RAG_EMBEDDING_MODEL, "prompt": text} + ) ) for text in texts ], ): collection.add(*batch) else: + collection = CHROMA_CLIENT.create_collection( name=collection_name, embedding_function=app.state.sentence_transformer_ef, diff --git a/backend/apps/rag/utils.py b/backend/apps/rag/utils.py index 301c63b9..17d8e4a9 100644 --- a/backend/apps/rag/utils.py +++ b/backend/apps/rag/utils.py @@ -32,6 +32,7 @@ def query_doc(collection_name: str, query: str, k: int, embedding_function): def query_embeddings_doc(collection_name: str, query_embeddings, k: int): try: # if you use docker use the model from the environment variable + log.info("query_embeddings_doc", query_embeddings) collection = CHROMA_CLIENT.get_collection( name=collection_name, ) @@ -117,6 +118,8 @@ def query_collection( def query_embeddings_collection(collection_names: List[str], query_embeddings, k: int): results = [] + log.info("query_embeddings_collection", query_embeddings) + for collection_name in collection_names: try: collection = CHROMA_CLIENT.get_collection(name=collection_name) From b48e73fa43bc574b634e7632f6133093eb221429 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Sun, 14 Apr 2024 19:15:39 -0400 Subject: [PATCH 35/59] feat: openai embeddings support --- backend/apps/rag/main.py | 158 +++++++++++++++++++++++++------------- backend/apps/rag/utils.py | 23 ++++++ 2 files changed, 127 insertions(+), 54 deletions(-) diff --git a/backend/apps/rag/main.py b/backend/apps/rag/main.py index 976c7735..11860032 100644 --- a/backend/apps/rag/main.py +++ b/backend/apps/rag/main.py @@ -53,6 +53,7 @@ from apps.rag.utils import ( query_collection, query_embeddings_collection, get_embedding_model_path, + generate_openai_embeddings, ) from utils.misc import ( @@ -93,6 +94,8 @@ app.state.RAG_EMBEDDING_ENGINE = RAG_EMBEDDING_ENGINE app.state.RAG_EMBEDDING_MODEL = RAG_EMBEDDING_MODEL app.state.RAG_TEMPLATE = RAG_TEMPLATE +app.state.RAG_OPENAI_API_BASE_URL = "https://api.openai.com" +app.state.RAG_OPENAI_API_KEY = "" app.state.PDF_EXTRACT_IMAGES = False @@ -144,10 +147,20 @@ async def get_embedding_config(user=Depends(get_admin_user)): "status": True, "embedding_engine": app.state.RAG_EMBEDDING_ENGINE, "embedding_model": app.state.RAG_EMBEDDING_MODEL, + "openai_config": { + "url": app.state.RAG_OPENAI_API_BASE_URL, + "key": app.state.RAG_OPENAI_API_KEY, + }, } +class OpenAIConfigForm(BaseModel): + url: str + key: str + + class EmbeddingModelUpdateForm(BaseModel): + openai_config: Optional[OpenAIConfigForm] = None embedding_engine: str embedding_model: str @@ -156,17 +169,19 @@ class EmbeddingModelUpdateForm(BaseModel): async def update_embedding_config( form_data: EmbeddingModelUpdateForm, user=Depends(get_admin_user) ): - log.info( f"Updating embedding model: {app.state.RAG_EMBEDDING_MODEL} to {form_data.embedding_model}" ) - try: app.state.RAG_EMBEDDING_ENGINE = form_data.embedding_engine - if app.state.RAG_EMBEDDING_ENGINE == "ollama": + if app.state.RAG_EMBEDDING_ENGINE in ["ollama", "openai"]: app.state.RAG_EMBEDDING_MODEL = form_data.embedding_model app.state.sentence_transformer_ef = None + + if form_data.openai_config != None: + app.state.RAG_OPENAI_API_BASE_URL = form_data.openai_config.url + app.state.RAG_OPENAI_API_KEY = form_data.openai_config.key else: sentence_transformer_ef = ( embedding_functions.SentenceTransformerEmbeddingFunction( @@ -183,6 +198,10 @@ async def update_embedding_config( "status": True, "embedding_engine": app.state.RAG_EMBEDDING_ENGINE, "embedding_model": app.state.RAG_EMBEDDING_MODEL, + "openai_config": { + "url": app.state.RAG_OPENAI_API_BASE_URL, + "key": app.state.RAG_OPENAI_API_KEY, + }, } except Exception as e: @@ -275,28 +294,37 @@ def query_doc_handler( ): try: - if app.state.RAG_EMBEDDING_ENGINE == "ollama": - query_embeddings = generate_ollama_embeddings( - GenerateEmbeddingsForm( - **{ - "model": app.state.RAG_EMBEDDING_MODEL, - "prompt": form_data.query, - } - ) - ) - - return query_embeddings_doc( - collection_name=form_data.collection_name, - query_embeddings=query_embeddings, - k=form_data.k if form_data.k else app.state.TOP_K, - ) - else: + if app.state.RAG_EMBEDDING_ENGINE == "": return query_doc( collection_name=form_data.collection_name, query=form_data.query, k=form_data.k if form_data.k else app.state.TOP_K, embedding_function=app.state.sentence_transformer_ef, ) + else: + if app.state.RAG_EMBEDDING_ENGINE == "ollama": + query_embeddings = generate_ollama_embeddings( + GenerateEmbeddingsForm( + **{ + "model": app.state.RAG_EMBEDDING_MODEL, + "prompt": form_data.query, + } + ) + ) + elif app.state.RAG_EMBEDDING_ENGINE == "openai": + query_embeddings = generate_openai_embeddings( + model=app.state.RAG_EMBEDDING_MODEL, + text=form_data.query, + key=app.state.RAG_OPENAI_API_KEY, + url=app.state.RAG_OPENAI_API_BASE_URL, + ) + + return query_embeddings_doc( + collection_name=form_data.collection_name, + query_embeddings=query_embeddings, + k=form_data.k if form_data.k else app.state.TOP_K, + ) + except Exception as e: log.exception(e) raise HTTPException( @@ -317,28 +345,38 @@ def query_collection_handler( user=Depends(get_current_user), ): try: - if app.state.RAG_EMBEDDING_ENGINE == "ollama": - query_embeddings = generate_ollama_embeddings( - GenerateEmbeddingsForm( - **{ - "model": app.state.RAG_EMBEDDING_MODEL, - "prompt": form_data.query, - } - ) - ) - - return query_embeddings_collection( - collection_names=form_data.collection_names, - query_embeddings=query_embeddings, - k=form_data.k if form_data.k else app.state.TOP_K, - ) - else: + if app.state.RAG_EMBEDDING_ENGINE == "": return query_collection( collection_names=form_data.collection_names, query=form_data.query, k=form_data.k if form_data.k else app.state.TOP_K, embedding_function=app.state.sentence_transformer_ef, ) + else: + + if app.state.RAG_EMBEDDING_ENGINE == "ollama": + query_embeddings = generate_ollama_embeddings( + GenerateEmbeddingsForm( + **{ + "model": app.state.RAG_EMBEDDING_MODEL, + "prompt": form_data.query, + } + ) + ) + elif app.state.RAG_EMBEDDING_ENGINE == "openai": + query_embeddings = generate_openai_embeddings( + model=app.state.RAG_EMBEDDING_MODEL, + text=form_data.query, + key=app.state.RAG_OPENAI_API_KEY, + url=app.state.RAG_OPENAI_API_BASE_URL, + ) + + return query_embeddings_collection( + collection_names=form_data.collection_names, + query_embeddings=query_embeddings, + k=form_data.k if form_data.k else app.state.TOP_K, + ) + except Exception as e: log.exception(e) raise HTTPException( @@ -414,24 +452,7 @@ def store_docs_in_vector_db(docs, collection_name, overwrite: bool = False) -> b log.info(f"deleting existing collection {collection_name}") CHROMA_CLIENT.delete_collection(name=collection_name) - if app.state.RAG_EMBEDDING_ENGINE == "ollama": - collection = CHROMA_CLIENT.create_collection(name=collection_name) - - for batch in create_batches( - api=CHROMA_CLIENT, - ids=[str(uuid.uuid1()) for _ in texts], - metadatas=metadatas, - embeddings=[ - generate_ollama_embeddings( - GenerateEmbeddingsForm( - **{"model": RAG_EMBEDDING_MODEL, "prompt": text} - ) - ) - for text in texts - ], - ): - collection.add(*batch) - else: + if app.state.RAG_EMBEDDING_ENGINE == "": collection = CHROMA_CLIENT.create_collection( name=collection_name, @@ -446,7 +467,36 @@ def store_docs_in_vector_db(docs, collection_name, overwrite: bool = False) -> b ): collection.add(*batch) - return True + else: + if app.state.RAG_EMBEDDING_ENGINE == "ollama": + embeddings = [ + generate_ollama_embeddings( + GenerateEmbeddingsForm( + **{"model": app.state.RAG_EMBEDDING_MODEL, "prompt": text} + ) + ) + for text in texts + ] + elif app.state.RAG_EMBEDDING_ENGINE == "openai": + embeddings = [ + generate_openai_embeddings( + model=app.state.RAG_EMBEDDING_MODEL, + text=text, + key=app.state.RAG_OPENAI_API_KEY, + url=app.state.RAG_OPENAI_API_BASE_URL, + ) + for text in texts + ] + + for batch in create_batches( + api=CHROMA_CLIENT, + ids=[str(uuid.uuid1()) for _ in texts], + metadatas=metadatas, + embeddings=embeddings, + ): + collection.add(*batch) + + return True except Exception as e: log.exception(e) if e.__class__.__name__ == "UniqueConstraintError": diff --git a/backend/apps/rag/utils.py b/backend/apps/rag/utils.py index 17d8e4a9..a0956e2f 100644 --- a/backend/apps/rag/utils.py +++ b/backend/apps/rag/utils.py @@ -269,3 +269,26 @@ def get_embedding_model_path( except Exception as e: log.exception(f"Cannot determine embedding model snapshot path: {e}") return embedding_model + + +def generate_openai_embeddings( + model: str, text: str, key: str, url: str = "https://api.openai.com" +): + try: + r = requests.post( + f"{url}/v1/embeddings", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {key}", + }, + json={"input": text, "model": model}, + ) + r.raise_for_status() + data = r.json() + if "data" in data: + return data["data"][0]["embedding"] + else: + raise "Something went wrong :/" + except Exception as e: + print(e) + return None From b1b72441bbf0a60d1d0bc873a4f0b86f35f9a0f1 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Sun, 14 Apr 2024 19:48:15 -0400 Subject: [PATCH 36/59] feat: openai embeddings integration --- backend/apps/ollama/main.py | 4 +- backend/apps/rag/main.py | 6 +- backend/apps/rag/utils.py | 82 +++++++++++---- backend/main.py | 4 + src/lib/apis/rag/index.ts | 6 ++ .../documents/Settings/General.svelte | 99 ++++++++++++++----- 6 files changed, 155 insertions(+), 46 deletions(-) diff --git a/backend/apps/ollama/main.py b/backend/apps/ollama/main.py index 387ff05d..9258efa6 100644 --- a/backend/apps/ollama/main.py +++ b/backend/apps/ollama/main.py @@ -659,7 +659,7 @@ def generate_ollama_embeddings( url_idx: Optional[int] = None, ): - log.info("generate_ollama_embeddings", form_data) + log.info(f"generate_ollama_embeddings {form_data}") if url_idx == None: model = form_data.model @@ -688,7 +688,7 @@ def generate_ollama_embeddings( data = r.json() - log.info("generate_ollama_embeddings", data) + log.info(f"generate_ollama_embeddings {data}") if "embedding" in data: return data["embedding"] diff --git a/backend/apps/rag/main.py b/backend/apps/rag/main.py index 11860032..04554c3d 100644 --- a/backend/apps/rag/main.py +++ b/backend/apps/rag/main.py @@ -421,7 +421,7 @@ def store_data_in_vector_db(data, collection_name, overwrite: bool = False) -> b docs = text_splitter.split_documents(data) if len(docs) > 0: - log.info("store_data_in_vector_db", "store_docs_in_vector_db") + log.info(f"store_data_in_vector_db {docs}") return store_docs_in_vector_db(docs, collection_name, overwrite), None else: raise ValueError(ERROR_MESSAGES.EMPTY_CONTENT) @@ -440,7 +440,7 @@ def store_text_in_vector_db( def store_docs_in_vector_db(docs, collection_name, overwrite: bool = False) -> bool: - log.info("store_docs_in_vector_db", docs, collection_name) + log.info(f"store_docs_in_vector_db {docs} {collection_name}") texts = [doc.page_content for doc in docs] metadatas = [doc.metadata for doc in docs] @@ -468,6 +468,8 @@ def store_docs_in_vector_db(docs, collection_name, overwrite: bool = False) -> b collection.add(*batch) else: + collection = CHROMA_CLIENT.create_collection(name=collection_name) + if app.state.RAG_EMBEDDING_ENGINE == "ollama": embeddings = [ generate_ollama_embeddings( diff --git a/backend/apps/rag/utils.py b/backend/apps/rag/utils.py index a0956e2f..140fd88e 100644 --- a/backend/apps/rag/utils.py +++ b/backend/apps/rag/utils.py @@ -6,9 +6,12 @@ import requests from huggingface_hub import snapshot_download +from apps.ollama.main import generate_ollama_embeddings, GenerateEmbeddingsForm + from config import SRC_LOG_LEVELS, CHROMA_CLIENT + log = logging.getLogger(__name__) log.setLevel(SRC_LOG_LEVELS["RAG"]) @@ -32,7 +35,7 @@ def query_doc(collection_name: str, query: str, k: int, embedding_function): def query_embeddings_doc(collection_name: str, query_embeddings, k: int): try: # if you use docker use the model from the environment variable - log.info("query_embeddings_doc", query_embeddings) + log.info(f"query_embeddings_doc {query_embeddings}") collection = CHROMA_CLIENT.get_collection( name=collection_name, ) @@ -118,7 +121,7 @@ def query_collection( def query_embeddings_collection(collection_names: List[str], query_embeddings, k: int): results = [] - log.info("query_embeddings_collection", query_embeddings) + log.info(f"query_embeddings_collection {query_embeddings}") for collection_name in collection_names: try: @@ -141,7 +144,17 @@ def rag_template(template: str, context: str, query: str): return template -def rag_messages(docs, messages, template, k, embedding_function): +def rag_messages( + docs, + messages, + template, + k, + embedding_engine, + embedding_model, + embedding_function, + openai_key, + openai_url, +): log.debug(f"docs: {docs}") last_user_message_idx = None @@ -175,22 +188,57 @@ def rag_messages(docs, messages, template, k, embedding_function): context = None try: - if doc["type"] == "collection": - context = query_collection( - collection_names=doc["collection_names"], - query=query, - k=k, - embedding_function=embedding_function, - ) - elif doc["type"] == "text": + + if doc["type"] == "text": context = doc["content"] else: - context = query_doc( - collection_name=doc["collection_name"], - query=query, - k=k, - embedding_function=embedding_function, - ) + if embedding_engine == "": + if doc["type"] == "collection": + context = query_collection( + collection_names=doc["collection_names"], + query=query, + k=k, + embedding_function=embedding_function, + ) + else: + context = query_doc( + collection_name=doc["collection_name"], + query=query, + k=k, + embedding_function=embedding_function, + ) + + else: + if embedding_engine == "ollama": + query_embeddings = generate_ollama_embeddings( + GenerateEmbeddingsForm( + **{ + "model": embedding_model, + "prompt": query, + } + ) + ) + elif embedding_engine == "openai": + query_embeddings = generate_openai_embeddings( + model=embedding_model, + text=query, + key=openai_key, + url=openai_url, + ) + + if doc["type"] == "collection": + context = query_embeddings_collection( + collection_names=doc["collection_names"], + query_embeddings=query_embeddings, + k=k, + ) + else: + context = query_embeddings_doc( + collection_name=doc["collection_name"], + query_embeddings=query_embeddings, + k=k, + ) + except Exception as e: log.exception(e) context = None diff --git a/backend/main.py b/backend/main.py index d63847bc..4b1809a2 100644 --- a/backend/main.py +++ b/backend/main.py @@ -114,7 +114,11 @@ class RAGMiddleware(BaseHTTPMiddleware): data["messages"], rag_app.state.RAG_TEMPLATE, rag_app.state.TOP_K, + rag_app.state.RAG_EMBEDDING_ENGINE, + rag_app.state.RAG_EMBEDDING_MODEL, rag_app.state.sentence_transformer_ef, + rag_app.state.RAG_OPENAI_API_KEY, + rag_app.state.RAG_OPENAI_API_BASE_URL, ) del data["docs"] diff --git a/src/lib/apis/rag/index.ts b/src/lib/apis/rag/index.ts index bfcee55f..8a63b69c 100644 --- a/src/lib/apis/rag/index.ts +++ b/src/lib/apis/rag/index.ts @@ -373,7 +373,13 @@ export const getEmbeddingConfig = async (token: string) => { return res; }; +type OpenAIConfigForm = { + key: string; + url: string; +}; + type EmbeddingModelUpdateForm = { + openai_config?: OpenAIConfigForm; embedding_engine: string; embedding_model: string; }; diff --git a/src/lib/components/documents/Settings/General.svelte b/src/lib/components/documents/Settings/General.svelte index c9142fbe..63d78562 100644 --- a/src/lib/components/documents/Settings/General.svelte +++ b/src/lib/components/documents/Settings/General.svelte @@ -29,6 +29,9 @@ let embeddingEngine = ''; let embeddingModel = ''; + let openAIKey = ''; + let openAIUrl = ''; + let chunkSize = 0; let chunkOverlap = 0; let pdfExtractImages = true; @@ -50,15 +53,6 @@ }; const embeddingModelUpdateHandler = async () => { - if (embeddingModel === '') { - toast.error( - $i18n.t( - 'Model filesystem path detected. Model shortname is required for update, cannot continue.' - ) - ); - return; - } - if (embeddingEngine === '' && embeddingModel.split('/').length - 1 > 1) { toast.error( $i18n.t( @@ -67,21 +61,46 @@ ); return; } + if (embeddingEngine === 'ollama' && embeddingModel === '') { + toast.error( + $i18n.t( + 'Model filesystem path detected. Model shortname is required for update, cannot continue.' + ) + ); + return; + } + + if (embeddingEngine === 'openai' && embeddingModel === '') { + toast.error( + $i18n.t( + 'Model filesystem path detected. Model shortname is required for update, cannot continue.' + ) + ); + return; + } + + if ((embeddingEngine === 'openai' && openAIKey === '') || openAIUrl === '') { + toast.error($i18n.t('OpenAI URL/Key required.')); + return; + } console.log('Update embedding model attempt:', embeddingModel); updateEmbeddingModelLoading = true; const res = await updateEmbeddingConfig(localStorage.token, { embedding_engine: embeddingEngine, - embedding_model: embeddingModel + embedding_model: embeddingModel, + ...(embeddingEngine === 'openai' + ? { + openai_config: { + key: openAIKey, + url: openAIUrl + } + } + : {}) }).catch(async (error) => { toast.error(error); - - const embeddingConfig = await getEmbeddingConfig(localStorage.token); - if (embeddingConfig) { - embeddingEngine = embeddingConfig.embedding_engine; - embeddingModel = embeddingConfig.embedding_model; - } + await setEmbeddingConfig(); return null; }); updateEmbeddingModelLoading = false; @@ -89,7 +108,7 @@ if (res) { console.log('embeddingModelUpdateHandler:', res); if (res.status === true) { - toast.success($i18n.t('Model {{embedding_model}} update complete!', res), { + toast.success($i18n.t('Embedding model set to "{{embedding_model}}"', res), { duration: 1000 * 10 }); } @@ -107,6 +126,18 @@ querySettings = await updateQuerySettings(localStorage.token, querySettings); }; + const setEmbeddingConfig = async () => { + const embeddingConfig = await getEmbeddingConfig(localStorage.token); + + if (embeddingConfig) { + embeddingEngine = embeddingConfig.embedding_engine; + embeddingModel = embeddingConfig.embedding_model; + + openAIKey = embeddingConfig.openai_config.key; + openAIUrl = embeddingConfig.openai_config.url; + } + }; + onMount(async () => { const res = await getRAGConfig(localStorage.token); @@ -117,12 +148,7 @@ chunkOverlap = res.chunk.chunk_overlap; } - const embeddingConfig = await getEmbeddingConfig(localStorage.token); - - if (embeddingConfig) { - embeddingEngine = embeddingConfig.embedding_engine; - embeddingModel = embeddingConfig.embedding_model; - } + await setEmbeddingConfig(); querySettings = await getQuerySettings(localStorage.token); }); @@ -146,15 +172,38 @@ class="dark:bg-gray-900 w-fit pr-8 rounded px-2 p-1 text-xs bg-transparent outline-none text-right" bind:value={embeddingEngine} placeholder="Select an embedding engine" - on:change={() => { - embeddingModel = ''; + on:change={(e) => { + if (e.target.value === 'ollama') { + embeddingModel = ''; + } else if (e.target.value === 'openai') { + embeddingModel = 'text-embedding-3-small'; + } }} > +
+ + {#if embeddingEngine === 'openai'} +
+ + + +
+ {/if}
From 741ed5dc4c150edf8e059fedc4afd8190c1bcdb8 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Sun, 14 Apr 2024 19:56:33 -0400 Subject: [PATCH 37/59] fix --- backend/apps/rag/main.py | 1 + backend/apps/rag/utils.py | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/backend/apps/rag/main.py b/backend/apps/rag/main.py index 04554c3d..5e9564f7 100644 --- a/backend/apps/rag/main.py +++ b/backend/apps/rag/main.py @@ -495,6 +495,7 @@ def store_docs_in_vector_db(docs, collection_name, overwrite: bool = False) -> b ids=[str(uuid.uuid1()) for _ in texts], metadatas=metadatas, embeddings=embeddings, + documents=texts, ): collection.add(*batch) diff --git a/backend/apps/rag/utils.py b/backend/apps/rag/utils.py index 140fd88e..daea3686 100644 --- a/backend/apps/rag/utils.py +++ b/backend/apps/rag/utils.py @@ -43,6 +43,8 @@ def query_embeddings_doc(collection_name: str, query_embeddings, k: int): query_embeddings=[query_embeddings], n_results=k, ) + + log.info(f"query_embeddings_doc:result {result}") return result except Exception as e: raise e @@ -155,7 +157,9 @@ def rag_messages( openai_key, openai_url, ): - log.debug(f"docs: {docs}") + log.debug( + f"docs: {docs} {messages} {embedding_engine} {embedding_model} {embedding_function} {openai_key} {openai_url}" + ) last_user_message_idx = None for i in range(len(messages) - 1, -1, -1): From 1be60c9729ea489332832466fb85740508c4b905 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Sun, 14 Apr 2024 20:13:00 -0400 Subject: [PATCH 38/59] chore: version bump --- package-lock.json | 4 ++-- package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7c117e8a..83ec91d1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "open-webui", - "version": "0.1.118", + "version": "0.1.119", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "open-webui", - "version": "0.1.118", + "version": "0.1.119", "dependencies": { "@sveltejs/adapter-node": "^1.3.1", "async": "^3.2.5", diff --git a/package.json b/package.json index 5f18eef2..d0ce155f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "open-webui", - "version": "0.1.118", + "version": "0.1.119", "private": true, "scripts": { "dev": "vite dev --host", @@ -60,4 +60,4 @@ "tippy.js": "^6.3.7", "uuid": "^9.0.1" } -} +} \ No newline at end of file From ac7bb03cb3d01af7e89e5a06ab947ce0b86b0f11 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Sun, 14 Apr 2024 20:19:16 -0400 Subject: [PATCH 39/59] chore: formatting --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d0ce155f..e88a0063 100644 --- a/package.json +++ b/package.json @@ -60,4 +60,4 @@ "tippy.js": "^6.3.7", "uuid": "^9.0.1" } -} \ No newline at end of file +} From dba45acbdad298751cd121c0034102b62ffe8c1b Mon Sep 17 00:00:00 2001 From: pkrolkgp <32438012+pkrolkgp@users.noreply.github.com> Date: Tue, 16 Apr 2024 12:09:57 +0000 Subject: [PATCH 40/59] Create translation.json for polish language Created polish language translation --- src/lib/i18n/locales/pl-pl/translation.json | 372 ++++++++++++++++++++ 1 file changed, 372 insertions(+) create mode 100644 src/lib/i18n/locales/pl-pl/translation.json diff --git a/src/lib/i18n/locales/pl-pl/translation.json b/src/lib/i18n/locales/pl-pl/translation.json new file mode 100644 index 00000000..323e1c1e --- /dev/null +++ b/src/lib/i18n/locales/pl-pl/translation.json @@ -0,0 +1,372 @@ +{ +    "'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.":"'s', 'm', 'h', 'd', 'w' lub '-1' dla bez wygaśnięcia.", +    "(Beta)":"(Beta)", +    "(e.g. `sh webui.sh --api`)":"(np. `sh webui.sh --api`)", +    "(latest)":"(najnowszy)", +    "{{modelName}} is thinking...":"{{modelName}} myśli...", +    "{{webUIName}} Backend Required":"Backend {{webUIName}} wymagane", +    "a user":"użytkownik", +    "About":"O nas", +    "Account":"Konto", +    "Action":"Akcja", +    "Add a model":"Dodaj model", +    "Add a model tag name":"Dodaj nazwę tagu modelu", +    "Add a short description about what this modelfile does":"Dodaj krótki opis tego, co robi ten plik modelu", +    "Add a short title for this prompt":"Dodaj krótki tytuł tego polecenia", +    "Add a tag":"Dodaj tag", +    "Add Docs":"Dodaj dokumenty", +    "Add Files":"Dodaj pliki", +    "Add message":"Dodaj wiadomość", +    "add tags":"dodaj tagi", +    "Adjusting these settings will apply changes universally to all users.":"Dostosowanie tych ustawień spowoduje zastosowanie zmian uniwersalnie do wszystkich użytkowników.", +    "admin":"admin", +    "Admin Panel":"Panel administracyjny", +    "Admin Settings":"Ustawienia administratora", +    "Advanced Parameters":"Zaawansowane parametry", +    "all":"wszyscy", +    "All Users":"Wszyscy użytkownicy", +    "Allow":"Pozwól", +    "Allow Chat Deletion":"Pozwól na usuwanie czatu", +    "alphanumeric characters and hyphens":"znaki alfanumeryczne i myślniki", +    "Already have an account?":"Masz już konto?", +    "an assistant":"asystent", +    "and":"i", +    "API Base URL":"Podstawowy adres URL interfejsu API", +    "API Key":"Klucz API", +    "API RPM":"Pakiet API RPM", +    "are allowed - Activate this command by typing":"są dozwolone - Aktywuj to polecenie, wpisując", +    "Are you sure?":"Jesteś pewien?", +    "Audio":"Dźwięk", +    "Auto-playback response":"Odtwarzanie automatyczne odpowiedzi", +    "Auto-send input after 3 sec.":"Wysyłanie automatyczne po 3 sek.", +    "AUTOMATIC1111 Base URL":"Podstawowy adres URL AUTOMATIC1111", +    "AUTOMATIC1111 Base URL is required.":"Podstawowy adres URL AUTOMATIC1111 jest wymagany.", +    "available!":"dostępny!", +    "Back":"Wstecz", +    "Builder Mode":"Tryb budowniczego", +    "Cancel":"Anuluj", +    "Categories":"Kategorie", +    "Change Password":"Zmień hasło", +    "Chat":"Czat", +    "Chat History":"Historia czatu", +    "Chat History is off for this browser.":"Historia czatu jest wyłączona dla tej przeglądarki.", +    "Chats":"Czaty", +    "Check Again":"Sprawdź ponownie", +    "Check for updates":"Sprawdź aktualizacje", +    "Checking for updates...":"Sprawdzanie aktualizacji...", +    "Choose a model before saving...":"Wybierz model przed zapisaniem...", +    "Chunk Overlap":"Zachodzenie bloku", +    "Chunk Params":"Parametry bloku", +    "Chunk Size":"Rozmiar bloku", +    "Click here for help.":"Kliknij tutaj, aby uzyskać pomoc.", +    "Click here to check other modelfiles.":"Kliknij tutaj, aby sprawdzić inne pliki modelowe.", +    "Click here to select":"Kliknij tutaj, aby wybrać", +    "Click here to select documents.":"Kliknij tutaj, aby wybrać dokumenty.", +    "click here.":"kliknij tutaj.", +    "Click on the user role button to change a user's role.":"Kliknij przycisk roli użytkownika, aby zmienić rolę użytkownika.", +    "Close":"Zamknij", +    "Collection":"Kolekcja", +    "Command":"Polecenie", +    "Confirm Password":"Potwierdź hasło", +    "Connections":"Połączenia", +    "Content":"Zawartość", +    "Context Length":"Długość kontekstu", +    "Conversation Mode":"Tryb rozmowy", +    "Copy last code block":"Skopiuj ostatni blok kodu", +    "Copy last response":"Skopiuj ostatnią odpowiedź", +    "Copying to clipboard was successful!":"Kopiowanie do schowka zakończone powodzeniem!", +    "Create a concise, 3-5 word phrase as a header for the following query, strictly adhering to the 3-5 word limit and avoiding the use of the word 'title':":"Utwórz zwięzłą frazę składającą się z 3-5 słów jako nagłówek dla następującego zapytania, ściśle przestrzegając limitu od 3 do 5 słów i unikając użycia słowa 'tytuł':", +    "Create a modelfile":"Utwórz plik modelu", +    "Create Account":"Utwórz konto", +    "Created at":"Utworzono o", +    "Created by":"Utworzono przez", +    "Current Model":"Bieżący model", +    "Current Password":"Bieżące hasło", +    "Custom":"Niestandardowy", +    "Customize Ollama models for a specific purpose":"Dostosuj modele Ollama do określonego celu", +    "Dark":"Ciemny", +    "Database":"Baza danych", +    "DD/MM/YYYY HH:mm":"DD/MM/RRRR GG:MM", +    "Default":"Domyślny", +    "Default (Automatic1111)":"Domyślny (Automatyczny1111)", +    "Default (Web API)":"Domyślny (Interfejs API)", +    "Default model updated":"Domyślny model zaktualizowany", +    "Default Prompt Suggestions":"Domyślne sugestie promptów", +    "Default User Role":"Domyślna rola użytkownika", +    "delete":"Usuń", +    "Delete a model":"Usuń model", +    "Delete chat":"Usuń czat", +    "Delete Chats":"Usuń czaty", +    "Deleted {{deleteModelTag}}":"Usunięto {{deleteModelTag}}", +    "Deleted {tagName}":"Usunięto {tagName}", +    "Description":"Opis", +    "Notifications":"Powiadomienia", +    "Disabled":"Wyłączone", +    "Discover a modelfile":"Odkryj plik modelu", +    "Discover a prompt":"Odkryj prompt", +    "Discover, download, and explore custom prompts":"Odkryj, pobierz i eksploruj niestandardowe prompty", +    "Discover, download, and explore model presets":"Odkryj, pobierz i eksploruj ustawienia modeli", +    "Display the username instead of You in the Chat":"Wyświetl nazwę użytkownika zamiast Ty w czacie", +    "Document":"Dokument", +    "Document Settings":"Ustawienia dokumentu", +    "Documents":"Dokumenty", +    "does not make any external connections, and your data stays securely on your locally hosted server.":"nie nawiązuje żadnych zewnętrznych połączeń, a Twoje dane pozostają bezpiecznie na Twoim lokalnie hostowanym serwerze.", +    "Don't Allow":"Nie zezwalaj", +    "Don't have an account?":"Nie masz konta?", +    "Download as a File":"Pobierz jako plik", +    "Download Database":"Pobierz bazę danych", +    "Drop any files here to add to the conversation":"Upuść pliki tutaj, aby dodać do rozmowy", +    "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.":"np. '30s', '10m'. Poprawne jednostki czasu to 's', 'm', 'h'.", +    "Edit Doc":"Edytuj dokument", +    "Edit User":"Edytuj użytkownika", +    "Email":"Email", +    "Embedding model: {{embedding_model}}":"Osadzony model: {{embedding_model}}", +    "Enable Chat History":"Włącz historię czatu", +    "Enable New Sign Ups":"Włącz nowe rejestracje", +    "Enabled":"Włączone", +    "Enter {{role}} message here":"Wprowadź wiadomość {{role}} tutaj", +    "Enter API Key":"Wprowadź klucz API", +    "Enter Chunk Overlap":"Wprowadź zakchodzenie bloku", +    "Enter Chunk Size":"Wprowadź rozmiar bloku", +    "Enter Image Size (e.g. 512x512)":"Wprowadź rozmiar obrazu (np. 512x512)", +    "Enter LiteLLM API Base URL (litellm_params.api_base)":"Wprowadź bazowy adres URL LiteLLM API (litellm_params.api_base)", +    "Enter LiteLLM API Key (litellm_params.api_key)":"Wprowadź klucz API LiteLLM (litellm_params.api_key)", +    "Enter LiteLLM API RPM (litellm_params.rpm)":"Wprowadź  API LiteLLM  RPM(litellm_params.rpm)", +    "Enter LiteLLM Model (litellm_params.model)":"Wprowadź model LiteLLM (litellm_params.model)", +    "Enter Max Tokens (litellm_params.max_tokens)":"Wprowadź maksymalną liczbę tokenów (litellm_params.max_tokens)", +    "Enter model tag (e.g. {{modelTag}})":"Wprowadź tag modelu (np. {{modelTag}})", +    "Enter Number of Steps (e.g. 50)":"Wprowadź liczbę kroków (np. 50)", +    "Enter stop sequence":"Wprowadź sekwencję zatrzymania", +    "Enter Top K":"Wprowadź Top K", +    "Enter URL (e.g. http://127.0.0.1:7860/)":"Wprowadź adres URL (np. http://127.0.0.1:7860/)", +    "Enter Your Email":"Wprowadź swój adres email", +    "Enter Your Full Name":"Wprowadź swoje imię i nazwisko", +    "Enter Your Password":"Wprowadź swoje hasło", +    "Experimental":"Eksperymentalne", +    "Export All Chats (All Users)":"Eksportuj wszystkie czaty (wszyscy użytkownicy)", +    "Export Chats":"Eksportuj czaty", +    "Export Documents Mapping":"Eksportuj mapowanie dokumentów", +    "Export Modelfiles":"Eksportuj pliki modeli", +    "Export Prompts":"Eksportuj prompty", +    "Failed to read clipboard contents":"Nie udało się odczytać zawartości schowka", +    "File Mode":"Tryb pliku", +    "File not found.":"Plik nie został znaleziony.", +    "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.":"Wykryto podszywanie się pod odcisk palca: Nie można używać inicjałów jako awatara. Przechodzenie do domyślnego obrazu profilowego.", +    "Focus chat input":"Skoncentruj na czacie", +    "Format your variables using square brackets like this:":"Formatuj swoje zmienne, używając nawiasów kwadratowych, np.", +    "From (Base Model)":"Z (Model Podstawowy)", +    "Full Screen Mode":"Tryb pełnoekranowy", +    "General":"Ogólne", +    "General Settings":"Ogólne ustawienia", +    "Hello, {{name}}":"Witaj, {{nazwa}}", +    "Hide":"Ukryj", +    "Hide Additional Params":"Ukryj dodatkowe parametry", +    "How can I help you today?":"Jak mogę Ci dzisiaj pomóc?", +    "Image Generation (Experimental)":"Generowanie obrazu (eksperymentalne)", +    "Image Generation Engine":"Silnik generowania obrazu", +    "Image Settings":"Ustawienia obrazu", +    "Images":"Obrazy", +    "Import Chats":"Importuj rozmowy", +    "Import Documents Mapping":"Importuj mapowanie dokumentów", +    "Import Modelfiles":"Importuj pliki modeli", +    "Import Prompts":"Importuj prompty", +    "Include `--api` flag when running stable-diffusion-webui":"Dołącz flagę `--api` podczas uruchamiania stable-diffusion-webui", +    "Interface":"Interfejs", +    "join our Discord for help.":"Dołącz do naszego Discorda po pomoc.", +    "JSON":"JSON", +    "JWT Expiration":"Wygaśnięcie JWT", +    "JWT Token":"Token JWT", +    "Keep Alive":"Zachowaj łączność", +    "Keyboard shortcuts":"Skróty klawiszowe", +    "Language":"Język", +    "Light":"Jasny", +    "Listening...":"Nasłuchiwanie...", +    "LLMs can make mistakes. Verify important information.":"LLMy mogą popełniać błędy. Zweryfikuj ważne informacje.", +    "Made by OpenWebUI Community":"Stworzone przez społeczność OpenWebUI", +    "Make sure to enclose them with":"Upewnij się, że są one zamknięte w", +    "Manage LiteLLM Models":"Zarządzaj modelami LiteLLM", +    "Manage Models":"Zarządzaj modelami", +    "Manage Ollama Models":"Zarządzaj modelami Ollama", +    "Max Tokens":"Maksymalna liczba tokenów", +    "Maximum of 3 models can be downloaded simultaneously. Please try again later.":"Maksymalnie 3 modele można pobierać jednocześnie. Spróbuj ponownie później.", +    "Mirostat":"Mirostat", +    "Mirostat Eta":"Mirostat Eta", +    "Mirostat Tau":"Mirostat Tau", +    "MMMM DD, YYYY":"MMMM DD, YYYY", +    "Model '{{modelName}}' has been successfully downloaded.":"Model '{{nazwaModelu}}' został pomyślnie pobrany.", +    "Model '{{modelTag}}' is already in queue for downloading.":"Model '{{nazwaModelu}}' jest już w kolejce do pobrania.", +    "Model {{embedding_model}} update complete!":"Aktualizacja modelu {{embedding_model}} zakończona pomyślnie!": "", +    "Model {{embedding_model}} update failed or not required!":"Model {{embedding_model}} aktualizacja nie powiodła się lub nie jest wymagana!", +    "Model {{modelId}} not found":"Model {{modelId}} nie został znaleziony", +    "Model {{modelName}} already exists.":"Model {{modelName}} już istnieje.", +    "Model filesystem path detected. Model shortname is required for update, cannot continue.":"Wykryto ścieżkę systemu plików modelu. Wymagana jest krótka nazwa modelu do aktualizacji, nie można kontynuować.", +    "Model Name":"Nazwa modelu", +    "Model not selected":"Model nie został wybrany", +    "Model Tag Name":"Nazwa tagu modelu", +    "Model Whitelisting":"Whitelisting modelu", +    "Model(s) Whitelisted":"Model(e) dodane do listy białej", +    "Modelfile":"Plik modelu", +    "Modelfile Advanced Settings":"Zaawansowane ustawienia pliku modelu", +    "Modelfile Content":"Zawartość pliku modelu", +    "Modelfiles":"Pliki modeli", +    "Models":"Modele", +    "My Documents":"Moje dokumenty", +    "My Modelfiles":"Moje pliki modeli", +    "My Prompts":"Moje prompty", +    "Name":"Nazwa", +    "Name Tag":"Etykieta nazwy", +    "Name your modelfile":"Nadaj nazwę swojemu plikowi modelu", +    "New Chat":"Nowy czat", +    "New Password":"Nowe hasło", +    "Not sure what to add?":"Nie wiesz, co dodać?", +    "Not sure what to write? Switch to":"Nie wiesz, co napisać? Przełącz się na", +    "Off":"Wyłączony", +    "Okay, Let's Go!":"Okej, zaczynamy!", +    "Ollama Base URL":"Adres bazowy URL Ollama", +    "Ollama Version":"Wersja Ollama", +    "On":"Włączony", +    "Only":"Tylko", +    "Only alphanumeric characters and hyphens are allowed in the command string.":"W poleceniu dozwolone są tylko znaki alfanumeryczne i myślniki.", +    "Oops! Hold tight! Your files are still in the processing oven. We're cooking them up to perfection. Please be patient and we'll let you know once they're ready.":"Ups! Trzymaj się! Twoje pliki są wciąż w procesie obróbki. Gotujemy je do perfekcji. Prosimy o cierpliwość, poinformujemy Cię, gdy będą gotowe.", +    "Oops! Looks like the URL is invalid. Please double-check and try again.":"Ups! Wygląda na to, że URL jest nieprawidłowy. Sprawdź jeszcze raz i spróbuj ponownie.", +    "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.":"Ups! Używasz nieobsługiwaniej metody (tylko interfejs front-end). Proszę obsłużyć interfejs WebUI z poziomu backendu.", +    "Open":"Otwórz", +    "Open AI":"Open AI", +    "Open AI (Dall-E)":"Open AI (Dall-E)", +    "Open new chat":"Otwórz nowy czat", +    "OpenAI API":"OpenAI API", +    "OpenAI API Key":"Klucz API OpenAI", +    "OpenAI API Key is required.":"Klucz API OpenAI jest wymagany.", +    "or":"lub", +    "Parameters":"Parametry", +    "Password":"Hasło", +    "PDF Extract Images (OCR)":"PDF Wyodrębnij obrazy (OCR)", +    "pending":"oczekujące", +    "Permission denied when accessing microphone: {{error}}":"Odmowa dostępu do mikrofonu: {{error}}", +    "Playground":"Plac zabaw", +    "Profile":"Profil", +    "Prompt Content":"Zawartość prompta", +    "Prompt suggestions":"Sugestie prompta", +    "Prompts":"Prompty", +    "Pull a model from Ollama.com":"Pobierz model z Ollama.com", +    "Pull Progress":"Postęp pobierania", +    "Query Params":"Parametry zapytania", +    "RAG Template":"Szablon RAG", +    "Raw Format":"Format bez obróbki", +    "Record voice":"Nagraj głos", +    "Redirecting you to OpenWebUI Community":"Przekierowujemy Cię do społeczności OpenWebUI", +    "Release Notes":"Notatki wydania", +    "Repeat Last N":"Powtórz ostatnie N", +    "Repeat Penalty":"Kara za powtórzenie", +    "Request Mode":"Tryb żądania", +    "Reset Vector Storage":"Resetuj przechowywanie wektorów", +    "Response AutoCopy to Clipboard":"Automatyczne kopiowanie odpowiedzi do schowka", +    "Role":"Rola", +    "Rosé Pine":"Rosé Pine", +    "Rosé Pine Dawn":"Rosé Pine Dawn", +    "Save":"Zapisz", +    "Save & Create":"Zapisz i utwórz", +    "Save & Submit":"Zapisz i wyślij", +    "Save & Update":"Zapisz i zaktualizuj", +    "Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through":"Bezpośrednie zapisywanie dzienników czatu w pamięci przeglądarki nie jest już obsługiwane. Prosimy o pobranie i usunięcie dzienników czatu, klikając poniższy przycisk. Nie martw się, możesz łatwo ponownie zaimportować dzienniki czatu do backendu za pomocą", +    "Scan":"Skanuj", +    "Scan complete!":"Skanowanie zakończone!", +    "Scan for documents from {{path}}":"Skanuj dokumenty z {{path}}", +    "Search":"Szukaj", +    "Search Documents":"Szukaj dokumentów", +    "Search Prompts":"Szukaj promptów", +    "See readme.md for instructions":"Zajrzyj do readme.md po instrukcje", +    "See what's new":"Zobacz co nowego", +    "Seed":"Seed", +    "Select a mode":"Wybierz tryb", +    "Select a model":"Wybierz model", +    "Select an Ollama instance":"Wybierz instancję Ollama", +    "Send a Message":"Wyślij Wiadomość", +    "Send message":"Wyślij wiadomość", +    "Server connection verified":"Połączenie z serwerem zweryfikowane", +    "Set as default":"Ustaw jako domyślne", +    "Set Default Model":"Ustaw domyślny model", +    "Set Image Size":"Ustaw rozmiar obrazu", +    "Set Steps":"Ustaw kroki", +    "Set Title Auto-Generation Model":"Ustaw model automatycznego generowania tytułów", +    "Set Voice":"Ustaw głos", +    "Settings":"Ustawienia", +    "Settings saved successfully!":"Ustawienia zapisane pomyślnie!", +    "Share to OpenWebUI Community":"Dziel się z społecznością OpenWebUI", +    "short-summary":"Krótkie podsumowanie", +    "Show":"Pokaż", +    "Show Additional Params":"Pokaż dodatkowe parametry", +    "Show shortcuts":"Pokaż skróty", +    "sidebar":"Panel boczny", +    "Sign in":"Zaloguj się", +    "Sign Out":"Wyloguj się", +    "Sign up":"Zarejestruj się", +    "Speech recognition error: {{error}}":"Błąd rozpoznawania mowy: {{error}}", +    "Speech-to-Text Engine":"Silnik mowy na tekst", +    "SpeechRecognition API is not supported in this browser.":"API Rozpoznawania Mowy nie jest obsługiwane w tej przeglądarce.", +    "Stop Sequence":"Zatrzymaj sekwencję", +    "STT Settings":"Ustawienia STT", +    "Submit":"Zatwierdź", +    "Success":"Sukces", +    "Successfully updated.":"Pomyślnie zaktualizowano.", +    "Sync All":"Synchronizuj wszystko", +    "System":"System", +    "System Prompt":"Prompt systemowy", +    "Tags":"Tagi", +    "Temperature":"Temperatura", +    "Template":"Szablon", +    "Text Completion":"Uzupełnienie tekstu", +    "Text-to-Speech Engine":"Silnik tekstu na mowę", +    "Tfs Z":"Tfs Z", +    "Theme":"Motyw", +    "This ensures that your valuable conversations are securely saved to your backend database. Thank you!":"To zapewnia, że Twoje cenne rozmowy są bezpiecznie zapisywane w bazie danych backendowej. Dziękujemy!", +    "This setting does not sync across browsers or devices.":"To ustawienie nie synchronizuje się między przeglądarkami ani urządzeniami.", +    "Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.":"Porada: Aktualizuj wiele zmiennych kolejno, naciskając klawisz tabulatora w polu wprowadzania czatu po każdej zmianie.", +    "Title":"Tytuł", +    "Title Auto-Generation":"Automatyczne generowanie tytułu", +    "Title Generation Prompt":"Prompt generowania tytułu", +    "to":"do", +    "To access the available model names for downloading,":"Aby uzyskać dostęp do dostępnych nazw modeli do pobrania,", +    "To access the GGUF models available for downloading,":"Aby uzyskać dostęp do dostępnych modeli GGUF do pobrania,", +    "to chat input.":"do pola wprowadzania czatu.", +    "Toggle settings":"Przełącz ustawienia", +    "Toggle sidebar":"Przełącz panel boczny", +    "Top K":"Najlepsze K", +    "Top P":"Najlepsze P", +    "Trouble accessing Ollama?":"Problemy z dostępem do Ollama?", +    "TTS Settings":"Ustawienia TTS", +    "Type Hugging Face Resolve (Download) URL":"Wprowadź adres URL do pobrania z Hugging Face", +    "Uh-oh! There was an issue connecting to {{provider}}.":"O nie! Wystąpił problem z połączeniem z {{provider}}.", +    "Understand that updating or changing your embedding model requires reset of the vector database and re-import of all documents. You have been warned!":"Zrozum, że aktualizacja lub zmiana modelu osadzania wymaga zresetowania bazy wektorów i ponownego zaimportowania wszystkich dokumentów. Zostałeś ostrzeżony!", +    "Unknown File Type '{{file_type}}', but accepting and treating as plain text":"Nieznany typ pliku '{{file_type}}', ale akceptowany i traktowany jako zwykły tekst", +    "Update":"Aktualizacja", +    "Update embedding model {{embedding_model}}":"Aktualizuj modelu osadzania {{embedding_model}}", +    "Update password":"Aktualizacja hasła", +    "Upload a GGUF model":"Prześlij model GGUF", +    "Upload files":"Prześlij pliki", +    "Upload Progress":"Postęp przesyłania", +    "URL Mode":"Tryb adresu URL", +    "Use '#' in the prompt input to load and select your documents.":"Użyj '#' w polu wprowadzania polecenia, aby załadować i wybrać swoje dokumenty.", +    "Use Gravatar":"Użyj Gravatara", +    "Use Initials":"Użyj inicjałów", +    "user":"użytkownik", +    "User Permissions":"Uprawnienia użytkownika", +    "Users":"Użytkownicy", +    "Utilize":"Wykorzystaj", +    "Valid time units:":"Poprawne jednostki czasu:", +    "variable":"zmienna", +    "variable to have them replaced with clipboard content.":"zmienna która zostanie zastąpiona zawartością schowka.", +    "Version":"Wersja", +    "Web":"Sieć", +    "WebUI Add-ons":"Dodatki do interfejsu WebUI", +    "WebUI Settings":"Ustawienia interfejsu WebUI", +    "WebUI will make requests to":"Interfejs sieciowy będzie wysyłał żądania do", +    "What’s New in":"Co nowego w", +    "When history is turned off, new chats on this browser won't appear in your history on any of your devices.":"Kiedy historia jest wyłączona, nowe rozmowy na tej przeglądarce nie będą widoczne w historii na żadnym z twoich urządzeń.", +    "Whisper (Local)":"Whisper (Lokalnie)", +    "Write a prompt suggestion (e.g. Who are you?)":"Napisz sugestię do polecenia (np. Kim jesteś?)", +    "Write a summary in 50 words that summarizes [topic or keyword].":"Napisz podsumowanie w 50 słowach, które podsumowuje [temat lub słowo kluczowe].", +    "You":"Ty", +    "You're a helpful assistant.":"Jesteś pomocnym asystentem.", +    "You're now logged in.": "":"Jesteś teraz zalogowany." +} From 748a930a5fb2ada14e62e0c7a6f652b7c7d356ad Mon Sep 17 00:00:00 2001 From: Justin Hayes Date: Tue, 16 Apr 2024 09:57:32 -0400 Subject: [PATCH 41/59] Replace `pip3` with `uv` --- Dockerfile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6cf8ded2..f1995290 100644 --- a/Dockerfile +++ b/Dockerfile @@ -93,15 +93,16 @@ RUN if [ "$USE_OLLAMA" = "true" ]; then \ # install python dependencies COPY ./backend/requirements.txt ./requirements.txt -RUN if [ "$USE_CUDA" = "true" ]; then \ +RUN pip3 install uv && \ + if [ "$USE_CUDA" = "true" ]; then \ # If you use CUDA the whisper and embedding model will be downloaded on first use pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/$USE_CUDA_DOCKER_VER --no-cache-dir && \ - pip3 install -r requirements.txt --no-cache-dir && \ + uv pip install --system -r requirements.txt --no-cache-dir && \ python -c "import os; from faster_whisper import WhisperModel; WhisperModel(os.environ['WHISPER_MODEL'], device='cpu', compute_type='int8', download_root=os.environ['WHISPER_MODEL_DIR'])" && \ python -c "import os; from chromadb.utils import embedding_functions; sentence_transformer_ef = embedding_functions.SentenceTransformerEmbeddingFunction(model_name=os.environ['RAG_EMBEDDING_MODEL'], device='cpu')"; \ else \ pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu --no-cache-dir && \ - pip3 install -r requirements.txt --no-cache-dir && \ + uv pip install --system -r requirements.txt --no-cache-dir && \ python -c "import os; from faster_whisper import WhisperModel; WhisperModel(os.environ['WHISPER_MODEL'], device='cpu', compute_type='int8', download_root=os.environ['WHISPER_MODEL_DIR'])" && \ python -c "import os; from chromadb.utils import embedding_functions; sentence_transformer_ef = embedding_functions.SentenceTransformerEmbeddingFunction(model_name=os.environ['RAG_EMBEDDING_MODEL'], device='cpu')"; \ fi From 314b5b5f6c98f160681efa9ba738b1f5b597db71 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Tue, 16 Apr 2024 14:23:57 -0500 Subject: [PATCH 42/59] fix --- src/lib/i18n/locales/languages.json | 10 +- src/lib/i18n/locales/pl-pl/translation.json | 742 ++++++++++---------- 2 files changed, 378 insertions(+), 374 deletions(-) diff --git a/src/lib/i18n/locales/languages.json b/src/lib/i18n/locales/languages.json index e01a8f1f..560d554f 100644 --- a/src/lib/i18n/locales/languages.json +++ b/src/lib/i18n/locales/languages.json @@ -52,13 +52,17 @@ "title": "Dutch (Netherlands)" }, { - "code": "pt-PT", - "title": "Portuguese (Portugal)" + "code": "pl-PL", + "title": "Polish" }, { "code": "pt-BR", "title": "Portuguese (Brazil)" }, + { + "code": "pt-PT", + "title": "Portuguese (Portugal)" + }, { "code": "ru-RU", "title": "Russian (Russia)" @@ -83,4 +87,4 @@ "code": "zh-TW", "title": "Chinese (Traditional)" } -] +] \ No newline at end of file diff --git a/src/lib/i18n/locales/pl-pl/translation.json b/src/lib/i18n/locales/pl-pl/translation.json index 323e1c1e..e701c181 100644 --- a/src/lib/i18n/locales/pl-pl/translation.json +++ b/src/lib/i18n/locales/pl-pl/translation.json @@ -1,372 +1,372 @@ { -    "'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.":"'s', 'm', 'h', 'd', 'w' lub '-1' dla bez wygaśnięcia.", -    "(Beta)":"(Beta)", -    "(e.g. `sh webui.sh --api`)":"(np. `sh webui.sh --api`)", -    "(latest)":"(najnowszy)", -    "{{modelName}} is thinking...":"{{modelName}} myśli...", -    "{{webUIName}} Backend Required":"Backend {{webUIName}} wymagane", -    "a user":"użytkownik", -    "About":"O nas", -    "Account":"Konto", -    "Action":"Akcja", -    "Add a model":"Dodaj model", -    "Add a model tag name":"Dodaj nazwę tagu modelu", -    "Add a short description about what this modelfile does":"Dodaj krótki opis tego, co robi ten plik modelu", -    "Add a short title for this prompt":"Dodaj krótki tytuł tego polecenia", -    "Add a tag":"Dodaj tag", -    "Add Docs":"Dodaj dokumenty", -    "Add Files":"Dodaj pliki", -    "Add message":"Dodaj wiadomość", -    "add tags":"dodaj tagi", -    "Adjusting these settings will apply changes universally to all users.":"Dostosowanie tych ustawień spowoduje zastosowanie zmian uniwersalnie do wszystkich użytkowników.", -    "admin":"admin", -    "Admin Panel":"Panel administracyjny", -    "Admin Settings":"Ustawienia administratora", -    "Advanced Parameters":"Zaawansowane parametry", -    "all":"wszyscy", -    "All Users":"Wszyscy użytkownicy", -    "Allow":"Pozwól", -    "Allow Chat Deletion":"Pozwól na usuwanie czatu", -    "alphanumeric characters and hyphens":"znaki alfanumeryczne i myślniki", -    "Already have an account?":"Masz już konto?", -    "an assistant":"asystent", -    "and":"i", -    "API Base URL":"Podstawowy adres URL interfejsu API", -    "API Key":"Klucz API", -    "API RPM":"Pakiet API RPM", -    "are allowed - Activate this command by typing":"są dozwolone - Aktywuj to polecenie, wpisując", -    "Are you sure?":"Jesteś pewien?", -    "Audio":"Dźwięk", -    "Auto-playback response":"Odtwarzanie automatyczne odpowiedzi", -    "Auto-send input after 3 sec.":"Wysyłanie automatyczne po 3 sek.", -    "AUTOMATIC1111 Base URL":"Podstawowy adres URL AUTOMATIC1111", -    "AUTOMATIC1111 Base URL is required.":"Podstawowy adres URL AUTOMATIC1111 jest wymagany.", -    "available!":"dostępny!", -    "Back":"Wstecz", -    "Builder Mode":"Tryb budowniczego", -    "Cancel":"Anuluj", -    "Categories":"Kategorie", -    "Change Password":"Zmień hasło", -    "Chat":"Czat", -    "Chat History":"Historia czatu", -    "Chat History is off for this browser.":"Historia czatu jest wyłączona dla tej przeglądarki.", -    "Chats":"Czaty", -    "Check Again":"Sprawdź ponownie", -    "Check for updates":"Sprawdź aktualizacje", -    "Checking for updates...":"Sprawdzanie aktualizacji...", -    "Choose a model before saving...":"Wybierz model przed zapisaniem...", -    "Chunk Overlap":"Zachodzenie bloku", -    "Chunk Params":"Parametry bloku", -    "Chunk Size":"Rozmiar bloku", -    "Click here for help.":"Kliknij tutaj, aby uzyskać pomoc.", -    "Click here to check other modelfiles.":"Kliknij tutaj, aby sprawdzić inne pliki modelowe.", -    "Click here to select":"Kliknij tutaj, aby wybrać", -    "Click here to select documents.":"Kliknij tutaj, aby wybrać dokumenty.", -    "click here.":"kliknij tutaj.", -    "Click on the user role button to change a user's role.":"Kliknij przycisk roli użytkownika, aby zmienić rolę użytkownika.", -    "Close":"Zamknij", -    "Collection":"Kolekcja", -    "Command":"Polecenie", -    "Confirm Password":"Potwierdź hasło", -    "Connections":"Połączenia", -    "Content":"Zawartość", -    "Context Length":"Długość kontekstu", -    "Conversation Mode":"Tryb rozmowy", -    "Copy last code block":"Skopiuj ostatni blok kodu", -    "Copy last response":"Skopiuj ostatnią odpowiedź", -    "Copying to clipboard was successful!":"Kopiowanie do schowka zakończone powodzeniem!", -    "Create a concise, 3-5 word phrase as a header for the following query, strictly adhering to the 3-5 word limit and avoiding the use of the word 'title':":"Utwórz zwięzłą frazę składającą się z 3-5 słów jako nagłówek dla następującego zapytania, ściśle przestrzegając limitu od 3 do 5 słów i unikając użycia słowa 'tytuł':", -    "Create a modelfile":"Utwórz plik modelu", -    "Create Account":"Utwórz konto", -    "Created at":"Utworzono o", -    "Created by":"Utworzono przez", -    "Current Model":"Bieżący model", -    "Current Password":"Bieżące hasło", -    "Custom":"Niestandardowy", -    "Customize Ollama models for a specific purpose":"Dostosuj modele Ollama do określonego celu", -    "Dark":"Ciemny", -    "Database":"Baza danych", -    "DD/MM/YYYY HH:mm":"DD/MM/RRRR GG:MM", -    "Default":"Domyślny", -    "Default (Automatic1111)":"Domyślny (Automatyczny1111)", -    "Default (Web API)":"Domyślny (Interfejs API)", -    "Default model updated":"Domyślny model zaktualizowany", -    "Default Prompt Suggestions":"Domyślne sugestie promptów", -    "Default User Role":"Domyślna rola użytkownika", -    "delete":"Usuń", -    "Delete a model":"Usuń model", -    "Delete chat":"Usuń czat", -    "Delete Chats":"Usuń czaty", -    "Deleted {{deleteModelTag}}":"Usunięto {{deleteModelTag}}", -    "Deleted {tagName}":"Usunięto {tagName}", -    "Description":"Opis", -    "Notifications":"Powiadomienia", -    "Disabled":"Wyłączone", -    "Discover a modelfile":"Odkryj plik modelu", -    "Discover a prompt":"Odkryj prompt", -    "Discover, download, and explore custom prompts":"Odkryj, pobierz i eksploruj niestandardowe prompty", -    "Discover, download, and explore model presets":"Odkryj, pobierz i eksploruj ustawienia modeli", -    "Display the username instead of You in the Chat":"Wyświetl nazwę użytkownika zamiast Ty w czacie", -    "Document":"Dokument", -    "Document Settings":"Ustawienia dokumentu", -    "Documents":"Dokumenty", -    "does not make any external connections, and your data stays securely on your locally hosted server.":"nie nawiązuje żadnych zewnętrznych połączeń, a Twoje dane pozostają bezpiecznie na Twoim lokalnie hostowanym serwerze.", -    "Don't Allow":"Nie zezwalaj", -    "Don't have an account?":"Nie masz konta?", -    "Download as a File":"Pobierz jako plik", -    "Download Database":"Pobierz bazę danych", -    "Drop any files here to add to the conversation":"Upuść pliki tutaj, aby dodać do rozmowy", -    "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.":"np. '30s', '10m'. Poprawne jednostki czasu to 's', 'm', 'h'.", -    "Edit Doc":"Edytuj dokument", -    "Edit User":"Edytuj użytkownika", -    "Email":"Email", -    "Embedding model: {{embedding_model}}":"Osadzony model: {{embedding_model}}", -    "Enable Chat History":"Włącz historię czatu", -    "Enable New Sign Ups":"Włącz nowe rejestracje", -    "Enabled":"Włączone", -    "Enter {{role}} message here":"Wprowadź wiadomość {{role}} tutaj", -    "Enter API Key":"Wprowadź klucz API", -    "Enter Chunk Overlap":"Wprowadź zakchodzenie bloku", -    "Enter Chunk Size":"Wprowadź rozmiar bloku", -    "Enter Image Size (e.g. 512x512)":"Wprowadź rozmiar obrazu (np. 512x512)", -    "Enter LiteLLM API Base URL (litellm_params.api_base)":"Wprowadź bazowy adres URL LiteLLM API (litellm_params.api_base)", -    "Enter LiteLLM API Key (litellm_params.api_key)":"Wprowadź klucz API LiteLLM (litellm_params.api_key)", -    "Enter LiteLLM API RPM (litellm_params.rpm)":"Wprowadź  API LiteLLM  RPM(litellm_params.rpm)", -    "Enter LiteLLM Model (litellm_params.model)":"Wprowadź model LiteLLM (litellm_params.model)", -    "Enter Max Tokens (litellm_params.max_tokens)":"Wprowadź maksymalną liczbę tokenów (litellm_params.max_tokens)", -    "Enter model tag (e.g. {{modelTag}})":"Wprowadź tag modelu (np. {{modelTag}})", -    "Enter Number of Steps (e.g. 50)":"Wprowadź liczbę kroków (np. 50)", -    "Enter stop sequence":"Wprowadź sekwencję zatrzymania", -    "Enter Top K":"Wprowadź Top K", -    "Enter URL (e.g. http://127.0.0.1:7860/)":"Wprowadź adres URL (np. http://127.0.0.1:7860/)", -    "Enter Your Email":"Wprowadź swój adres email", -    "Enter Your Full Name":"Wprowadź swoje imię i nazwisko", -    "Enter Your Password":"Wprowadź swoje hasło", -    "Experimental":"Eksperymentalne", -    "Export All Chats (All Users)":"Eksportuj wszystkie czaty (wszyscy użytkownicy)", -    "Export Chats":"Eksportuj czaty", -    "Export Documents Mapping":"Eksportuj mapowanie dokumentów", -    "Export Modelfiles":"Eksportuj pliki modeli", -    "Export Prompts":"Eksportuj prompty", -    "Failed to read clipboard contents":"Nie udało się odczytać zawartości schowka", -    "File Mode":"Tryb pliku", -    "File not found.":"Plik nie został znaleziony.", -    "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.":"Wykryto podszywanie się pod odcisk palca: Nie można używać inicjałów jako awatara. Przechodzenie do domyślnego obrazu profilowego.", -    "Focus chat input":"Skoncentruj na czacie", -    "Format your variables using square brackets like this:":"Formatuj swoje zmienne, używając nawiasów kwadratowych, np.", -    "From (Base Model)":"Z (Model Podstawowy)", -    "Full Screen Mode":"Tryb pełnoekranowy", -    "General":"Ogólne", -    "General Settings":"Ogólne ustawienia", -    "Hello, {{name}}":"Witaj, {{nazwa}}", -    "Hide":"Ukryj", -    "Hide Additional Params":"Ukryj dodatkowe parametry", -    "How can I help you today?":"Jak mogę Ci dzisiaj pomóc?", -    "Image Generation (Experimental)":"Generowanie obrazu (eksperymentalne)", -    "Image Generation Engine":"Silnik generowania obrazu", -    "Image Settings":"Ustawienia obrazu", -    "Images":"Obrazy", -    "Import Chats":"Importuj rozmowy", -    "Import Documents Mapping":"Importuj mapowanie dokumentów", -    "Import Modelfiles":"Importuj pliki modeli", -    "Import Prompts":"Importuj prompty", -    "Include `--api` flag when running stable-diffusion-webui":"Dołącz flagę `--api` podczas uruchamiania stable-diffusion-webui", -    "Interface":"Interfejs", -    "join our Discord for help.":"Dołącz do naszego Discorda po pomoc.", -    "JSON":"JSON", -    "JWT Expiration":"Wygaśnięcie JWT", -    "JWT Token":"Token JWT", -    "Keep Alive":"Zachowaj łączność", -    "Keyboard shortcuts":"Skróty klawiszowe", -    "Language":"Język", -    "Light":"Jasny", -    "Listening...":"Nasłuchiwanie...", -    "LLMs can make mistakes. Verify important information.":"LLMy mogą popełniać błędy. Zweryfikuj ważne informacje.", -    "Made by OpenWebUI Community":"Stworzone przez społeczność OpenWebUI", -    "Make sure to enclose them with":"Upewnij się, że są one zamknięte w", -    "Manage LiteLLM Models":"Zarządzaj modelami LiteLLM", -    "Manage Models":"Zarządzaj modelami", -    "Manage Ollama Models":"Zarządzaj modelami Ollama", -    "Max Tokens":"Maksymalna liczba tokenów", -    "Maximum of 3 models can be downloaded simultaneously. Please try again later.":"Maksymalnie 3 modele można pobierać jednocześnie. Spróbuj ponownie później.", -    "Mirostat":"Mirostat", -    "Mirostat Eta":"Mirostat Eta", -    "Mirostat Tau":"Mirostat Tau", -    "MMMM DD, YYYY":"MMMM DD, YYYY", -    "Model '{{modelName}}' has been successfully downloaded.":"Model '{{nazwaModelu}}' został pomyślnie pobrany.", -    "Model '{{modelTag}}' is already in queue for downloading.":"Model '{{nazwaModelu}}' jest już w kolejce do pobrania.", -    "Model {{embedding_model}} update complete!":"Aktualizacja modelu {{embedding_model}} zakończona pomyślnie!": "", -    "Model {{embedding_model}} update failed or not required!":"Model {{embedding_model}} aktualizacja nie powiodła się lub nie jest wymagana!", -    "Model {{modelId}} not found":"Model {{modelId}} nie został znaleziony", -    "Model {{modelName}} already exists.":"Model {{modelName}} już istnieje.", -    "Model filesystem path detected. Model shortname is required for update, cannot continue.":"Wykryto ścieżkę systemu plików modelu. Wymagana jest krótka nazwa modelu do aktualizacji, nie można kontynuować.", -    "Model Name":"Nazwa modelu", -    "Model not selected":"Model nie został wybrany", -    "Model Tag Name":"Nazwa tagu modelu", -    "Model Whitelisting":"Whitelisting modelu", -    "Model(s) Whitelisted":"Model(e) dodane do listy białej", -    "Modelfile":"Plik modelu", -    "Modelfile Advanced Settings":"Zaawansowane ustawienia pliku modelu", -    "Modelfile Content":"Zawartość pliku modelu", -    "Modelfiles":"Pliki modeli", -    "Models":"Modele", -    "My Documents":"Moje dokumenty", -    "My Modelfiles":"Moje pliki modeli", -    "My Prompts":"Moje prompty", -    "Name":"Nazwa", -    "Name Tag":"Etykieta nazwy", -    "Name your modelfile":"Nadaj nazwę swojemu plikowi modelu", -    "New Chat":"Nowy czat", -    "New Password":"Nowe hasło", -    "Not sure what to add?":"Nie wiesz, co dodać?", -    "Not sure what to write? Switch to":"Nie wiesz, co napisać? Przełącz się na", -    "Off":"Wyłączony", -    "Okay, Let's Go!":"Okej, zaczynamy!", -    "Ollama Base URL":"Adres bazowy URL Ollama", -    "Ollama Version":"Wersja Ollama", -    "On":"Włączony", -    "Only":"Tylko", -    "Only alphanumeric characters and hyphens are allowed in the command string.":"W poleceniu dozwolone są tylko znaki alfanumeryczne i myślniki.", -    "Oops! Hold tight! Your files are still in the processing oven. We're cooking them up to perfection. Please be patient and we'll let you know once they're ready.":"Ups! Trzymaj się! Twoje pliki są wciąż w procesie obróbki. Gotujemy je do perfekcji. Prosimy o cierpliwość, poinformujemy Cię, gdy będą gotowe.", -    "Oops! Looks like the URL is invalid. Please double-check and try again.":"Ups! Wygląda na to, że URL jest nieprawidłowy. Sprawdź jeszcze raz i spróbuj ponownie.", -    "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.":"Ups! Używasz nieobsługiwaniej metody (tylko interfejs front-end). Proszę obsłużyć interfejs WebUI z poziomu backendu.", -    "Open":"Otwórz", -    "Open AI":"Open AI", -    "Open AI (Dall-E)":"Open AI (Dall-E)", -    "Open new chat":"Otwórz nowy czat", -    "OpenAI API":"OpenAI API", -    "OpenAI API Key":"Klucz API OpenAI", -    "OpenAI API Key is required.":"Klucz API OpenAI jest wymagany.", -    "or":"lub", -    "Parameters":"Parametry", -    "Password":"Hasło", -    "PDF Extract Images (OCR)":"PDF Wyodrębnij obrazy (OCR)", -    "pending":"oczekujące", -    "Permission denied when accessing microphone: {{error}}":"Odmowa dostępu do mikrofonu: {{error}}", -    "Playground":"Plac zabaw", -    "Profile":"Profil", -    "Prompt Content":"Zawartość prompta", -    "Prompt suggestions":"Sugestie prompta", -    "Prompts":"Prompty", -    "Pull a model from Ollama.com":"Pobierz model z Ollama.com", -    "Pull Progress":"Postęp pobierania", -    "Query Params":"Parametry zapytania", -    "RAG Template":"Szablon RAG", -    "Raw Format":"Format bez obróbki", -    "Record voice":"Nagraj głos", -    "Redirecting you to OpenWebUI Community":"Przekierowujemy Cię do społeczności OpenWebUI", -    "Release Notes":"Notatki wydania", -    "Repeat Last N":"Powtórz ostatnie N", -    "Repeat Penalty":"Kara za powtórzenie", -    "Request Mode":"Tryb żądania", -    "Reset Vector Storage":"Resetuj przechowywanie wektorów", -    "Response AutoCopy to Clipboard":"Automatyczne kopiowanie odpowiedzi do schowka", -    "Role":"Rola", -    "Rosé Pine":"Rosé Pine", -    "Rosé Pine Dawn":"Rosé Pine Dawn", -    "Save":"Zapisz", -    "Save & Create":"Zapisz i utwórz", -    "Save & Submit":"Zapisz i wyślij", -    "Save & Update":"Zapisz i zaktualizuj", -    "Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through":"Bezpośrednie zapisywanie dzienników czatu w pamięci przeglądarki nie jest już obsługiwane. Prosimy o pobranie i usunięcie dzienników czatu, klikając poniższy przycisk. Nie martw się, możesz łatwo ponownie zaimportować dzienniki czatu do backendu za pomocą", -    "Scan":"Skanuj", -    "Scan complete!":"Skanowanie zakończone!", -    "Scan for documents from {{path}}":"Skanuj dokumenty z {{path}}", -    "Search":"Szukaj", -    "Search Documents":"Szukaj dokumentów", -    "Search Prompts":"Szukaj promptów", -    "See readme.md for instructions":"Zajrzyj do readme.md po instrukcje", -    "See what's new":"Zobacz co nowego", -    "Seed":"Seed", -    "Select a mode":"Wybierz tryb", -    "Select a model":"Wybierz model", -    "Select an Ollama instance":"Wybierz instancję Ollama", -    "Send a Message":"Wyślij Wiadomość", -    "Send message":"Wyślij wiadomość", -    "Server connection verified":"Połączenie z serwerem zweryfikowane", -    "Set as default":"Ustaw jako domyślne", -    "Set Default Model":"Ustaw domyślny model", -    "Set Image Size":"Ustaw rozmiar obrazu", -    "Set Steps":"Ustaw kroki", -    "Set Title Auto-Generation Model":"Ustaw model automatycznego generowania tytułów", -    "Set Voice":"Ustaw głos", -    "Settings":"Ustawienia", -    "Settings saved successfully!":"Ustawienia zapisane pomyślnie!", -    "Share to OpenWebUI Community":"Dziel się z społecznością OpenWebUI", -    "short-summary":"Krótkie podsumowanie", -    "Show":"Pokaż", -    "Show Additional Params":"Pokaż dodatkowe parametry", -    "Show shortcuts":"Pokaż skróty", -    "sidebar":"Panel boczny", -    "Sign in":"Zaloguj się", -    "Sign Out":"Wyloguj się", -    "Sign up":"Zarejestruj się", -    "Speech recognition error: {{error}}":"Błąd rozpoznawania mowy: {{error}}", -    "Speech-to-Text Engine":"Silnik mowy na tekst", -    "SpeechRecognition API is not supported in this browser.":"API Rozpoznawania Mowy nie jest obsługiwane w tej przeglądarce.", -    "Stop Sequence":"Zatrzymaj sekwencję", -    "STT Settings":"Ustawienia STT", -    "Submit":"Zatwierdź", -    "Success":"Sukces", -    "Successfully updated.":"Pomyślnie zaktualizowano.", -    "Sync All":"Synchronizuj wszystko", -    "System":"System", -    "System Prompt":"Prompt systemowy", -    "Tags":"Tagi", -    "Temperature":"Temperatura", -    "Template":"Szablon", -    "Text Completion":"Uzupełnienie tekstu", -    "Text-to-Speech Engine":"Silnik tekstu na mowę", -    "Tfs Z":"Tfs Z", -    "Theme":"Motyw", -    "This ensures that your valuable conversations are securely saved to your backend database. Thank you!":"To zapewnia, że Twoje cenne rozmowy są bezpiecznie zapisywane w bazie danych backendowej. Dziękujemy!", -    "This setting does not sync across browsers or devices.":"To ustawienie nie synchronizuje się między przeglądarkami ani urządzeniami.", -    "Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.":"Porada: Aktualizuj wiele zmiennych kolejno, naciskając klawisz tabulatora w polu wprowadzania czatu po każdej zmianie.", -    "Title":"Tytuł", -    "Title Auto-Generation":"Automatyczne generowanie tytułu", -    "Title Generation Prompt":"Prompt generowania tytułu", -    "to":"do", -    "To access the available model names for downloading,":"Aby uzyskać dostęp do dostępnych nazw modeli do pobrania,", -    "To access the GGUF models available for downloading,":"Aby uzyskać dostęp do dostępnych modeli GGUF do pobrania,", -    "to chat input.":"do pola wprowadzania czatu.", -    "Toggle settings":"Przełącz ustawienia", -    "Toggle sidebar":"Przełącz panel boczny", -    "Top K":"Najlepsze K", -    "Top P":"Najlepsze P", -    "Trouble accessing Ollama?":"Problemy z dostępem do Ollama?", -    "TTS Settings":"Ustawienia TTS", -    "Type Hugging Face Resolve (Download) URL":"Wprowadź adres URL do pobrania z Hugging Face", -    "Uh-oh! There was an issue connecting to {{provider}}.":"O nie! Wystąpił problem z połączeniem z {{provider}}.", -    "Understand that updating or changing your embedding model requires reset of the vector database and re-import of all documents. You have been warned!":"Zrozum, że aktualizacja lub zmiana modelu osadzania wymaga zresetowania bazy wektorów i ponownego zaimportowania wszystkich dokumentów. Zostałeś ostrzeżony!", -    "Unknown File Type '{{file_type}}', but accepting and treating as plain text":"Nieznany typ pliku '{{file_type}}', ale akceptowany i traktowany jako zwykły tekst", -    "Update":"Aktualizacja", -    "Update embedding model {{embedding_model}}":"Aktualizuj modelu osadzania {{embedding_model}}", -    "Update password":"Aktualizacja hasła", -    "Upload a GGUF model":"Prześlij model GGUF", -    "Upload files":"Prześlij pliki", -    "Upload Progress":"Postęp przesyłania", -    "URL Mode":"Tryb adresu URL", -    "Use '#' in the prompt input to load and select your documents.":"Użyj '#' w polu wprowadzania polecenia, aby załadować i wybrać swoje dokumenty.", -    "Use Gravatar":"Użyj Gravatara", -    "Use Initials":"Użyj inicjałów", -    "user":"użytkownik", -    "User Permissions":"Uprawnienia użytkownika", -    "Users":"Użytkownicy", -    "Utilize":"Wykorzystaj", -    "Valid time units:":"Poprawne jednostki czasu:", -    "variable":"zmienna", -    "variable to have them replaced with clipboard content.":"zmienna która zostanie zastąpiona zawartością schowka.", -    "Version":"Wersja", -    "Web":"Sieć", -    "WebUI Add-ons":"Dodatki do interfejsu WebUI", -    "WebUI Settings":"Ustawienia interfejsu WebUI", -    "WebUI will make requests to":"Interfejs sieciowy będzie wysyłał żądania do", -    "What’s New in":"Co nowego w", -    "When history is turned off, new chats on this browser won't appear in your history on any of your devices.":"Kiedy historia jest wyłączona, nowe rozmowy na tej przeglądarce nie będą widoczne w historii na żadnym z twoich urządzeń.", -    "Whisper (Local)":"Whisper (Lokalnie)", -    "Write a prompt suggestion (e.g. Who are you?)":"Napisz sugestię do polecenia (np. Kim jesteś?)", -    "Write a summary in 50 words that summarizes [topic or keyword].":"Napisz podsumowanie w 50 słowach, które podsumowuje [temat lub słowo kluczowe].", -    "You":"Ty", -    "You're a helpful assistant.":"Jesteś pomocnym asystentem.", -    "You're now logged in.": "":"Jesteś teraz zalogowany." -} + "'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' lub '-1' dla bez wygaśnięcia.", + "(Beta)": "(Beta)", + "(e.g. `sh webui.sh --api`)": "(np. `sh webui.sh --api`)", + "(latest)": "(najnowszy)", + "{{modelName}} is thinking...": "{{modelName}} myśli...", + "{{webUIName}} Backend Required": "Backend {{webUIName}} wymagane", + "a user": "użytkownik", + "About": "O nas", + "Account": "Konto", + "Action": "Akcja", + "Add a model": "Dodaj model", + "Add a model tag name": "Dodaj nazwę tagu modelu", + "Add a short description about what this modelfile does": "Dodaj krótki opis tego, co robi ten plik modelu", + "Add a short title for this prompt": "Dodaj krótki tytuł tego polecenia", + "Add a tag": "Dodaj tag", + "Add Docs": "Dodaj dokumenty", + "Add Files": "Dodaj pliki", + "Add message": "Dodaj wiadomość", + "add tags": "dodaj tagi", + "Adjusting these settings will apply changes universally to all users.": "Dostosowanie tych ustawień spowoduje zastosowanie zmian uniwersalnie do wszystkich użytkowników.", + "admin": "admin", + "Admin Panel": "Panel administracyjny", + "Admin Settings": "Ustawienia administratora", + "Advanced Parameters": "Zaawansowane parametry", + "all": "wszyscy", + "All Users": "Wszyscy użytkownicy", + "Allow": "Pozwól", + "Allow Chat Deletion": "Pozwól na usuwanie czatu", + "alphanumeric characters and hyphens": "znaki alfanumeryczne i myślniki", + "Already have an account?": "Masz już konto?", + "an assistant": "asystent", + "and": "i", + "API Base URL": "Podstawowy adres URL interfejsu API", + "API Key": "Klucz API", + "API RPM": "Pakiet API RPM", + "are allowed - Activate this command by typing": "są dozwolone - Aktywuj to polecenie, wpisując", + "Are you sure?": "Jesteś pewien?", + "Audio": "Dźwięk", + "Auto-playback response": "Odtwarzanie automatyczne odpowiedzi", + "Auto-send input after 3 sec.": "Wysyłanie automatyczne po 3 sek.", + "AUTOMATIC1111 Base URL": "Podstawowy adres URL AUTOMATIC1111", + "AUTOMATIC1111 Base URL is required.": "Podstawowy adres URL AUTOMATIC1111 jest wymagany.", + "available!": "dostępny!", + "Back": "Wstecz", + "Builder Mode": "Tryb budowniczego", + "Cancel": "Anuluj", + "Categories": "Kategorie", + "Change Password": "Zmień hasło", + "Chat": "Czat", + "Chat History": "Historia czatu", + "Chat History is off for this browser.": "Historia czatu jest wyłączona dla tej przeglądarki.", + "Chats": "Czaty", + "Check Again": "Sprawdź ponownie", + "Check for updates": "Sprawdź aktualizacje", + "Checking for updates...": "Sprawdzanie aktualizacji...", + "Choose a model before saving...": "Wybierz model przed zapisaniem...", + "Chunk Overlap": "Zachodzenie bloku", + "Chunk Params": "Parametry bloku", + "Chunk Size": "Rozmiar bloku", + "Click here for help.": "Kliknij tutaj, aby uzyskać pomoc.", + "Click here to check other modelfiles.": "Kliknij tutaj, aby sprawdzić inne pliki modelowe.", + "Click here to select": "Kliknij tutaj, aby wybrać", + "Click here to select documents.": "Kliknij tutaj, aby wybrać dokumenty.", + "click here.": "kliknij tutaj.", + "Click on the user role button to change a user's role.": "Kliknij przycisk roli użytkownika, aby zmienić rolę użytkownika.", + "Close": "Zamknij", + "Collection": "Kolekcja", + "Command": "Polecenie", + "Confirm Password": "Potwierdź hasło", + "Connections": "Połączenia", + "Content": "Zawartość", + "Context Length": "Długość kontekstu", + "Conversation Mode": "Tryb rozmowy", + "Copy last code block": "Skopiuj ostatni blok kodu", + "Copy last response": "Skopiuj ostatnią odpowiedź", + "Copying to clipboard was successful!": "Kopiowanie do schowka zakończone powodzeniem!", + "Create a concise, 3-5 word phrase as a header for the following query, strictly adhering to the 3-5 word limit and avoiding the use of the word 'title':": "Utwórz zwięzłą frazę składającą się z 3-5 słów jako nagłówek dla następującego zapytania, ściśle przestrzegając limitu od 3 do 5 słów i unikając użycia słowa 'tytuł':", + "Create a modelfile": "Utwórz plik modelu", + "Create Account": "Utwórz konto", + "Created at": "Utworzono o", + "Created by": "Utworzono przez", + "Current Model": "Bieżący model", + "Current Password": "Bieżące hasło", + "Custom": "Niestandardowy", + "Customize Ollama models for a specific purpose": "Dostosuj modele Ollama do określonego celu", + "Dark": "Ciemny", + "Database": "Baza danych", + "DD/MM/YYYY HH:mm": "DD/MM/RRRR GG:MM", + "Default": "Domyślny", + "Default (Automatic1111)": "Domyślny (Automatyczny1111)", + "Default (Web API)": "Domyślny (Interfejs API)", + "Default model updated": "Domyślny model zaktualizowany", + "Default Prompt Suggestions": "Domyślne sugestie promptów", + "Default User Role": "Domyślna rola użytkownika", + "delete": "Usuń", + "Delete a model": "Usuń model", + "Delete chat": "Usuń czat", + "Delete Chats": "Usuń czaty", + "Deleted {{deleteModelTag}}": "Usunięto {{deleteModelTag}}", + "Deleted {tagName}": "Usunięto {tagName}", + "Description": "Opis", + "Notifications": "Powiadomienia", + "Disabled": "Wyłączone", + "Discover a modelfile": "Odkryj plik modelu", + "Discover a prompt": "Odkryj prompt", + "Discover, download, and explore custom prompts": "Odkryj, pobierz i eksploruj niestandardowe prompty", + "Discover, download, and explore model presets": "Odkryj, pobierz i eksploruj ustawienia modeli", + "Display the username instead of You in the Chat": "Wyświetl nazwę użytkownika zamiast Ty w czacie", + "Document": "Dokument", + "Document Settings": "Ustawienia dokumentu", + "Documents": "Dokumenty", + "does not make any external connections, and your data stays securely on your locally hosted server.": "nie nawiązuje żadnych zewnętrznych połączeń, a Twoje dane pozostają bezpiecznie na Twoim lokalnie hostowanym serwerze.", + "Don't Allow": "Nie zezwalaj", + "Don't have an account?": "Nie masz konta?", + "Download as a File": "Pobierz jako plik", + "Download Database": "Pobierz bazę danych", + "Drop any files here to add to the conversation": "Upuść pliki tutaj, aby dodać do rozmowy", + "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "np. '30s', '10m'. Poprawne jednostki czasu to 's', 'm', 'h'.", + "Edit Doc": "Edytuj dokument", + "Edit User": "Edytuj użytkownika", + "Email": "Email", + "Embedding model: {{embedding_model}}": "Osadzony model: {{embedding_model}}", + "Enable Chat History": "Włącz historię czatu", + "Enable New Sign Ups": "Włącz nowe rejestracje", + "Enabled": "Włączone", + "Enter {{role}} message here": "Wprowadź wiadomość {{role}} tutaj", + "Enter API Key": "Wprowadź klucz API", + "Enter Chunk Overlap": "Wprowadź zakchodzenie bloku", + "Enter Chunk Size": "Wprowadź rozmiar bloku", + "Enter Image Size (e.g. 512x512)": "Wprowadź rozmiar obrazu (np. 512x512)", + "Enter LiteLLM API Base URL (litellm_params.api_base)": "Wprowadź bazowy adres URL LiteLLM API (litellm_params.api_base)", + "Enter LiteLLM API Key (litellm_params.api_key)": "Wprowadź klucz API LiteLLM (litellm_params.api_key)", + "Enter LiteLLM API RPM (litellm_params.rpm)": "Wprowadź API LiteLLM RPM(litellm_params.rpm)", + "Enter LiteLLM Model (litellm_params.model)": "Wprowadź model LiteLLM (litellm_params.model)", + "Enter Max Tokens (litellm_params.max_tokens)": "Wprowadź maksymalną liczbę tokenów (litellm_params.max_tokens)", + "Enter model tag (e.g. {{modelTag}})": "Wprowadź tag modelu (np. {{modelTag}})", + "Enter Number of Steps (e.g. 50)": "Wprowadź liczbę kroków (np. 50)", + "Enter stop sequence": "Wprowadź sekwencję zatrzymania", + "Enter Top K": "Wprowadź Top K", + "Enter URL (e.g. http://127.0.0.1:7860/)": "Wprowadź adres URL (np. http://127.0.0.1:7860/)", + "Enter Your Email": "Wprowadź swój adres email", + "Enter Your Full Name": "Wprowadź swoje imię i nazwisko", + "Enter Your Password": "Wprowadź swoje hasło", + "Experimental": "Eksperymentalne", + "Export All Chats (All Users)": "Eksportuj wszystkie czaty (wszyscy użytkownicy)", + "Export Chats": "Eksportuj czaty", + "Export Documents Mapping": "Eksportuj mapowanie dokumentów", + "Export Modelfiles": "Eksportuj pliki modeli", + "Export Prompts": "Eksportuj prompty", + "Failed to read clipboard contents": "Nie udało się odczytać zawartości schowka", + "File Mode": "Tryb pliku", + "File not found.": "Plik nie został znaleziony.", + "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Wykryto podszywanie się pod odcisk palca: Nie można używać inicjałów jako awatara. Przechodzenie do domyślnego obrazu profilowego.", + "Focus chat input": "Skoncentruj na czacie", + "Format your variables using square brackets like this:": "Formatuj swoje zmienne, używając nawiasów kwadratowych, np.", + "From (Base Model)": "Z (Model Podstawowy)", + "Full Screen Mode": "Tryb pełnoekranowy", + "General": "Ogólne", + "General Settings": "Ogólne ustawienia", + "Hello, {{name}}": "Witaj, {{nazwa}}", + "Hide": "Ukryj", + "Hide Additional Params": "Ukryj dodatkowe parametry", + "How can I help you today?": "Jak mogę Ci dzisiaj pomóc?", + "Image Generation (Experimental)": "Generowanie obrazu (eksperymentalne)", + "Image Generation Engine": "Silnik generowania obrazu", + "Image Settings": "Ustawienia obrazu", + "Images": "Obrazy", + "Import Chats": "Importuj rozmowy", + "Import Documents Mapping": "Importuj mapowanie dokumentów", + "Import Modelfiles": "Importuj pliki modeli", + "Import Prompts": "Importuj prompty", + "Include `--api` flag when running stable-diffusion-webui": "Dołącz flagę `--api` podczas uruchamiania stable-diffusion-webui", + "Interface": "Interfejs", + "join our Discord for help.": "Dołącz do naszego Discorda po pomoc.", + "JSON": "JSON", + "JWT Expiration": "Wygaśnięcie JWT", + "JWT Token": "Token JWT", + "Keep Alive": "Zachowaj łączność", + "Keyboard shortcuts": "Skróty klawiszowe", + "Language": "Język", + "Light": "Jasny", + "Listening...": "Nasłuchiwanie...", + "LLMs can make mistakes. Verify important information.": "LLMy mogą popełniać błędy. Zweryfikuj ważne informacje.", + "Made by OpenWebUI Community": "Stworzone przez społeczność OpenWebUI", + "Make sure to enclose them with": "Upewnij się, że są one zamknięte w", + "Manage LiteLLM Models": "Zarządzaj modelami LiteLLM", + "Manage Models": "Zarządzaj modelami", + "Manage Ollama Models": "Zarządzaj modelami Ollama", + "Max Tokens": "Maksymalna liczba tokenów", + "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maksymalnie 3 modele można pobierać jednocześnie. Spróbuj ponownie później.", + "Mirostat": "Mirostat", + "Mirostat Eta": "Mirostat Eta", + "Mirostat Tau": "Mirostat Tau", + "MMMM DD, YYYY": "MMMM DD, YYYY", + "Model '{{modelName}}' has been successfully downloaded.": "Model '{{nazwaModelu}}' został pomyślnie pobrany.", + "Model '{{modelTag}}' is already in queue for downloading.": "Model '{{nazwaModelu}}' jest już w kolejce do pobrania.", + "Model {{embedding_model}} update complete!": "Aktualizacja modelu {{embedding_model}} zakończona pomyślnie!": "", + "Model {{embedding_model}} update failed or not required!": "Model {{embedding_model}} aktualizacja nie powiodła się lub nie jest wymagana!", + "Model {{modelId}} not found": "Model {{modelId}} nie został znaleziony", + "Model {{modelName}} already exists.": "Model {{modelName}} już istnieje.", + "Model filesystem path detected. Model shortname is required for update, cannot continue.": "Wykryto ścieżkę systemu plików modelu. Wymagana jest krótka nazwa modelu do aktualizacji, nie można kontynuować.", + "Model Name": "Nazwa modelu", + "Model not selected": "Model nie został wybrany", + "Model Tag Name": "Nazwa tagu modelu", + "Model Whitelisting": "Whitelisting modelu", + "Model(s) Whitelisted": "Model(e) dodane do listy białej", + "Modelfile": "Plik modelu", + "Modelfile Advanced Settings": "Zaawansowane ustawienia pliku modelu", + "Modelfile Content": "Zawartość pliku modelu", + "Modelfiles": "Pliki modeli", + "Models": "Modele", + "My Documents": "Moje dokumenty", + "My Modelfiles": "Moje pliki modeli", + "My Prompts": "Moje prompty", + "Name": "Nazwa", + "Name Tag": "Etykieta nazwy", + "Name your modelfile": "Nadaj nazwę swojemu plikowi modelu", + "New Chat": "Nowy czat", + "New Password": "Nowe hasło", + "Not sure what to add?": "Nie wiesz, co dodać?", + "Not sure what to write? Switch to": "Nie wiesz, co napisać? Przełącz się na", + "Off": "Wyłączony", + "Okay, Let's Go!": "Okej, zaczynamy!", + "Ollama Base URL": "Adres bazowy URL Ollama", + "Ollama Version": "Wersja Ollama", + "On": "Włączony", + "Only": "Tylko", + "Only alphanumeric characters and hyphens are allowed in the command string.": "W poleceniu dozwolone są tylko znaki alfanumeryczne i myślniki.", + "Oops! Hold tight! Your files are still in the processing oven. We're cooking them up to perfection. Please be patient and we'll let you know once they're ready.": "Ups! Trzymaj się! Twoje pliki są wciąż w procesie obróbki. Gotujemy je do perfekcji. Prosimy o cierpliwość, poinformujemy Cię, gdy będą gotowe.", + "Oops! Looks like the URL is invalid. Please double-check and try again.": "Ups! Wygląda na to, że URL jest nieprawidłowy. Sprawdź jeszcze raz i spróbuj ponownie.", + "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ups! Używasz nieobsługiwaniej metody (tylko interfejs front-end). Proszę obsłużyć interfejs WebUI z poziomu backendu.", + "Open": "Otwórz", + "Open AI": "Open AI", + "Open AI (Dall-E)": "Open AI (Dall-E)", + "Open new chat": "Otwórz nowy czat", + "OpenAI API": "OpenAI API", + "OpenAI API Key": "Klucz API OpenAI", + "OpenAI API Key is required.": "Klucz API OpenAI jest wymagany.", + "or": "lub", + "Parameters": "Parametry", + "Password": "Hasło", + "PDF Extract Images (OCR)": "PDF Wyodrębnij obrazy (OCR)", + "pending": "oczekujące", + "Permission denied when accessing microphone: {{error}}": "Odmowa dostępu do mikrofonu: {{error}}", + "Playground": "Plac zabaw", + "Profile": "Profil", + "Prompt Content": "Zawartość prompta", + "Prompt suggestions": "Sugestie prompta", + "Prompts": "Prompty", + "Pull a model from Ollama.com": "Pobierz model z Ollama.com", + "Pull Progress": "Postęp pobierania", + "Query Params": "Parametry zapytania", + "RAG Template": "Szablon RAG", + "Raw Format": "Format bez obróbki", + "Record voice": "Nagraj głos", + "Redirecting you to OpenWebUI Community": "Przekierowujemy Cię do społeczności OpenWebUI", + "Release Notes": "Notatki wydania", + "Repeat Last N": "Powtórz ostatnie N", + "Repeat Penalty": "Kara za powtórzenie", + "Request Mode": "Tryb żądania", + "Reset Vector Storage": "Resetuj przechowywanie wektorów", + "Response AutoCopy to Clipboard": "Automatyczne kopiowanie odpowiedzi do schowka", + "Role": "Rola", + "Rosé Pine": "Rosé Pine", + "Rosé Pine Dawn": "Rosé Pine Dawn", + "Save": "Zapisz", + "Save & Create": "Zapisz i utwórz", + "Save & Submit": "Zapisz i wyślij", + "Save & Update": "Zapisz i zaktualizuj", + "Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Bezpośrednie zapisywanie dzienników czatu w pamięci przeglądarki nie jest już obsługiwane. Prosimy o pobranie i usunięcie dzienników czatu, klikając poniższy przycisk. Nie martw się, możesz łatwo ponownie zaimportować dzienniki czatu do backendu za pomocą", + "Scan": "Skanuj", + "Scan complete!": "Skanowanie zakończone!", + "Scan for documents from {{path}}": "Skanuj dokumenty z {{path}}", + "Search": "Szukaj", + "Search Documents": "Szukaj dokumentów", + "Search Prompts": "Szukaj promptów", + "See readme.md for instructions": "Zajrzyj do readme.md po instrukcje", + "See what's new": "Zobacz co nowego", + "Seed": "Seed", + "Select a mode": "Wybierz tryb", + "Select a model": "Wybierz model", + "Select an Ollama instance": "Wybierz instancję Ollama", + "Send a Message": "Wyślij Wiadomość", + "Send message": "Wyślij wiadomość", + "Server connection verified": "Połączenie z serwerem zweryfikowane", + "Set as default": "Ustaw jako domyślne", + "Set Default Model": "Ustaw domyślny model", + "Set Image Size": "Ustaw rozmiar obrazu", + "Set Steps": "Ustaw kroki", + "Set Title Auto-Generation Model": "Ustaw model automatycznego generowania tytułów", + "Set Voice": "Ustaw głos", + "Settings": "Ustawienia", + "Settings saved successfully!": "Ustawienia zapisane pomyślnie!", + "Share to OpenWebUI Community": "Dziel się z społecznością OpenWebUI", + "short-summary": "Krótkie podsumowanie", + "Show": "Pokaż", + "Show Additional Params": "Pokaż dodatkowe parametry", + "Show shortcuts": "Pokaż skróty", + "sidebar": "Panel boczny", + "Sign in": "Zaloguj się", + "Sign Out": "Wyloguj się", + "Sign up": "Zarejestruj się", + "Speech recognition error: {{error}}": "Błąd rozpoznawania mowy: {{error}}", + "Speech-to-Text Engine": "Silnik mowy na tekst", + "SpeechRecognition API is not supported in this browser.": "API Rozpoznawania Mowy nie jest obsługiwane w tej przeglądarce.", + "Stop Sequence": "Zatrzymaj sekwencję", + "STT Settings": "Ustawienia STT", + "Submit": "Zatwierdź", + "Success": "Sukces", + "Successfully updated.": "Pomyślnie zaktualizowano.", + "Sync All": "Synchronizuj wszystko", + "System": "System", + "System Prompt": "Prompt systemowy", + "Tags": "Tagi", + "Temperature": "Temperatura", + "Template": "Szablon", + "Text Completion": "Uzupełnienie tekstu", + "Text-to-Speech Engine": "Silnik tekstu na mowę", + "Tfs Z": "Tfs Z", + "Theme": "Motyw", + "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "To zapewnia, że Twoje cenne rozmowy są bezpiecznie zapisywane w bazie danych backendowej. Dziękujemy!", + "This setting does not sync across browsers or devices.": "To ustawienie nie synchronizuje się między przeglądarkami ani urządzeniami.", + "Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Porada: Aktualizuj wiele zmiennych kolejno, naciskając klawisz tabulatora w polu wprowadzania czatu po każdej zmianie.", + "Title": "Tytuł", + "Title Auto-Generation": "Automatyczne generowanie tytułu", + "Title Generation Prompt": "Prompt generowania tytułu", + "to": "do", + "To access the available model names for downloading,": "Aby uzyskać dostęp do dostępnych nazw modeli do pobrania,", + "To access the GGUF models available for downloading,": "Aby uzyskać dostęp do dostępnych modeli GGUF do pobrania,", + "to chat input.": "do pola wprowadzania czatu.", + "Toggle settings": "Przełącz ustawienia", + "Toggle sidebar": "Przełącz panel boczny", + "Top K": "Najlepsze K", + "Top P": "Najlepsze P", + "Trouble accessing Ollama?": "Problemy z dostępem do Ollama?", + "TTS Settings": "Ustawienia TTS", + "Type Hugging Face Resolve (Download) URL": "Wprowadź adres URL do pobrania z Hugging Face", + "Uh-oh! There was an issue connecting to {{provider}}.": "O nie! Wystąpił problem z połączeniem z {{provider}}.", + "Understand that updating or changing your embedding model requires reset of the vector database and re-import of all documents. You have been warned!": "Zrozum, że aktualizacja lub zmiana modelu osadzania wymaga zresetowania bazy wektorów i ponownego zaimportowania wszystkich dokumentów. Zostałeś ostrzeżony!", + "Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Nieznany typ pliku '{{file_type}}', ale akceptowany i traktowany jako zwykły tekst", + "Update": "Aktualizacja", + "Update embedding model {{embedding_model}}": "Aktualizuj modelu osadzania {{embedding_model}}", + "Update password": "Aktualizacja hasła", + "Upload a GGUF model": "Prześlij model GGUF", + "Upload files": "Prześlij pliki", + "Upload Progress": "Postęp przesyłania", + "URL Mode": "Tryb adresu URL", + "Use '#' in the prompt input to load and select your documents.": "Użyj '#' w polu wprowadzania polecenia, aby załadować i wybrać swoje dokumenty.", + "Use Gravatar": "Użyj Gravatara", + "Use Initials": "Użyj inicjałów", + "user": "użytkownik", + "User Permissions": "Uprawnienia użytkownika", + "Users": "Użytkownicy", + "Utilize": "Wykorzystaj", + "Valid time units:": "Poprawne jednostki czasu:", + "variable": "zmienna", + "variable to have them replaced with clipboard content.": "zmienna która zostanie zastąpiona zawartością schowka.", + "Version": "Wersja", + "Web": "Sieć", + "WebUI Add-ons": "Dodatki do interfejsu WebUI", + "WebUI Settings": "Ustawienia interfejsu WebUI", + "WebUI will make requests to": "Interfejs sieciowy będzie wysyłał żądania do", + "What’s New in": "Co nowego w", + "When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Kiedy historia jest wyłączona, nowe rozmowy na tej przeglądarce nie będą widoczne w historii na żadnym z twoich urządzeń.", + "Whisper (Local)": "Whisper (Lokalnie)", + "Write a prompt suggestion (e.g. Who are you?)": "Napisz sugestię do polecenia (np. Kim jesteś?)", + "Write a summary in 50 words that summarizes [topic or keyword].": "Napisz podsumowanie w 50 słowach, które podsumowuje [temat lub słowo kluczowe].", + "You": "Ty", + "You're a helpful assistant.": "Jesteś pomocnym asystentem.", + "You're now logged in.": "Jesteś teraz zalogowany." +} \ No newline at end of file From b51922809bd50d8c8db8b8ea0c72cf311950ced8 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Tue, 16 Apr 2024 14:24:15 -0500 Subject: [PATCH 43/59] Update languages.json --- src/lib/i18n/locales/languages.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/i18n/locales/languages.json b/src/lib/i18n/locales/languages.json index 560d554f..96751883 100644 --- a/src/lib/i18n/locales/languages.json +++ b/src/lib/i18n/locales/languages.json @@ -87,4 +87,4 @@ "code": "zh-TW", "title": "Chinese (Traditional)" } -] \ No newline at end of file +] From 9aea0fb03dcd85ce5a0a36a38d7eeced891e882a Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Tue, 16 Apr 2024 14:25:45 -0500 Subject: [PATCH 44/59] Update translation.json --- src/lib/i18n/locales/pl-pl/translation.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/i18n/locales/pl-pl/translation.json b/src/lib/i18n/locales/pl-pl/translation.json index e701c181..dad53a1e 100644 --- a/src/lib/i18n/locales/pl-pl/translation.json +++ b/src/lib/i18n/locales/pl-pl/translation.json @@ -195,7 +195,7 @@ "MMMM DD, YYYY": "MMMM DD, YYYY", "Model '{{modelName}}' has been successfully downloaded.": "Model '{{nazwaModelu}}' został pomyślnie pobrany.", "Model '{{modelTag}}' is already in queue for downloading.": "Model '{{nazwaModelu}}' jest już w kolejce do pobrania.", - "Model {{embedding_model}} update complete!": "Aktualizacja modelu {{embedding_model}} zakończona pomyślnie!": "", + "Model {{embedding_model}} update complete!": "Aktualizacja modelu {{embedding_model}} zakończona pomyślnie!", "Model {{embedding_model}} update failed or not required!": "Model {{embedding_model}} aktualizacja nie powiodła się lub nie jest wymagana!", "Model {{modelId}} not found": "Model {{modelId}} nie został znaleziony", "Model {{modelName}} already exists.": "Model {{modelName}} już istnieje.", From 11e0aaa32f28fd18d1e74e4170f5d82fb8850a94 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Tue, 16 Apr 2024 14:32:02 -0500 Subject: [PATCH 45/59] revert --- src/lib/i18n/locales/pl-pl/translation.json | 372 -------------------- 1 file changed, 372 deletions(-) diff --git a/src/lib/i18n/locales/pl-pl/translation.json b/src/lib/i18n/locales/pl-pl/translation.json index dad53a1e..e69de29b 100644 --- a/src/lib/i18n/locales/pl-pl/translation.json +++ b/src/lib/i18n/locales/pl-pl/translation.json @@ -1,372 +0,0 @@ -{ - "'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' lub '-1' dla bez wygaśnięcia.", - "(Beta)": "(Beta)", - "(e.g. `sh webui.sh --api`)": "(np. `sh webui.sh --api`)", - "(latest)": "(najnowszy)", - "{{modelName}} is thinking...": "{{modelName}} myśli...", - "{{webUIName}} Backend Required": "Backend {{webUIName}} wymagane", - "a user": "użytkownik", - "About": "O nas", - "Account": "Konto", - "Action": "Akcja", - "Add a model": "Dodaj model", - "Add a model tag name": "Dodaj nazwę tagu modelu", - "Add a short description about what this modelfile does": "Dodaj krótki opis tego, co robi ten plik modelu", - "Add a short title for this prompt": "Dodaj krótki tytuł tego polecenia", - "Add a tag": "Dodaj tag", - "Add Docs": "Dodaj dokumenty", - "Add Files": "Dodaj pliki", - "Add message": "Dodaj wiadomość", - "add tags": "dodaj tagi", - "Adjusting these settings will apply changes universally to all users.": "Dostosowanie tych ustawień spowoduje zastosowanie zmian uniwersalnie do wszystkich użytkowników.", - "admin": "admin", - "Admin Panel": "Panel administracyjny", - "Admin Settings": "Ustawienia administratora", - "Advanced Parameters": "Zaawansowane parametry", - "all": "wszyscy", - "All Users": "Wszyscy użytkownicy", - "Allow": "Pozwól", - "Allow Chat Deletion": "Pozwól na usuwanie czatu", - "alphanumeric characters and hyphens": "znaki alfanumeryczne i myślniki", - "Already have an account?": "Masz już konto?", - "an assistant": "asystent", - "and": "i", - "API Base URL": "Podstawowy adres URL interfejsu API", - "API Key": "Klucz API", - "API RPM": "Pakiet API RPM", - "are allowed - Activate this command by typing": "są dozwolone - Aktywuj to polecenie, wpisując", - "Are you sure?": "Jesteś pewien?", - "Audio": "Dźwięk", - "Auto-playback response": "Odtwarzanie automatyczne odpowiedzi", - "Auto-send input after 3 sec.": "Wysyłanie automatyczne po 3 sek.", - "AUTOMATIC1111 Base URL": "Podstawowy adres URL AUTOMATIC1111", - "AUTOMATIC1111 Base URL is required.": "Podstawowy adres URL AUTOMATIC1111 jest wymagany.", - "available!": "dostępny!", - "Back": "Wstecz", - "Builder Mode": "Tryb budowniczego", - "Cancel": "Anuluj", - "Categories": "Kategorie", - "Change Password": "Zmień hasło", - "Chat": "Czat", - "Chat History": "Historia czatu", - "Chat History is off for this browser.": "Historia czatu jest wyłączona dla tej przeglądarki.", - "Chats": "Czaty", - "Check Again": "Sprawdź ponownie", - "Check for updates": "Sprawdź aktualizacje", - "Checking for updates...": "Sprawdzanie aktualizacji...", - "Choose a model before saving...": "Wybierz model przed zapisaniem...", - "Chunk Overlap": "Zachodzenie bloku", - "Chunk Params": "Parametry bloku", - "Chunk Size": "Rozmiar bloku", - "Click here for help.": "Kliknij tutaj, aby uzyskać pomoc.", - "Click here to check other modelfiles.": "Kliknij tutaj, aby sprawdzić inne pliki modelowe.", - "Click here to select": "Kliknij tutaj, aby wybrać", - "Click here to select documents.": "Kliknij tutaj, aby wybrać dokumenty.", - "click here.": "kliknij tutaj.", - "Click on the user role button to change a user's role.": "Kliknij przycisk roli użytkownika, aby zmienić rolę użytkownika.", - "Close": "Zamknij", - "Collection": "Kolekcja", - "Command": "Polecenie", - "Confirm Password": "Potwierdź hasło", - "Connections": "Połączenia", - "Content": "Zawartość", - "Context Length": "Długość kontekstu", - "Conversation Mode": "Tryb rozmowy", - "Copy last code block": "Skopiuj ostatni blok kodu", - "Copy last response": "Skopiuj ostatnią odpowiedź", - "Copying to clipboard was successful!": "Kopiowanie do schowka zakończone powodzeniem!", - "Create a concise, 3-5 word phrase as a header for the following query, strictly adhering to the 3-5 word limit and avoiding the use of the word 'title':": "Utwórz zwięzłą frazę składającą się z 3-5 słów jako nagłówek dla następującego zapytania, ściśle przestrzegając limitu od 3 do 5 słów i unikając użycia słowa 'tytuł':", - "Create a modelfile": "Utwórz plik modelu", - "Create Account": "Utwórz konto", - "Created at": "Utworzono o", - "Created by": "Utworzono przez", - "Current Model": "Bieżący model", - "Current Password": "Bieżące hasło", - "Custom": "Niestandardowy", - "Customize Ollama models for a specific purpose": "Dostosuj modele Ollama do określonego celu", - "Dark": "Ciemny", - "Database": "Baza danych", - "DD/MM/YYYY HH:mm": "DD/MM/RRRR GG:MM", - "Default": "Domyślny", - "Default (Automatic1111)": "Domyślny (Automatyczny1111)", - "Default (Web API)": "Domyślny (Interfejs API)", - "Default model updated": "Domyślny model zaktualizowany", - "Default Prompt Suggestions": "Domyślne sugestie promptów", - "Default User Role": "Domyślna rola użytkownika", - "delete": "Usuń", - "Delete a model": "Usuń model", - "Delete chat": "Usuń czat", - "Delete Chats": "Usuń czaty", - "Deleted {{deleteModelTag}}": "Usunięto {{deleteModelTag}}", - "Deleted {tagName}": "Usunięto {tagName}", - "Description": "Opis", - "Notifications": "Powiadomienia", - "Disabled": "Wyłączone", - "Discover a modelfile": "Odkryj plik modelu", - "Discover a prompt": "Odkryj prompt", - "Discover, download, and explore custom prompts": "Odkryj, pobierz i eksploruj niestandardowe prompty", - "Discover, download, and explore model presets": "Odkryj, pobierz i eksploruj ustawienia modeli", - "Display the username instead of You in the Chat": "Wyświetl nazwę użytkownika zamiast Ty w czacie", - "Document": "Dokument", - "Document Settings": "Ustawienia dokumentu", - "Documents": "Dokumenty", - "does not make any external connections, and your data stays securely on your locally hosted server.": "nie nawiązuje żadnych zewnętrznych połączeń, a Twoje dane pozostają bezpiecznie na Twoim lokalnie hostowanym serwerze.", - "Don't Allow": "Nie zezwalaj", - "Don't have an account?": "Nie masz konta?", - "Download as a File": "Pobierz jako plik", - "Download Database": "Pobierz bazę danych", - "Drop any files here to add to the conversation": "Upuść pliki tutaj, aby dodać do rozmowy", - "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "np. '30s', '10m'. Poprawne jednostki czasu to 's', 'm', 'h'.", - "Edit Doc": "Edytuj dokument", - "Edit User": "Edytuj użytkownika", - "Email": "Email", - "Embedding model: {{embedding_model}}": "Osadzony model: {{embedding_model}}", - "Enable Chat History": "Włącz historię czatu", - "Enable New Sign Ups": "Włącz nowe rejestracje", - "Enabled": "Włączone", - "Enter {{role}} message here": "Wprowadź wiadomość {{role}} tutaj", - "Enter API Key": "Wprowadź klucz API", - "Enter Chunk Overlap": "Wprowadź zakchodzenie bloku", - "Enter Chunk Size": "Wprowadź rozmiar bloku", - "Enter Image Size (e.g. 512x512)": "Wprowadź rozmiar obrazu (np. 512x512)", - "Enter LiteLLM API Base URL (litellm_params.api_base)": "Wprowadź bazowy adres URL LiteLLM API (litellm_params.api_base)", - "Enter LiteLLM API Key (litellm_params.api_key)": "Wprowadź klucz API LiteLLM (litellm_params.api_key)", - "Enter LiteLLM API RPM (litellm_params.rpm)": "Wprowadź API LiteLLM RPM(litellm_params.rpm)", - "Enter LiteLLM Model (litellm_params.model)": "Wprowadź model LiteLLM (litellm_params.model)", - "Enter Max Tokens (litellm_params.max_tokens)": "Wprowadź maksymalną liczbę tokenów (litellm_params.max_tokens)", - "Enter model tag (e.g. {{modelTag}})": "Wprowadź tag modelu (np. {{modelTag}})", - "Enter Number of Steps (e.g. 50)": "Wprowadź liczbę kroków (np. 50)", - "Enter stop sequence": "Wprowadź sekwencję zatrzymania", - "Enter Top K": "Wprowadź Top K", - "Enter URL (e.g. http://127.0.0.1:7860/)": "Wprowadź adres URL (np. http://127.0.0.1:7860/)", - "Enter Your Email": "Wprowadź swój adres email", - "Enter Your Full Name": "Wprowadź swoje imię i nazwisko", - "Enter Your Password": "Wprowadź swoje hasło", - "Experimental": "Eksperymentalne", - "Export All Chats (All Users)": "Eksportuj wszystkie czaty (wszyscy użytkownicy)", - "Export Chats": "Eksportuj czaty", - "Export Documents Mapping": "Eksportuj mapowanie dokumentów", - "Export Modelfiles": "Eksportuj pliki modeli", - "Export Prompts": "Eksportuj prompty", - "Failed to read clipboard contents": "Nie udało się odczytać zawartości schowka", - "File Mode": "Tryb pliku", - "File not found.": "Plik nie został znaleziony.", - "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Wykryto podszywanie się pod odcisk palca: Nie można używać inicjałów jako awatara. Przechodzenie do domyślnego obrazu profilowego.", - "Focus chat input": "Skoncentruj na czacie", - "Format your variables using square brackets like this:": "Formatuj swoje zmienne, używając nawiasów kwadratowych, np.", - "From (Base Model)": "Z (Model Podstawowy)", - "Full Screen Mode": "Tryb pełnoekranowy", - "General": "Ogólne", - "General Settings": "Ogólne ustawienia", - "Hello, {{name}}": "Witaj, {{nazwa}}", - "Hide": "Ukryj", - "Hide Additional Params": "Ukryj dodatkowe parametry", - "How can I help you today?": "Jak mogę Ci dzisiaj pomóc?", - "Image Generation (Experimental)": "Generowanie obrazu (eksperymentalne)", - "Image Generation Engine": "Silnik generowania obrazu", - "Image Settings": "Ustawienia obrazu", - "Images": "Obrazy", - "Import Chats": "Importuj rozmowy", - "Import Documents Mapping": "Importuj mapowanie dokumentów", - "Import Modelfiles": "Importuj pliki modeli", - "Import Prompts": "Importuj prompty", - "Include `--api` flag when running stable-diffusion-webui": "Dołącz flagę `--api` podczas uruchamiania stable-diffusion-webui", - "Interface": "Interfejs", - "join our Discord for help.": "Dołącz do naszego Discorda po pomoc.", - "JSON": "JSON", - "JWT Expiration": "Wygaśnięcie JWT", - "JWT Token": "Token JWT", - "Keep Alive": "Zachowaj łączność", - "Keyboard shortcuts": "Skróty klawiszowe", - "Language": "Język", - "Light": "Jasny", - "Listening...": "Nasłuchiwanie...", - "LLMs can make mistakes. Verify important information.": "LLMy mogą popełniać błędy. Zweryfikuj ważne informacje.", - "Made by OpenWebUI Community": "Stworzone przez społeczność OpenWebUI", - "Make sure to enclose them with": "Upewnij się, że są one zamknięte w", - "Manage LiteLLM Models": "Zarządzaj modelami LiteLLM", - "Manage Models": "Zarządzaj modelami", - "Manage Ollama Models": "Zarządzaj modelami Ollama", - "Max Tokens": "Maksymalna liczba tokenów", - "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maksymalnie 3 modele można pobierać jednocześnie. Spróbuj ponownie później.", - "Mirostat": "Mirostat", - "Mirostat Eta": "Mirostat Eta", - "Mirostat Tau": "Mirostat Tau", - "MMMM DD, YYYY": "MMMM DD, YYYY", - "Model '{{modelName}}' has been successfully downloaded.": "Model '{{nazwaModelu}}' został pomyślnie pobrany.", - "Model '{{modelTag}}' is already in queue for downloading.": "Model '{{nazwaModelu}}' jest już w kolejce do pobrania.", - "Model {{embedding_model}} update complete!": "Aktualizacja modelu {{embedding_model}} zakończona pomyślnie!", - "Model {{embedding_model}} update failed or not required!": "Model {{embedding_model}} aktualizacja nie powiodła się lub nie jest wymagana!", - "Model {{modelId}} not found": "Model {{modelId}} nie został znaleziony", - "Model {{modelName}} already exists.": "Model {{modelName}} już istnieje.", - "Model filesystem path detected. Model shortname is required for update, cannot continue.": "Wykryto ścieżkę systemu plików modelu. Wymagana jest krótka nazwa modelu do aktualizacji, nie można kontynuować.", - "Model Name": "Nazwa modelu", - "Model not selected": "Model nie został wybrany", - "Model Tag Name": "Nazwa tagu modelu", - "Model Whitelisting": "Whitelisting modelu", - "Model(s) Whitelisted": "Model(e) dodane do listy białej", - "Modelfile": "Plik modelu", - "Modelfile Advanced Settings": "Zaawansowane ustawienia pliku modelu", - "Modelfile Content": "Zawartość pliku modelu", - "Modelfiles": "Pliki modeli", - "Models": "Modele", - "My Documents": "Moje dokumenty", - "My Modelfiles": "Moje pliki modeli", - "My Prompts": "Moje prompty", - "Name": "Nazwa", - "Name Tag": "Etykieta nazwy", - "Name your modelfile": "Nadaj nazwę swojemu plikowi modelu", - "New Chat": "Nowy czat", - "New Password": "Nowe hasło", - "Not sure what to add?": "Nie wiesz, co dodać?", - "Not sure what to write? Switch to": "Nie wiesz, co napisać? Przełącz się na", - "Off": "Wyłączony", - "Okay, Let's Go!": "Okej, zaczynamy!", - "Ollama Base URL": "Adres bazowy URL Ollama", - "Ollama Version": "Wersja Ollama", - "On": "Włączony", - "Only": "Tylko", - "Only alphanumeric characters and hyphens are allowed in the command string.": "W poleceniu dozwolone są tylko znaki alfanumeryczne i myślniki.", - "Oops! Hold tight! Your files are still in the processing oven. We're cooking them up to perfection. Please be patient and we'll let you know once they're ready.": "Ups! Trzymaj się! Twoje pliki są wciąż w procesie obróbki. Gotujemy je do perfekcji. Prosimy o cierpliwość, poinformujemy Cię, gdy będą gotowe.", - "Oops! Looks like the URL is invalid. Please double-check and try again.": "Ups! Wygląda na to, że URL jest nieprawidłowy. Sprawdź jeszcze raz i spróbuj ponownie.", - "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ups! Używasz nieobsługiwaniej metody (tylko interfejs front-end). Proszę obsłużyć interfejs WebUI z poziomu backendu.", - "Open": "Otwórz", - "Open AI": "Open AI", - "Open AI (Dall-E)": "Open AI (Dall-E)", - "Open new chat": "Otwórz nowy czat", - "OpenAI API": "OpenAI API", - "OpenAI API Key": "Klucz API OpenAI", - "OpenAI API Key is required.": "Klucz API OpenAI jest wymagany.", - "or": "lub", - "Parameters": "Parametry", - "Password": "Hasło", - "PDF Extract Images (OCR)": "PDF Wyodrębnij obrazy (OCR)", - "pending": "oczekujące", - "Permission denied when accessing microphone: {{error}}": "Odmowa dostępu do mikrofonu: {{error}}", - "Playground": "Plac zabaw", - "Profile": "Profil", - "Prompt Content": "Zawartość prompta", - "Prompt suggestions": "Sugestie prompta", - "Prompts": "Prompty", - "Pull a model from Ollama.com": "Pobierz model z Ollama.com", - "Pull Progress": "Postęp pobierania", - "Query Params": "Parametry zapytania", - "RAG Template": "Szablon RAG", - "Raw Format": "Format bez obróbki", - "Record voice": "Nagraj głos", - "Redirecting you to OpenWebUI Community": "Przekierowujemy Cię do społeczności OpenWebUI", - "Release Notes": "Notatki wydania", - "Repeat Last N": "Powtórz ostatnie N", - "Repeat Penalty": "Kara za powtórzenie", - "Request Mode": "Tryb żądania", - "Reset Vector Storage": "Resetuj przechowywanie wektorów", - "Response AutoCopy to Clipboard": "Automatyczne kopiowanie odpowiedzi do schowka", - "Role": "Rola", - "Rosé Pine": "Rosé Pine", - "Rosé Pine Dawn": "Rosé Pine Dawn", - "Save": "Zapisz", - "Save & Create": "Zapisz i utwórz", - "Save & Submit": "Zapisz i wyślij", - "Save & Update": "Zapisz i zaktualizuj", - "Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Bezpośrednie zapisywanie dzienników czatu w pamięci przeglądarki nie jest już obsługiwane. Prosimy o pobranie i usunięcie dzienników czatu, klikając poniższy przycisk. Nie martw się, możesz łatwo ponownie zaimportować dzienniki czatu do backendu za pomocą", - "Scan": "Skanuj", - "Scan complete!": "Skanowanie zakończone!", - "Scan for documents from {{path}}": "Skanuj dokumenty z {{path}}", - "Search": "Szukaj", - "Search Documents": "Szukaj dokumentów", - "Search Prompts": "Szukaj promptów", - "See readme.md for instructions": "Zajrzyj do readme.md po instrukcje", - "See what's new": "Zobacz co nowego", - "Seed": "Seed", - "Select a mode": "Wybierz tryb", - "Select a model": "Wybierz model", - "Select an Ollama instance": "Wybierz instancję Ollama", - "Send a Message": "Wyślij Wiadomość", - "Send message": "Wyślij wiadomość", - "Server connection verified": "Połączenie z serwerem zweryfikowane", - "Set as default": "Ustaw jako domyślne", - "Set Default Model": "Ustaw domyślny model", - "Set Image Size": "Ustaw rozmiar obrazu", - "Set Steps": "Ustaw kroki", - "Set Title Auto-Generation Model": "Ustaw model automatycznego generowania tytułów", - "Set Voice": "Ustaw głos", - "Settings": "Ustawienia", - "Settings saved successfully!": "Ustawienia zapisane pomyślnie!", - "Share to OpenWebUI Community": "Dziel się z społecznością OpenWebUI", - "short-summary": "Krótkie podsumowanie", - "Show": "Pokaż", - "Show Additional Params": "Pokaż dodatkowe parametry", - "Show shortcuts": "Pokaż skróty", - "sidebar": "Panel boczny", - "Sign in": "Zaloguj się", - "Sign Out": "Wyloguj się", - "Sign up": "Zarejestruj się", - "Speech recognition error: {{error}}": "Błąd rozpoznawania mowy: {{error}}", - "Speech-to-Text Engine": "Silnik mowy na tekst", - "SpeechRecognition API is not supported in this browser.": "API Rozpoznawania Mowy nie jest obsługiwane w tej przeglądarce.", - "Stop Sequence": "Zatrzymaj sekwencję", - "STT Settings": "Ustawienia STT", - "Submit": "Zatwierdź", - "Success": "Sukces", - "Successfully updated.": "Pomyślnie zaktualizowano.", - "Sync All": "Synchronizuj wszystko", - "System": "System", - "System Prompt": "Prompt systemowy", - "Tags": "Tagi", - "Temperature": "Temperatura", - "Template": "Szablon", - "Text Completion": "Uzupełnienie tekstu", - "Text-to-Speech Engine": "Silnik tekstu na mowę", - "Tfs Z": "Tfs Z", - "Theme": "Motyw", - "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "To zapewnia, że Twoje cenne rozmowy są bezpiecznie zapisywane w bazie danych backendowej. Dziękujemy!", - "This setting does not sync across browsers or devices.": "To ustawienie nie synchronizuje się między przeglądarkami ani urządzeniami.", - "Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Porada: Aktualizuj wiele zmiennych kolejno, naciskając klawisz tabulatora w polu wprowadzania czatu po każdej zmianie.", - "Title": "Tytuł", - "Title Auto-Generation": "Automatyczne generowanie tytułu", - "Title Generation Prompt": "Prompt generowania tytułu", - "to": "do", - "To access the available model names for downloading,": "Aby uzyskać dostęp do dostępnych nazw modeli do pobrania,", - "To access the GGUF models available for downloading,": "Aby uzyskać dostęp do dostępnych modeli GGUF do pobrania,", - "to chat input.": "do pola wprowadzania czatu.", - "Toggle settings": "Przełącz ustawienia", - "Toggle sidebar": "Przełącz panel boczny", - "Top K": "Najlepsze K", - "Top P": "Najlepsze P", - "Trouble accessing Ollama?": "Problemy z dostępem do Ollama?", - "TTS Settings": "Ustawienia TTS", - "Type Hugging Face Resolve (Download) URL": "Wprowadź adres URL do pobrania z Hugging Face", - "Uh-oh! There was an issue connecting to {{provider}}.": "O nie! Wystąpił problem z połączeniem z {{provider}}.", - "Understand that updating or changing your embedding model requires reset of the vector database and re-import of all documents. You have been warned!": "Zrozum, że aktualizacja lub zmiana modelu osadzania wymaga zresetowania bazy wektorów i ponownego zaimportowania wszystkich dokumentów. Zostałeś ostrzeżony!", - "Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Nieznany typ pliku '{{file_type}}', ale akceptowany i traktowany jako zwykły tekst", - "Update": "Aktualizacja", - "Update embedding model {{embedding_model}}": "Aktualizuj modelu osadzania {{embedding_model}}", - "Update password": "Aktualizacja hasła", - "Upload a GGUF model": "Prześlij model GGUF", - "Upload files": "Prześlij pliki", - "Upload Progress": "Postęp przesyłania", - "URL Mode": "Tryb adresu URL", - "Use '#' in the prompt input to load and select your documents.": "Użyj '#' w polu wprowadzania polecenia, aby załadować i wybrać swoje dokumenty.", - "Use Gravatar": "Użyj Gravatara", - "Use Initials": "Użyj inicjałów", - "user": "użytkownik", - "User Permissions": "Uprawnienia użytkownika", - "Users": "Użytkownicy", - "Utilize": "Wykorzystaj", - "Valid time units:": "Poprawne jednostki czasu:", - "variable": "zmienna", - "variable to have them replaced with clipboard content.": "zmienna która zostanie zastąpiona zawartością schowka.", - "Version": "Wersja", - "Web": "Sieć", - "WebUI Add-ons": "Dodatki do interfejsu WebUI", - "WebUI Settings": "Ustawienia interfejsu WebUI", - "WebUI will make requests to": "Interfejs sieciowy będzie wysyłał żądania do", - "What’s New in": "Co nowego w", - "When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Kiedy historia jest wyłączona, nowe rozmowy na tej przeglądarce nie będą widoczne w historii na żadnym z twoich urządzeń.", - "Whisper (Local)": "Whisper (Lokalnie)", - "Write a prompt suggestion (e.g. Who are you?)": "Napisz sugestię do polecenia (np. Kim jesteś?)", - "Write a summary in 50 words that summarizes [topic or keyword].": "Napisz podsumowanie w 50 słowach, które podsumowuje [temat lub słowo kluczowe].", - "You": "Ty", - "You're a helpful assistant.": "Jesteś pomocnym asystentem.", - "You're now logged in.": "Jesteś teraz zalogowany." -} \ No newline at end of file From 9dbd223b4e9d8eb1aff9eb35d79a61318326db4e Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Tue, 16 Apr 2024 14:32:27 -0500 Subject: [PATCH 46/59] fix: formatting --- src/lib/i18n/locales/pl-pl/translation.json | 372 ++++++++++++++++++++ 1 file changed, 372 insertions(+) diff --git a/src/lib/i18n/locales/pl-pl/translation.json b/src/lib/i18n/locales/pl-pl/translation.json index e69de29b..d9865377 100644 --- a/src/lib/i18n/locales/pl-pl/translation.json +++ b/src/lib/i18n/locales/pl-pl/translation.json @@ -0,0 +1,372 @@ +{ + "'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' lub '-1' dla bez wygaśnięcia.", + "(Beta)": "(Beta)", + "(e.g. `sh webui.sh --api`)": "(np. `sh webui.sh --api`)", + "(latest)": "(najnowszy)", + "{{modelName}} is thinking...": "{{modelName}} myśli...", + "{{webUIName}} Backend Required": "Backend {{webUIName}} wymagane", + "a user": "użytkownik", + "About": "O nas", + "Account": "Konto", + "Action": "Akcja", + "Add a model": "Dodaj model", + "Add a model tag name": "Dodaj nazwę tagu modelu", + "Add a short description about what this modelfile does": "Dodaj krótki opis tego, co robi ten plik modelu", + "Add a short title for this prompt": "Dodaj krótki tytuł tego polecenia", + "Add a tag": "Dodaj tag", + "Add Docs": "Dodaj dokumenty", + "Add Files": "Dodaj pliki", + "Add message": "Dodaj wiadomość", + "add tags": "dodaj tagi", + "Adjusting these settings will apply changes universally to all users.": "Dostosowanie tych ustawień spowoduje zastosowanie zmian uniwersalnie do wszystkich użytkowników.", + "admin": "admin", + "Admin Panel": "Panel administracyjny", + "Admin Settings": "Ustawienia administratora", + "Advanced Parameters": "Zaawansowane parametry", + "all": "wszyscy", + "All Users": "Wszyscy użytkownicy", + "Allow": "Pozwól", + "Allow Chat Deletion": "Pozwól na usuwanie czatu", + "alphanumeric characters and hyphens": "znaki alfanumeryczne i myślniki", + "Already have an account?": "Masz już konto?", + "an assistant": "asystent", + "and": "i", + "API Base URL": "Podstawowy adres URL interfejsu API", + "API Key": "Klucz API", + "API RPM": "Pakiet API RPM", + "are allowed - Activate this command by typing": "są dozwolone - Aktywuj to polecenie, wpisując", + "Are you sure?": "Jesteś pewien?", + "Audio": "Dźwięk", + "Auto-playback response": "Odtwarzanie automatyczne odpowiedzi", + "Auto-send input after 3 sec.": "Wysyłanie automatyczne po 3 sek.", + "AUTOMATIC1111 Base URL": "Podstawowy adres URL AUTOMATIC1111", + "AUTOMATIC1111 Base URL is required.": "Podstawowy adres URL AUTOMATIC1111 jest wymagany.", + "available!": "dostępny!", + "Back": "Wstecz", + "Builder Mode": "Tryb budowniczego", + "Cancel": "Anuluj", + "Categories": "Kategorie", + "Change Password": "Zmień hasło", + "Chat": "Czat", + "Chat History": "Historia czatu", + "Chat History is off for this browser.": "Historia czatu jest wyłączona dla tej przeglądarki.", + "Chats": "Czaty", + "Check Again": "Sprawdź ponownie", + "Check for updates": "Sprawdź aktualizacje", + "Checking for updates...": "Sprawdzanie aktualizacji...", + "Choose a model before saving...": "Wybierz model przed zapisaniem...", + "Chunk Overlap": "Zachodzenie bloku", + "Chunk Params": "Parametry bloku", + "Chunk Size": "Rozmiar bloku", + "Click here for help.": "Kliknij tutaj, aby uzyskać pomoc.", + "Click here to check other modelfiles.": "Kliknij tutaj, aby sprawdzić inne pliki modelowe.", + "Click here to select": "Kliknij tutaj, aby wybrać", + "Click here to select documents.": "Kliknij tutaj, aby wybrać dokumenty.", + "click here.": "kliknij tutaj.", + "Click on the user role button to change a user's role.": "Kliknij przycisk roli użytkownika, aby zmienić rolę użytkownika.", + "Close": "Zamknij", + "Collection": "Kolekcja", + "Command": "Polecenie", + "Confirm Password": "Potwierdź hasło", + "Connections": "Połączenia", + "Content": "Zawartość", + "Context Length": "Długość kontekstu", + "Conversation Mode": "Tryb rozmowy", + "Copy last code block": "Skopiuj ostatni blok kodu", + "Copy last response": "Skopiuj ostatnią odpowiedź", + "Copying to clipboard was successful!": "Kopiowanie do schowka zakończone powodzeniem!", + "Create a concise, 3-5 word phrase as a header for the following query, strictly adhering to the 3-5 word limit and avoiding the use of the word 'title':": "Utwórz zwięzłą frazę składającą się z 3-5 słów jako nagłówek dla następującego zapytania, ściśle przestrzegając limitu od 3 do 5 słów i unikając użycia słowa 'tytuł':", + "Create a modelfile": "Utwórz plik modelu", + "Create Account": "Utwórz konto", + "Created at": "Utworzono o", + "Created by": "Utworzono przez", + "Current Model": "Bieżący model", + "Current Password": "Bieżące hasło", + "Custom": "Niestandardowy", + "Customize Ollama models for a specific purpose": "Dostosuj modele Ollama do określonego celu", + "Dark": "Ciemny", + "Database": "Baza danych", + "DD/MM/YYYY HH:mm": "DD/MM/RRRR GG:MM", + "Default": "Domyślny", + "Default (Automatic1111)": "Domyślny (Automatyczny1111)", + "Default (Web API)": "Domyślny (Interfejs API)", + "Default model updated": "Domyślny model zaktualizowany", + "Default Prompt Suggestions": "Domyślne sugestie promptów", + "Default User Role": "Domyślna rola użytkownika", + "delete": "Usuń", + "Delete a model": "Usuń model", + "Delete chat": "Usuń czat", + "Delete Chats": "Usuń czaty", + "Deleted {{deleteModelTag}}": "Usunięto {{deleteModelTag}}", + "Deleted {tagName}": "Usunięto {tagName}", + "Description": "Opis", + "Notifications": "Powiadomienia", + "Disabled": "Wyłączone", + "Discover a modelfile": "Odkryj plik modelu", + "Discover a prompt": "Odkryj prompt", + "Discover, download, and explore custom prompts": "Odkryj, pobierz i eksploruj niestandardowe prompty", + "Discover, download, and explore model presets": "Odkryj, pobierz i eksploruj ustawienia modeli", + "Display the username instead of You in the Chat": "Wyświetl nazwę użytkownika zamiast Ty w czacie", + "Document": "Dokument", + "Document Settings": "Ustawienia dokumentu", + "Documents": "Dokumenty", + "does not make any external connections, and your data stays securely on your locally hosted server.": "nie nawiązuje żadnych zewnętrznych połączeń, a Twoje dane pozostają bezpiecznie na Twoim lokalnie hostowanym serwerze.", + "Don't Allow": "Nie zezwalaj", + "Don't have an account?": "Nie masz konta?", + "Download as a File": "Pobierz jako plik", + "Download Database": "Pobierz bazę danych", + "Drop any files here to add to the conversation": "Upuść pliki tutaj, aby dodać do rozmowy", + "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "np. '30s', '10m'. Poprawne jednostki czasu to 's', 'm', 'h'.", + "Edit Doc": "Edytuj dokument", + "Edit User": "Edytuj użytkownika", + "Email": "Email", + "Embedding model: {{embedding_model}}": "Osadzony model: {{embedding_model}}", + "Enable Chat History": "Włącz historię czatu", + "Enable New Sign Ups": "Włącz nowe rejestracje", + "Enabled": "Włączone", + "Enter {{role}} message here": "Wprowadź wiadomość {{role}} tutaj", + "Enter API Key": "Wprowadź klucz API", + "Enter Chunk Overlap": "Wprowadź zakchodzenie bloku", + "Enter Chunk Size": "Wprowadź rozmiar bloku", + "Enter Image Size (e.g. 512x512)": "Wprowadź rozmiar obrazu (np. 512x512)", + "Enter LiteLLM API Base URL (litellm_params.api_base)": "Wprowadź bazowy adres URL LiteLLM API (litellm_params.api_base)", + "Enter LiteLLM API Key (litellm_params.api_key)": "Wprowadź klucz API LiteLLM (litellm_params.api_key)", + "Enter LiteLLM API RPM (litellm_params.rpm)": "Wprowadź API LiteLLM RPM(litellm_params.rpm)", + "Enter LiteLLM Model (litellm_params.model)": "Wprowadź model LiteLLM (litellm_params.model)", + "Enter Max Tokens (litellm_params.max_tokens)": "Wprowadź maksymalną liczbę tokenów (litellm_params.max_tokens)", + "Enter model tag (e.g. {{modelTag}})": "Wprowadź tag modelu (np. {{modelTag}})", + "Enter Number of Steps (e.g. 50)": "Wprowadź liczbę kroków (np. 50)", + "Enter stop sequence": "Wprowadź sekwencję zatrzymania", + "Enter Top K": "Wprowadź Top K", + "Enter URL (e.g. http://127.0.0.1:7860/)": "Wprowadź adres URL (np. http://127.0.0.1:7860/)", + "Enter Your Email": "Wprowadź swój adres email", + "Enter Your Full Name": "Wprowadź swoje imię i nazwisko", + "Enter Your Password": "Wprowadź swoje hasło", + "Experimental": "Eksperymentalne", + "Export All Chats (All Users)": "Eksportuj wszystkie czaty (wszyscy użytkownicy)", + "Export Chats": "Eksportuj czaty", + "Export Documents Mapping": "Eksportuj mapowanie dokumentów", + "Export Modelfiles": "Eksportuj pliki modeli", + "Export Prompts": "Eksportuj prompty", + "Failed to read clipboard contents": "Nie udało się odczytać zawartości schowka", + "File Mode": "Tryb pliku", + "File not found.": "Plik nie został znaleziony.", + "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Wykryto podszywanie się pod odcisk palca: Nie można używać inicjałów jako awatara. Przechodzenie do domyślnego obrazu profilowego.", + "Focus chat input": "Skoncentruj na czacie", + "Format your variables using square brackets like this:": "Formatuj swoje zmienne, używając nawiasów kwadratowych, np.", + "From (Base Model)": "Z (Model Podstawowy)", + "Full Screen Mode": "Tryb pełnoekranowy", + "General": "Ogólne", + "General Settings": "Ogólne ustawienia", + "Hello, {{name}}": "Witaj, {{nazwa}}", + "Hide": "Ukryj", + "Hide Additional Params": "Ukryj dodatkowe parametry", + "How can I help you today?": "Jak mogę Ci dzisiaj pomóc?", + "Image Generation (Experimental)": "Generowanie obrazu (eksperymentalne)", + "Image Generation Engine": "Silnik generowania obrazu", + "Image Settings": "Ustawienia obrazu", + "Images": "Obrazy", + "Import Chats": "Importuj rozmowy", + "Import Documents Mapping": "Importuj mapowanie dokumentów", + "Import Modelfiles": "Importuj pliki modeli", + "Import Prompts": "Importuj prompty", + "Include `--api` flag when running stable-diffusion-webui": "Dołącz flagę `--api` podczas uruchamiania stable-diffusion-webui", + "Interface": "Interfejs", + "join our Discord for help.": "Dołącz do naszego Discorda po pomoc.", + "JSON": "JSON", + "JWT Expiration": "Wygaśnięcie JWT", + "JWT Token": "Token JWT", + "Keep Alive": "Zachowaj łączność", + "Keyboard shortcuts": "Skróty klawiszowe", + "Language": "Język", + "Light": "Jasny", + "Listening...": "Nasłuchiwanie...", + "LLMs can make mistakes. Verify important information.": "LLMy mogą popełniać błędy. Zweryfikuj ważne informacje.", + "Made by OpenWebUI Community": "Stworzone przez społeczność OpenWebUI", + "Make sure to enclose them with": "Upewnij się, że są one zamknięte w", + "Manage LiteLLM Models": "Zarządzaj modelami LiteLLM", + "Manage Models": "Zarządzaj modelami", + "Manage Ollama Models": "Zarządzaj modelami Ollama", + "Max Tokens": "Maksymalna liczba tokenów", + "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maksymalnie 3 modele można pobierać jednocześnie. Spróbuj ponownie później.", + "Mirostat": "Mirostat", + "Mirostat Eta": "Mirostat Eta", + "Mirostat Tau": "Mirostat Tau", + "MMMM DD, YYYY": "MMMM DD, YYYY", + "Model '{{modelName}}' has been successfully downloaded.": "Model '{{nazwaModelu}}' został pomyślnie pobrany.", + "Model '{{modelTag}}' is already in queue for downloading.": "Model '{{nazwaModelu}}' jest już w kolejce do pobrania.", + "Model {{embedding_model}} update complete!": "Aktualizacja modelu {{embedding_model}} zakończona pomyślnie!", + "Model {{embedding_model}} update failed or not required!": "Model {{embedding_model}} aktualizacja nie powiodła się lub nie jest wymagana!", + "Model {{modelId}} not found": "Model {{modelId}} nie został znaleziony", + "Model {{modelName}} already exists.": "Model {{modelName}} już istnieje.", + "Model filesystem path detected. Model shortname is required for update, cannot continue.": "Wykryto ścieżkę systemu plików modelu. Wymagana jest krótka nazwa modelu do aktualizacji, nie można kontynuować.", + "Model Name": "Nazwa modelu", + "Model not selected": "Model nie został wybrany", + "Model Tag Name": "Nazwa tagu modelu", + "Model Whitelisting": "Whitelisting modelu", + "Model(s) Whitelisted": "Model(e) dodane do listy białej", + "Modelfile": "Plik modelu", + "Modelfile Advanced Settings": "Zaawansowane ustawienia pliku modelu", + "Modelfile Content": "Zawartość pliku modelu", + "Modelfiles": "Pliki modeli", + "Models": "Modele", + "My Documents": "Moje dokumenty", + "My Modelfiles": "Moje pliki modeli", + "My Prompts": "Moje prompty", + "Name": "Nazwa", + "Name Tag": "Etykieta nazwy", + "Name your modelfile": "Nadaj nazwę swojemu plikowi modelu", + "New Chat": "Nowy czat", + "New Password": "Nowe hasło", + "Not sure what to add?": "Nie wiesz, co dodać?", + "Not sure what to write? Switch to": "Nie wiesz, co napisać? Przełącz się na", + "Off": "Wyłączony", + "Okay, Let's Go!": "Okej, zaczynamy!", + "Ollama Base URL": "Adres bazowy URL Ollama", + "Ollama Version": "Wersja Ollama", + "On": "Włączony", + "Only": "Tylko", + "Only alphanumeric characters and hyphens are allowed in the command string.": "W poleceniu dozwolone są tylko znaki alfanumeryczne i myślniki.", + "Oops! Hold tight! Your files are still in the processing oven. We're cooking them up to perfection. Please be patient and we'll let you know once they're ready.": "Ups! Trzymaj się! Twoje pliki są wciąż w procesie obróbki. Gotujemy je do perfekcji. Prosimy o cierpliwość, poinformujemy Cię, gdy będą gotowe.", + "Oops! Looks like the URL is invalid. Please double-check and try again.": "Ups! Wygląda na to, że URL jest nieprawidłowy. Sprawdź jeszcze raz i spróbuj ponownie.", + "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ups! Używasz nieobsługiwaniej metody (tylko interfejs front-end). Proszę obsłużyć interfejs WebUI z poziomu backendu.", + "Open": "Otwórz", + "Open AI": "Open AI", + "Open AI (Dall-E)": "Open AI (Dall-E)", + "Open new chat": "Otwórz nowy czat", + "OpenAI API": "OpenAI API", + "OpenAI API Key": "Klucz API OpenAI", + "OpenAI API Key is required.": "Klucz API OpenAI jest wymagany.", + "or": "lub", + "Parameters": "Parametry", + "Password": "Hasło", + "PDF Extract Images (OCR)": "PDF Wyodrębnij obrazy (OCR)", + "pending": "oczekujące", + "Permission denied when accessing microphone: {{error}}": "Odmowa dostępu do mikrofonu: {{error}}", + "Playground": "Plac zabaw", + "Profile": "Profil", + "Prompt Content": "Zawartość prompta", + "Prompt suggestions": "Sugestie prompta", + "Prompts": "Prompty", + "Pull a model from Ollama.com": "Pobierz model z Ollama.com", + "Pull Progress": "Postęp pobierania", + "Query Params": "Parametry zapytania", + "RAG Template": "Szablon RAG", + "Raw Format": "Format bez obróbki", + "Record voice": "Nagraj głos", + "Redirecting you to OpenWebUI Community": "Przekierowujemy Cię do społeczności OpenWebUI", + "Release Notes": "Notatki wydania", + "Repeat Last N": "Powtórz ostatnie N", + "Repeat Penalty": "Kara za powtórzenie", + "Request Mode": "Tryb żądania", + "Reset Vector Storage": "Resetuj przechowywanie wektorów", + "Response AutoCopy to Clipboard": "Automatyczne kopiowanie odpowiedzi do schowka", + "Role": "Rola", + "Rosé Pine": "Rosé Pine", + "Rosé Pine Dawn": "Rosé Pine Dawn", + "Save": "Zapisz", + "Save & Create": "Zapisz i utwórz", + "Save & Submit": "Zapisz i wyślij", + "Save & Update": "Zapisz i zaktualizuj", + "Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Bezpośrednie zapisywanie dzienników czatu w pamięci przeglądarki nie jest już obsługiwane. Prosimy o pobranie i usunięcie dzienników czatu, klikając poniższy przycisk. Nie martw się, możesz łatwo ponownie zaimportować dzienniki czatu do backendu za pomocą", + "Scan": "Skanuj", + "Scan complete!": "Skanowanie zakończone!", + "Scan for documents from {{path}}": "Skanuj dokumenty z {{path}}", + "Search": "Szukaj", + "Search Documents": "Szukaj dokumentów", + "Search Prompts": "Szukaj promptów", + "See readme.md for instructions": "Zajrzyj do readme.md po instrukcje", + "See what's new": "Zobacz co nowego", + "Seed": "Seed", + "Select a mode": "Wybierz tryb", + "Select a model": "Wybierz model", + "Select an Ollama instance": "Wybierz instancję Ollama", + "Send a Message": "Wyślij Wiadomość", + "Send message": "Wyślij wiadomość", + "Server connection verified": "Połączenie z serwerem zweryfikowane", + "Set as default": "Ustaw jako domyślne", + "Set Default Model": "Ustaw domyślny model", + "Set Image Size": "Ustaw rozmiar obrazu", + "Set Steps": "Ustaw kroki", + "Set Title Auto-Generation Model": "Ustaw model automatycznego generowania tytułów", + "Set Voice": "Ustaw głos", + "Settings": "Ustawienia", + "Settings saved successfully!": "Ustawienia zapisane pomyślnie!", + "Share to OpenWebUI Community": "Dziel się z społecznością OpenWebUI", + "short-summary": "Krótkie podsumowanie", + "Show": "Pokaż", + "Show Additional Params": "Pokaż dodatkowe parametry", + "Show shortcuts": "Pokaż skróty", + "sidebar": "Panel boczny", + "Sign in": "Zaloguj się", + "Sign Out": "Wyloguj się", + "Sign up": "Zarejestruj się", + "Speech recognition error: {{error}}": "Błąd rozpoznawania mowy: {{error}}", + "Speech-to-Text Engine": "Silnik mowy na tekst", + "SpeechRecognition API is not supported in this browser.": "API Rozpoznawania Mowy nie jest obsługiwane w tej przeglądarce.", + "Stop Sequence": "Zatrzymaj sekwencję", + "STT Settings": "Ustawienia STT", + "Submit": "Zatwierdź", + "Success": "Sukces", + "Successfully updated.": "Pomyślnie zaktualizowano.", + "Sync All": "Synchronizuj wszystko", + "System": "System", + "System Prompt": "Prompt systemowy", + "Tags": "Tagi", + "Temperature": "Temperatura", + "Template": "Szablon", + "Text Completion": "Uzupełnienie tekstu", + "Text-to-Speech Engine": "Silnik tekstu na mowę", + "Tfs Z": "Tfs Z", + "Theme": "Motyw", + "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "To zapewnia, że Twoje cenne rozmowy są bezpiecznie zapisywane w bazie danych backendowej. Dziękujemy!", + "This setting does not sync across browsers or devices.": "To ustawienie nie synchronizuje się między przeglądarkami ani urządzeniami.", + "Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Porada: Aktualizuj wiele zmiennych kolejno, naciskając klawisz tabulatora w polu wprowadzania czatu po każdej zmianie.", + "Title": "Tytuł", + "Title Auto-Generation": "Automatyczne generowanie tytułu", + "Title Generation Prompt": "Prompt generowania tytułu", + "to": "do", + "To access the available model names for downloading,": "Aby uzyskać dostęp do dostępnych nazw modeli do pobrania,", + "To access the GGUF models available for downloading,": "Aby uzyskać dostęp do dostępnych modeli GGUF do pobrania,", + "to chat input.": "do pola wprowadzania czatu.", + "Toggle settings": "Przełącz ustawienia", + "Toggle sidebar": "Przełącz panel boczny", + "Top K": "Najlepsze K", + "Top P": "Najlepsze P", + "Trouble accessing Ollama?": "Problemy z dostępem do Ollama?", + "TTS Settings": "Ustawienia TTS", + "Type Hugging Face Resolve (Download) URL": "Wprowadź adres URL do pobrania z Hugging Face", + "Uh-oh! There was an issue connecting to {{provider}}.": "O nie! Wystąpił problem z połączeniem z {{provider}}.", + "Understand that updating or changing your embedding model requires reset of the vector database and re-import of all documents. You have been warned!": "Zrozum, że aktualizacja lub zmiana modelu osadzania wymaga zresetowania bazy wektorów i ponownego zaimportowania wszystkich dokumentów. Zostałeś ostrzeżony!", + "Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Nieznany typ pliku '{{file_type}}', ale akceptowany i traktowany jako zwykły tekst", + "Update": "Aktualizacja", + "Update embedding model {{embedding_model}}": "Aktualizuj modelu osadzania {{embedding_model}}", + "Update password": "Aktualizacja hasła", + "Upload a GGUF model": "Prześlij model GGUF", + "Upload files": "Prześlij pliki", + "Upload Progress": "Postęp przesyłania", + "URL Mode": "Tryb adresu URL", + "Use '#' in the prompt input to load and select your documents.": "Użyj '#' w polu wprowadzania polecenia, aby załadować i wybrać swoje dokumenty.", + "Use Gravatar": "Użyj Gravatara", + "Use Initials": "Użyj inicjałów", + "user": "użytkownik", + "User Permissions": "Uprawnienia użytkownika", + "Users": "Użytkownicy", + "Utilize": "Wykorzystaj", + "Valid time units:": "Poprawne jednostki czasu:", + "variable": "zmienna", + "variable to have them replaced with clipboard content.": "zmienna która zostanie zastąpiona zawartością schowka.", + "Version": "Wersja", + "Web": "Sieć", + "WebUI Add-ons": "Dodatki do interfejsu WebUI", + "WebUI Settings": "Ustawienia interfejsu WebUI", + "WebUI will make requests to": "Interfejs sieciowy będzie wysyłał żądania do", + "What’s New in": "Co nowego w", + "When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Kiedy historia jest wyłączona, nowe rozmowy na tej przeglądarce nie będą widoczne w historii na żadnym z twoich urządzeń.", + "Whisper (Local)": "Whisper (Lokalnie)", + "Write a prompt suggestion (e.g. Who are you?)": "Napisz sugestię do polecenia (np. Kim jesteś?)", + "Write a summary in 50 words that summarizes [topic or keyword].": "Napisz podsumowanie w 50 słowach, które podsumowuje [temat lub słowo kluczowe].", + "You": "Ty", + "You're a helpful assistant.": "Jesteś pomocnym asystentem.", + "You're now logged in.": "Jesteś teraz zalogowany." +} From 6699f0c3391cef09e57d506901a3ca1019fa0c8b Mon Sep 17 00:00:00 2001 From: Ismael Date: Tue, 16 Apr 2024 15:59:33 -0400 Subject: [PATCH 47/59] small fixes to the spanish translation --- src/lib/i18n/locales/es-ES/translation.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index 9e06d699..ff045448 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -63,7 +63,7 @@ "Click here to select": "Presiona aquí para seleccionar", "Click here to select documents.": "Presiona aquí para seleccionar documentos", "click here.": "Presiona aquí.", - "Click on the user role button to change a user's role.": "Presiona en el botón de roles del usuario para cambiar el rol de un usuario.", + "Click on the user role button to change a user's role.": "Presiona en el botón de roles del usuario para cambiar su rol.", "Close": "Cerrar", "Collection": "Colección", "Command": "Comando", @@ -122,7 +122,7 @@ "Email": "Email", "Enable Chat History": "Activa el Historial de Chat", "Enable New Sign Ups": "Habilitar Nuevos Registros", - "Enabled": "Habilitado", + "Enabled": "Activado", "Enter {{role}} message here": "Introduzca el mensaje {{role}} aquí", "Enter API Key": "Ingrese la clave API", "Enter Chunk Overlap": "Ingresar superposición de fragmentos", @@ -145,7 +145,7 @@ "Export All Chats (All Users)": "Exportar todos los chats (Todos los usuarios)", "Export Chats": "Exportar Chats", "Export Documents Mapping": "Exportar el mapeo de documentos", - "Export Modelfiles": "Exportal Modelfiles", + "Export Modelfiles": "Exportar Modelfiles", "Export Prompts": "Exportar Prompts", "Failed to read clipboard contents": "No se pudo leer el contenido del portapapeles", "File Mode": "Modo de archivo", @@ -215,11 +215,11 @@ "New Password": "Nueva Contraseña", "Not sure what to add?": "¿No estás seguro de qué añadir?", "Not sure what to write? Switch to": "¿No estás seguro de qué escribir? Cambia a", - "Off": "Apagado", + "Off": "Desactivado", "Okay, Let's Go!": "Okay, Let's Go!", "Ollama Base URL": "URL base de Ollama", "Ollama Version": "Version de Ollama", - "On": "Encendido", + "On": "Activado", "Only": "Solamente", "Only alphanumeric characters and hyphens are allowed in the command string.": "Sólo se permiten caracteres alfanuméricos y guiones en la cadena de comando.", "Oops! Hold tight! Your files are still in the processing oven. We're cooking them up to perfection. Please be patient and we'll let you know once they're ready.": "¡Ups! ¡Agárrate fuerte! Tus archivos todavía están en el horno de procesamiento. Los estamos cocinando a la perfección. Tenga paciencia y le avisaremos una vez que estén listos.", @@ -243,7 +243,7 @@ "Prompt Content": "Contenido del Prompt", "Prompt suggestions": "Sugerencias de Prompts", "Prompts": "Prompts", - "Pull a model from Ollama.com": "Extraer un modelo de Ollama.com", + "Pull a model from Ollama.com": "Halar un modelo de Ollama.com", "Pull Progress": "Progreso de extracción", "Query Params": "Parámetros de consulta", "RAG Template": "Plantilla de RAG", @@ -256,7 +256,7 @@ "Request Mode": "Modo de petición", "Reset Vector Storage": "Restablecer almacenamiento vectorial", "Response AutoCopy to Clipboard": "Copiar respuesta automáticamente al portapapeles", - "Role": "personalizados", + "Role": "Rol", "Rosé Pine": "Rosé Pine", "Rosé Pine Dawn": "Rosé Pine Dawn", "Save": "Guardar", @@ -347,7 +347,7 @@ "Valid time units:": "Unidades válidas de tiempo:", "variable": "variable", "variable to have them replaced with clipboard content.": "variable para reemplazarlos con el contenido del portapapeles.", - "Version": "Version", + "Version": "Versión", "Web": "Web", "WebUI Add-ons": "WebUI Add-ons", "WebUI Settings": "Configuración del WebUI", From 3ed509c5d338954ca274a1d6f352f98186e3a32f Mon Sep 17 00:00:00 2001 From: Ismael Date: Tue, 16 Apr 2024 16:15:23 -0400 Subject: [PATCH 48/59] added new strings from English to be translated to Spanish --- src/lib/i18n/locales/es-ES/translation.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index ff045448..b6a3bfd4 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -120,6 +120,7 @@ "Edit Doc": "Editar Documento", "Edit User": "Editar Usuario", "Email": "Email", + "Embedding model: {{embedding_model}}": "", "Enable Chat History": "Activa el Historial de Chat", "Enable New Sign Ups": "Habilitar Nuevos Registros", "Enabled": "Activado", @@ -150,6 +151,7 @@ "Failed to read clipboard contents": "No se pudo leer el contenido del portapapeles", "File Mode": "Modo de archivo", "File not found.": "Archivo no encontrado.", + "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "", "Focus chat input": "Enfoca la entrada del chat", "Format your variables using square brackets like this:": "Formatee sus variables usando corchetes así:", "From (Base Model)": "Desde (Modelo Base)", @@ -193,8 +195,11 @@ "MMMM DD, YYYY": "MMMM DD, YYYY", "Model '{{modelName}}' has been successfully downloaded.": "El modelo '{{modelName}}' se ha descargado correctamente.", "Model '{{modelTag}}' is already in queue for downloading.": "El modelo '{{modelTag}}' ya está en cola para descargar.", + "Model {{embedding_model}} update complete!": "", + "Model {{embedding_model}} update failed or not required!": "", "Model {{modelId}} not found": "El modelo {{modelId}} no fue encontrado", "Model {{modelName}} already exists.": "El modelo {{modelName}} ya existe.", + "Model filesystem path detected. Model shortname is required for update, cannot continue.": "", "Model Name": "Nombre del modelo", "Model not selected": "Modelo no seleccionado", "Model Tag Name": "Nombre de la etiqueta del modelo", @@ -332,7 +337,10 @@ "TTS Settings": "Configuración de TTS", "Type Hugging Face Resolve (Download) URL": "Type Hugging Face Resolve (Download) URL", "Uh-oh! There was an issue connecting to {{provider}}.": "¡UH oh! Hubo un problema al conectarse a {{provider}}.", + "Understand that updating or changing your embedding model requires reset of the vector database and re-import of all documents. You have been warned!": "", "Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Tipo de archivo desconocido '{{file_type}}', pero se acepta y se trata como texto sin formato", + "Update": "", + "Update embedding model {{embedding_model}}": "", "Update password": "Actualiza contraseña", "Upload a GGUF model": "Sube un modelo GGUF", "Upload files": "Subir archivos", @@ -340,6 +348,7 @@ "URL Mode": "Modo de URL", "Use '#' in the prompt input to load and select your documents.": "Utilice '#' en el prompt para cargar y seleccionar sus documentos.", "Use Gravatar": "Usar Gravatar", + "Use Initials": "", "user": "usuario", "User Permissions": "Permisos de usuario", "Users": "Usuarios", From b35316177bfbb3dde5c65493299812013ac8d658 Mon Sep 17 00:00:00 2001 From: Ismael Date: Tue, 16 Apr 2024 16:24:27 -0400 Subject: [PATCH 49/59] translation, into Spanish, of imported strings from English --- src/lib/i18n/locales/es-ES/translation.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index b6a3bfd4..b5db0678 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -120,7 +120,7 @@ "Edit Doc": "Editar Documento", "Edit User": "Editar Usuario", "Email": "Email", - "Embedding model: {{embedding_model}}": "", + "Embedding model: {{embedding_model}}": "Modelo de Embedding: {{embedding_model}}", "Enable Chat History": "Activa el Historial de Chat", "Enable New Sign Ups": "Habilitar Nuevos Registros", "Enabled": "Activado", @@ -151,7 +151,7 @@ "Failed to read clipboard contents": "No se pudo leer el contenido del portapapeles", "File Mode": "Modo de archivo", "File not found.": "Archivo no encontrado.", - "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "", + "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Se detectó suplantación de huellas: No se pueden usar las iniciales como avatar. Por defecto se utiliza la imagen de perfil predeterminada.", "Focus chat input": "Enfoca la entrada del chat", "Format your variables using square brackets like this:": "Formatee sus variables usando corchetes así:", "From (Base Model)": "Desde (Modelo Base)", @@ -195,11 +195,11 @@ "MMMM DD, YYYY": "MMMM DD, YYYY", "Model '{{modelName}}' has been successfully downloaded.": "El modelo '{{modelName}}' se ha descargado correctamente.", "Model '{{modelTag}}' is already in queue for downloading.": "El modelo '{{modelTag}}' ya está en cola para descargar.", - "Model {{embedding_model}} update complete!": "", - "Model {{embedding_model}} update failed or not required!": "", + "Model {{embedding_model}} update complete!": "¡La actualizacón del modelo {{embedding_model}} fué completada!", + "Model {{embedding_model}} update failed or not required!": "¡La actualización del modelo {{embedding_model}} falló o no es requerida!", "Model {{modelId}} not found": "El modelo {{modelId}} no fue encontrado", "Model {{modelName}} already exists.": "El modelo {{modelName}} ya existe.", - "Model filesystem path detected. Model shortname is required for update, cannot continue.": "", + "Model filesystem path detected. Model shortname is required for update, cannot continue.": "Se detectó la ruta del sistema de archivos del modelo. Se requiere el nombre corto del modelo para la actualización, no se puede continuar.", "Model Name": "Nombre del modelo", "Model not selected": "Modelo no seleccionado", "Model Tag Name": "Nombre de la etiqueta del modelo", @@ -232,7 +232,7 @@ "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "¡Ups! Estás utilizando un método no compatible (solo frontend). Sirve la WebUI desde el backend.", "Open": "Abrir", "Open AI": "Open AI", - "Open AI (Dall-E)": "", + "Open AI (Dall-E)": "Open AI (Dall-E)", "Open new chat": "Abrir nuevo chat", "OpenAI API": "OpenAI API", "OpenAI API Key": "Clave de OpenAI API", @@ -337,10 +337,10 @@ "TTS Settings": "Configuración de TTS", "Type Hugging Face Resolve (Download) URL": "Type Hugging Face Resolve (Download) URL", "Uh-oh! There was an issue connecting to {{provider}}.": "¡UH oh! Hubo un problema al conectarse a {{provider}}.", - "Understand that updating or changing your embedding model requires reset of the vector database and re-import of all documents. You have been warned!": "", + "Understand that updating or changing your embedding model requires reset of the vector database and re-import of all documents. You have been warned!": "Comprenda que actualizar o cambiar su modelo de incrustación requiere restablecer la base de datos de vectores y volver a importar todos los documentos. ¡Usted ha sido advertido!", "Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Tipo de archivo desconocido '{{file_type}}', pero se acepta y se trata como texto sin formato", - "Update": "", - "Update embedding model {{embedding_model}}": "", + "Update": "Actualizar", + "Update embedding model {{embedding_model}}": "Actualizar modelo de embedding {{embedding_model}}", "Update password": "Actualiza contraseña", "Upload a GGUF model": "Sube un modelo GGUF", "Upload files": "Subir archivos", @@ -348,7 +348,7 @@ "URL Mode": "Modo de URL", "Use '#' in the prompt input to load and select your documents.": "Utilice '#' en el prompt para cargar y seleccionar sus documentos.", "Use Gravatar": "Usar Gravatar", - "Use Initials": "", + "Use Initials": "Usar Iniciales", "user": "usuario", "User Permissions": "Permisos de usuario", "Users": "Usuarios", From a556e39651732ae342b8bead6d3e113983e3afbb Mon Sep 17 00:00:00 2001 From: Ismael Date: Tue, 16 Apr 2024 16:30:13 -0400 Subject: [PATCH 50/59] little word fix --- src/lib/i18n/locales/es-ES/translation.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index b5db0678..819b88fb 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -337,7 +337,7 @@ "TTS Settings": "Configuración de TTS", "Type Hugging Face Resolve (Download) URL": "Type Hugging Face Resolve (Download) URL", "Uh-oh! There was an issue connecting to {{provider}}.": "¡UH oh! Hubo un problema al conectarse a {{provider}}.", - "Understand that updating or changing your embedding model requires reset of the vector database and re-import of all documents. You have been warned!": "Comprenda que actualizar o cambiar su modelo de incrustación requiere restablecer la base de datos de vectores y volver a importar todos los documentos. ¡Usted ha sido advertido!", + "Understand that updating or changing your embedding model requires reset of the vector database and re-import of all documents. You have been warned!": "Comprenda que actualizar o cambiar su modelo de embedding requiere restablecer la base de datos de vectores y volver a importar todos los documentos. ¡Usted ha sido advertido!", "Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Tipo de archivo desconocido '{{file_type}}', pero se acepta y se trata como texto sin formato", "Update": "Actualizar", "Update embedding model {{embedding_model}}": "Actualizar modelo de embedding {{embedding_model}}", From daed66f7c62a184e93e975ca92850df4eb9372e3 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Tue, 16 Apr 2024 15:57:14 -0500 Subject: [PATCH 51/59] feat: sidebar swipe support --- src/lib/components/layout/Sidebar.svelte | 26 ++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/lib/components/layout/Sidebar.svelte b/src/lib/components/layout/Sidebar.svelte index 9537eed9..33334b38 100644 --- a/src/lib/components/layout/Sidebar.svelte +++ b/src/lib/components/layout/Sidebar.svelte @@ -45,6 +45,31 @@ show = true; } await chats.set(await getChatList(localStorage.token)); + + let touchstartX = 0; + let touchendX = 0; + + function checkDirection() { + const screenWidth = window.innerWidth; + const swipeDistance = Math.abs(touchendX - touchstartX); + if (swipeDistance >= screenWidth / 4) { + if (touchendX < touchstartX) { + show = false; + } + if (touchendX > touchstartX) { + show = true; + } + } + } + + document.addEventListener('touchstart', (e) => { + touchstartX = e.changedTouches[0].screenX; + }); + + document.addEventListener('touchend', (e) => { + touchendX = e.changedTouches[0].screenX; + checkDirection(); + }); }); // Helper function to fetch and add chat content to each chat @@ -706,6 +731,7 @@