# Conflicts:
#	src/lib/i18n/locales/sr-RS/translation.json
This commit is contained in:
Rory 2025-02-02 20:31:27 -06:00
commit f837d2cdbb
16 changed files with 464 additions and 353 deletions

View File

@ -1283,7 +1283,28 @@ TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE = PersistentConfig(
) )
DEFAULT_TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE = """Available Tools: {{TOOLS}}\nReturn an empty string if no tools match the query. If a function tool matches, construct and return a JSON object in the format {\"name\": \"functionName\", \"parameters\": {\"requiredFunctionParamKey\": \"requiredFunctionParamValue\"}} using the appropriate tool and its parameters. Only return the object and limit the response to the JSON object without additional text.""" DEFAULT_TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE = """Available Tools: {{TOOLS}}
Your task is to choose and return the correct tool(s) from the list of available tools based on the query. Follow these guidelines:
- Return only the JSON object, without any additional text or explanation.
- If no tools match the query, return an empty array:
{
"tool_calls": []
}
- If one or more tools match the query, construct a JSON response containing a "tool_calls" array with objects that include:
- "name": The tool's name.
- "parameters": A dictionary of required parameters and their corresponding values.
The format for the JSON response is strictly:
{
"tool_calls": [
{"name": "toolName1", "parameters": {"key1": "value1"}},
{"name": "toolName2", "parameters": {"key2": "value2"}}
]
}"""
DEFAULT_EMOJI_GENERATION_PROMPT_TEMPLATE = """Your task is to reflect the speaker's likely facial expression through a fitting emoji. Interpret emotions from the message and reflect their facial expression using fitting, diverse emojis (e.g., 😊, 😢, 😡, 😱). DEFAULT_EMOJI_GENERATION_PROMPT_TEMPLATE = """Your task is to reflect the speaker's likely facial expression through a fitting emoji. Interpret emotions from the message and reflect their facial expression using fitting, diverse emojis (e.g., 😊, 😢, 😡, 😱).
@ -1325,6 +1346,7 @@ CHROMA_HTTP_SSL = os.environ.get("CHROMA_HTTP_SSL", "false").lower() == "true"
MILVUS_URI = os.environ.get("MILVUS_URI", f"{DATA_DIR}/vector_db/milvus.db") MILVUS_URI = os.environ.get("MILVUS_URI", f"{DATA_DIR}/vector_db/milvus.db")
MILVUS_DB = os.environ.get("MILVUS_DB", "default") MILVUS_DB = os.environ.get("MILVUS_DB", "default")
MILVUS_TOKEN = os.environ.get("MILVUS_TOKEN", None)
# Qdrant # Qdrant
QDRANT_URI = os.environ.get("QDRANT_URI", None) QDRANT_URI = os.environ.get("QDRANT_URI", None)

View File

@ -8,13 +8,17 @@ from open_webui.retrieval.vector.main import VectorItem, SearchResult, GetResult
from open_webui.config import ( from open_webui.config import (
MILVUS_URI, MILVUS_URI,
MILVUS_DB, MILVUS_DB,
MILVUS_TOKEN,
) )
class MilvusClient: class MilvusClient:
def __init__(self): def __init__(self):
self.collection_prefix = "open_webui" self.collection_prefix = "open_webui"
self.client = Client(uri=MILVUS_URI, database=MILVUS_DB) if MILVUS_TOKEN is None:
self.client = Client(uri=MILVUS_URI, database=MILVUS_DB)
else:
self.client = Client(uri=MILVUS_URI, database=MILVUS_DB, token=MILVUS_TOKEN)
def _result_to_get_result(self, result) -> GetResult: def _result_to_get_result(self, result) -> GetResult:
ids = [] ids = []

View File

@ -90,6 +90,10 @@ async def update_task_config(
form_data.TITLE_GENERATION_PROMPT_TEMPLATE form_data.TITLE_GENERATION_PROMPT_TEMPLATE
) )
request.app.state.config.IMAGE_PROMPT_GENERATION_PROMPT_TEMPLATE = (
form_data.IMAGE_PROMPT_GENERATION_PROMPT_TEMPLATE
)
request.app.state.config.ENABLE_AUTOCOMPLETE_GENERATION = ( request.app.state.config.ENABLE_AUTOCOMPLETE_GENERATION = (
form_data.ENABLE_AUTOCOMPLETE_GENERATION form_data.ENABLE_AUTOCOMPLETE_GENERATION
) )

View File

@ -270,60 +270,70 @@ async def chat_completion_tools_handler(
result = json.loads(content) result = json.loads(content)
tool_function_name = result.get("name", None) async def tool_call_handler(tool_call):
if tool_function_name not in tools: log.debug(f"{tool_call=}")
return body, {}
tool_function_params = result.get("parameters", {}) tool_function_name = tool_call.get("name", None)
if tool_function_name not in tools:
return body, {}
try: tool_function_params = tool_call.get("parameters", {})
required_params = (
tools[tool_function_name]
.get("spec", {})
.get("parameters", {})
.get("required", [])
)
tool_function = tools[tool_function_name]["callable"]
tool_function_params = {
k: v
for k, v in tool_function_params.items()
if k in required_params
}
tool_output = await tool_function(**tool_function_params)
except Exception as e: try:
tool_output = str(e) required_params = (
tools[tool_function_name]
if isinstance(tool_output, str): .get("spec", {})
if tools[tool_function_name]["citation"]: .get("parameters", {})
sources.append( .get("required", [])
{
"source": {
"name": f"TOOL:{tools[tool_function_name]['toolkit_id']}/{tool_function_name}"
},
"document": [tool_output],
"metadata": [
{
"source": f"TOOL:{tools[tool_function_name]['toolkit_id']}/{tool_function_name}"
}
],
}
)
else:
sources.append(
{
"source": {},
"document": [tool_output],
"metadata": [
{
"source": f"TOOL:{tools[tool_function_name]['toolkit_id']}/{tool_function_name}"
}
],
}
) )
tool_function = tools[tool_function_name]["callable"]
tool_function_params = {
k: v
for k, v in tool_function_params.items()
if k in required_params
}
tool_output = await tool_function(**tool_function_params)
if tools[tool_function_name]["file_handler"]: except Exception as e:
skip_files = True tool_output = str(e)
if isinstance(tool_output, str):
if tools[tool_function_name]["citation"]:
sources.append(
{
"source": {
"name": f"TOOL:{tools[tool_function_name]['toolkit_id']}/{tool_function_name}"
},
"document": [tool_output],
"metadata": [
{
"source": f"TOOL:{tools[tool_function_name]['toolkit_id']}/{tool_function_name}"
}
],
}
)
else:
sources.append(
{
"source": {},
"document": [tool_output],
"metadata": [
{
"source": f"TOOL:{tools[tool_function_name]['toolkit_id']}/{tool_function_name}"
}
],
}
)
if tools[tool_function_name]["file_handler"]:
skip_files = True
# check if "tool_calls" in result
if result.get("tool_calls"):
for tool_call in result.get("tool_calls"):
await tool_call_handler(tool_call)
else:
await tool_call_handler(result)
except Exception as e: except Exception as e:
log.exception(f"Error: {e}") log.exception(f"Error: {e}")

View File

@ -131,6 +131,25 @@ def add_or_update_system_message(content: str, messages: list[dict]):
return messages return messages
def append_or_update_assistant_message(content: str, messages: list[dict]):
"""
Adds a new assistant message at the end of the messages list
or updates the existing assistant message at the end.
:param msg: The message to be added or appended.
:param messages: The list of message dictionaries.
:return: The updated list of message dictionaries.
"""
if messages and messages[-1].get("role") == "assistant":
messages[-1]["content"] = f"{messages[-1]['content']}\n{content}"
else:
# Insert at the end
messages.append({"role": "assistant", "content": content})
return messages
def openai_chat_message_template(model: str): def openai_chat_message_template(model: str):
return { return {
"id": f"{model}-{str(uuid.uuid4())}", "id": f"{model}-{str(uuid.uuid4())}",

View File

@ -82,7 +82,8 @@ class OAuthManager:
oauth_allowed_roles = auth_manager_config.OAUTH_ALLOWED_ROLES oauth_allowed_roles = auth_manager_config.OAUTH_ALLOWED_ROLES
oauth_admin_roles = auth_manager_config.OAUTH_ADMIN_ROLES oauth_admin_roles = auth_manager_config.OAUTH_ADMIN_ROLES
oauth_roles = None oauth_roles = None
role = "pending" # Default/fallback role if no matching roles are found # Default/fallback role if no matching roles are found
role = auth_manager_config.DEFAULT_USER_ROLE
# Next block extracts the roles from the user data, accepting nested claims of any depth # Next block extracts the roles from the user data, accepting nested claims of any depth
if oauth_claim and oauth_allowed_roles and oauth_admin_roles: if oauth_claim and oauth_allowed_roles and oauth_admin_roles:
@ -273,7 +274,7 @@ class OAuthManager:
log.error( log.error(
f"Error downloading profile image '{picture_url}': {e}" f"Error downloading profile image '{picture_url}': {e}"
) )
picture_url = "" picture_url = "/user.png"
if not picture_url: if not picture_url:
picture_url = "/user.png" picture_url = "/user.png"

View File

@ -11,7 +11,7 @@ python-jose==3.3.0
passlib[bcrypt]==1.7.4 passlib[bcrypt]==1.7.4
requests==2.32.3 requests==2.32.3
aiohttp==3.11.8 aiohttp==3.11.11
async-timeout async-timeout
aiocache aiocache
aiofiles aiofiles
@ -57,7 +57,7 @@ einops==0.8.0
ftfy==6.2.3 ftfy==6.2.3
pypdf==4.3.1 pypdf==4.3.1
fpdf2==2.8.2 fpdf2==2.8.2
pymdown-extensions==10.11.2 pymdown-extensions==10.14.2
docx2txt==0.8 docx2txt==0.8
python-pptx==1.0.0 python-pptx==1.0.0
unstructured==0.16.17 unstructured==0.16.17
@ -71,16 +71,16 @@ xlrd==2.0.1
validators==0.34.0 validators==0.34.0
psutil psutil
sentencepiece sentencepiece
soundfile==0.12.1 soundfile==0.13.1
opencv-python-headless==4.10.0.84 opencv-python-headless==4.11.0.86
rapidocr-onnxruntime==1.3.24 rapidocr-onnxruntime==1.3.24
rank-bm25==0.2.2 rank-bm25==0.2.2
faster-whisper==1.0.3 faster-whisper==1.0.3
PyJWT[crypto]==2.10.1 PyJWT[crypto]==2.10.1
authlib==1.3.2 authlib==1.4.1
black==24.8.0 black==24.8.0
langfuse==2.44.0 langfuse==2.44.0
@ -89,7 +89,7 @@ pytube==15.0.0
extract_msg extract_msg
pydub pydub
duckduckgo-search~=7.2.1 duckduckgo-search~=7.3.0
## Google Drive ## Google Drive
google-api-python-client google-api-python-client

View File

@ -19,7 +19,7 @@ dependencies = [
"passlib[bcrypt]==1.7.4", "passlib[bcrypt]==1.7.4",
"requests==2.32.3", "requests==2.32.3",
"aiohttp==3.11.8", "aiohttp==3.11.11",
"async-timeout", "async-timeout",
"aiocache", "aiocache",
"aiofiles", "aiofiles",
@ -63,7 +63,7 @@ dependencies = [
"ftfy==6.2.3", "ftfy==6.2.3",
"pypdf==4.3.1", "pypdf==4.3.1",
"fpdf2==2.8.2", "fpdf2==2.8.2",
"pymdown-extensions==10.11.2", "pymdown-extensions==10.14.2",
"docx2txt==0.8", "docx2txt==0.8",
"python-pptx==1.0.0", "python-pptx==1.0.0",
"unstructured==0.16.17", "unstructured==0.16.17",
@ -77,16 +77,16 @@ dependencies = [
"validators==0.34.0", "validators==0.34.0",
"psutil", "psutil",
"sentencepiece", "sentencepiece",
"soundfile==0.12.1", "soundfile==0.13.1",
"opencv-python-headless==4.10.0.84", "opencv-python-headless==4.11.0.86",
"rapidocr-onnxruntime==1.3.24", "rapidocr-onnxruntime==1.3.24",
"rank-bm25==0.2.2", "rank-bm25==0.2.2",
"faster-whisper==1.0.3", "faster-whisper==1.0.3",
"PyJWT[crypto]==2.10.1", "PyJWT[crypto]==2.10.1",
"authlib==1.3.2", "authlib==1.4.1",
"black==24.8.0", "black==24.8.0",
"langfuse==2.44.0", "langfuse==2.44.0",
@ -95,7 +95,7 @@ dependencies = [
"extract_msg", "extract_msg",
"pydub", "pydub",
"duckduckgo-search~=7.2.1", "duckduckgo-search~=7.3.0",
"google-api-python-client", "google-api-python-client",
"google-auth-httplib2", "google-auth-httplib2",

View File

@ -31,7 +31,8 @@
ENABLE_TAGS_GENERATION: true, ENABLE_TAGS_GENERATION: true,
ENABLE_SEARCH_QUERY_GENERATION: true, ENABLE_SEARCH_QUERY_GENERATION: true,
ENABLE_RETRIEVAL_QUERY_GENERATION: true, ENABLE_RETRIEVAL_QUERY_GENERATION: true,
QUERY_GENERATION_PROMPT_TEMPLATE: '' QUERY_GENERATION_PROMPT_TEMPLATE: '',
TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE: ''
}; };
let promptSuggestions = []; let promptSuggestions = [];
@ -251,6 +252,20 @@
</div> </div>
</div> </div>
<div class="mt-3">
<div class=" mb-2.5 text-xs font-medium">{$i18n.t('Tools Function Calling Prompt')}</div>
<Tooltip
content={$i18n.t('Leave empty to use the default prompt, or enter a custom prompt')}
placement="top-start"
>
<Textarea
bind:value={taskConfig.TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE}
placeholder={$i18n.t('Leave empty to use the default prompt, or enter a custom prompt')}
/>
</Tooltip>
</div>
<hr class=" border-gray-50 dark:border-gray-850 my-3" /> <hr class=" border-gray-50 dark:border-gray-850 my-3" />
<div class=" space-y-3 {banners.length > 0 ? ' mb-3' : ''}"> <div class=" space-y-3 {banners.length > 0 ? ' mb-3' : ''}">

View File

@ -379,15 +379,27 @@ __builtins__.input = input`);
class="bg-[#202123] text-white max-w-full overflow-x-auto scrollbar-hidden" class="bg-[#202123] text-white max-w-full overflow-x-auto scrollbar-hidden"
/> />
{#if executing} {#if executing || stdout || stderr || result}
<div class="bg-[#202123] text-white px-4 py-4 rounded-b-lg"> <div class="bg-[#202123] text-white !rounded-b-lg py-4 px-4 flex flex-col gap-2">
<div class=" text-gray-500 text-xs mb-1">STDOUT/STDERR</div> {#if executing}
<div class="text-sm">Running...</div> <div class=" ">
</div> <div class=" text-gray-500 text-xs mb-1">STDOUT/STDERR</div>
{:else if stdout || stderr || result} <div class="text-sm">Running...</div>
<div class="bg-[#202123] text-white px-4 py-4 rounded-b-lg"> </div>
<div class=" text-gray-500 text-xs mb-1">STDOUT/STDERR</div> {:else}
<div class="text-sm">{stdout || stderr || result}</div> {#if stdout || stderr}
<div class=" ">
<div class=" text-gray-500 text-xs mb-1">STDOUT/STDERR</div>
<div class="text-sm">{stdout || stderr}</div>
</div>
{/if}
{#if result}
<div class=" ">
<div class=" text-gray-500 text-xs mb-1">RESULT</div>
<div class="text-sm">{`${result}`}</div>
</div>
{/if}
{/if}
</div> </div>
{/if} {/if}
{/if} {/if}

View File

@ -78,6 +78,7 @@
{rateMessage} {rateMessage}
{actionMessage} {actionMessage}
{submitMessage} {submitMessage}
{deleteMessage}
{continueResponse} {continueResponse}
{regenerateResponse} {regenerateResponse}
{addMessages} {addMessages}

View File

@ -114,6 +114,7 @@
export let saveMessage: Function; export let saveMessage: Function;
export let rateMessage: Function; export let rateMessage: Function;
export let actionMessage: Function; export let actionMessage: Function;
export let deleteMessage: Function;
export let submitMessage: Function; export let submitMessage: Function;
export let continueResponse: Function; export let continueResponse: Function;
@ -461,6 +462,10 @@
feedbackLoading = false; feedbackLoading = false;
}; };
const deleteMessageHandler = async () => {
deleteMessage(message.id);
};
$: if (!edit) { $: if (!edit) {
(async () => { (async () => {
await tick(); await tick();
@ -1177,6 +1182,36 @@
</button> </button>
</Tooltip> </Tooltip>
{#if siblings.length > 1}
<Tooltip content={$i18n.t('Delete')} placement="bottom">
<button
type="button"
id="continue-response-button"
class="{isLastMessage
? 'visible'
: 'invisible group-hover:visible'} p-1.5 hover:bg-black/5 dark:hover:bg-white/5 rounded-lg dark:hover:text-white hover:text-black transition regenerate-response-button"
on:click={() => {
deleteMessageHandler();
}}
>
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width="2"
stroke="currentColor"
class="w-4 h-4"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0"
/>
</svg>
</button>
</Tooltip>
{/if}
{#if isLastMessage} {#if isLastMessage}
{#each model?.actions ?? [] as action} {#each model?.actions ?? [] as action}
<Tooltip content={action.name} placement="bottom"> <Tooltip content={action.name} placement="bottom">

View File

@ -3,68 +3,49 @@
export let value = ''; export let value = '';
export let placeholder = ''; export let placeholder = '';
export let rows = 1;
export let required = false;
export let className = export let className =
'w-full rounded-lg px-3 py-2 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none resize-none h-full'; 'w-full rounded-lg px-3 py-2 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none h-full';
export let onKeydown: Function = () => {};
let textareaElement; let textareaElement;
$: if (textareaElement) {
if (textareaElement.innerText !== value && value !== '') {
textareaElement.innerText = value ?? '';
}
}
// Adjust height on mount and after setting the element. // Adjust height on mount and after setting the element.
onMount(async () => { onMount(async () => {
await tick(); await tick();
resize();
requestAnimationFrame(() => {
// setInterveal to cehck until textareaElement is set
const interval = setInterval(() => {
if (textareaElement) {
clearInterval(interval);
resize();
}
}, 100);
});
}); });
// Handle paste event to ensure only plaintext is pasted const resize = () => {
function handlePaste(event: ClipboardEvent) { if (textareaElement) {
event.preventDefault(); // Prevent the default paste action textareaElement.style.height = '';
const clipboardData = event.clipboardData?.getData('text/plain'); // Get plaintext from clipboard textareaElement.style.height = `${textareaElement.scrollHeight}px`;
}
// Insert plaintext into the textarea };
document.execCommand('insertText', false, clipboardData);
}
</script> </script>
<div <textarea
contenteditable="true"
bind:this={textareaElement} bind:this={textareaElement}
class="{className} whitespace-pre-wrap relative {value bind:value
? !value.trim() {placeholder}
? 'placeholder' class={className}
: '' style="field-sizing: content;"
: 'placeholder'}" {rows}
style="field-sizing: content; -moz-user-select: text !important;" {required}
on:input={() => { on:input={(e) => {
const text = textareaElement.innerText; resize();
if (text === '\n') { }}
value = ''; on:focus={() => {
return; resize();
}
value = text;
}} }}
on:paste={handlePaste}
on:keydown={onKeydown}
data-placeholder={placeholder}
/> />
<style>
.placeholder::before {
/* absolute */
position: absolute;
content: attr(data-placeholder);
color: #adb5bd;
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
pointer-events: none;
touch-action: none;
}
</style>

View File

@ -5,7 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(нпр. `sh webui.sh --api`)", "(e.g. `sh webui.sh --api`)": "(нпр. `sh webui.sh --api`)",
"(latest)": "(најновије)", "(latest)": "(најновије)",
"{{ models }}": "{{ модели }}", "{{ models }}": "{{ модели }}",
"{{COUNT}} Replies": "", "{{COUNT}} Replies": "{{COUNT}} одговора",
"{{user}}'s Chats": "Ћаскања корисника {{user}}", "{{user}}'s Chats": "Ћаскања корисника {{user}}",
"{{webUIName}} Backend Required": "Захтева се {{webUIName}} позадинац", "{{webUIName}} Backend Required": "Захтева се {{webUIName}} позадинац",
"*Prompt node ID(s) are required for image generation": "", "*Prompt node ID(s) are required for image generation": "",
@ -33,7 +33,7 @@
"Add custom prompt": "Додај прилагођен упит", "Add custom prompt": "Додај прилагођен упит",
"Add Files": "Додај датотеке", "Add Files": "Додај датотеке",
"Add Group": "Додај групу", "Add Group": "Додај групу",
"Add Memory": "Додај меморију", "Add Memory": "Додај сећање",
"Add Model": "Додај модел", "Add Model": "Додај модел",
"Add Reaction": "", "Add Reaction": "",
"Add Tag": "Додај ознаку", "Add Tag": "Додај ознаку",
@ -45,13 +45,13 @@
"admin": "админ", "admin": "админ",
"Admin": "Админ", "Admin": "Админ",
"Admin Panel": "Админ табла", "Admin Panel": "Админ табла",
"Admin Settings": "Админ подешавања", "Admin Settings": "Админ део",
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Админи имају приступ свим алатима у сваком тренутку, корисницима је потребно доделити алате по моделу у радном простору", "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Админи имају приступ свим алатима у сваком тренутку, корисницима је потребно доделити алате по моделу у радном простору",
"Advanced Parameters": "Напредни параметри", "Advanced Parameters": "Напредни параметри",
"Advanced Params": "Напредни парамови", "Advanced Params": "Напредни парамови",
"All Documents": "Сви документи", "All Documents": "Сви документи",
"All models deleted successfully": "Сви модели су успешно обрисани", "All models deleted successfully": "Сви модели су успешно обрисани",
"Allow Chat Controls": "", "Allow Chat Controls": "Дозволи контроле ћаскања",
"Allow Chat Delete": "Дозволи брисање ћаскања", "Allow Chat Delete": "Дозволи брисање ћаскања",
"Allow Chat Deletion": "Дозволи брисање ћаскања", "Allow Chat Deletion": "Дозволи брисање ћаскања",
"Allow Chat Edit": "Дозволи измену ћаскања", "Allow Chat Edit": "Дозволи измену ћаскања",
@ -80,10 +80,10 @@
"Archive": "Архивирај", "Archive": "Архивирај",
"Archive All Chats": "Архивирај сва ћаскања", "Archive All Chats": "Архивирај сва ћаскања",
"Archived Chats": "Архиве", "Archived Chats": "Архиве",
"archived-chat-export": "", "archived-chat-export": "izvezena-arhiva",
"Are you sure you want to delete this channel?": "", "Are you sure you want to delete this channel?": "Да ли сигурно желите обрисати овај канал?",
"Are you sure you want to delete this message?": "", "Are you sure you want to delete this message?": "Да ли сигурно желите обрисати ову поруку?",
"Are you sure you want to unarchive all archived chats?": "", "Are you sure you want to unarchive all archived chats?": "Да ли сигурно желите деархивирати све архиве?",
"Are you sure?": "Да ли сте сигурни?", "Are you sure?": "Да ли сте сигурни?",
"Arena Models": "Модели са Арене", "Arena Models": "Модели са Арене",
"Artifacts": "Артефакти", "Artifacts": "Артефакти",
@ -91,7 +91,7 @@
"Assistant": "Помоћник", "Assistant": "Помоћник",
"Attach file": "Приложи датотеку", "Attach file": "Приложи датотеку",
"Attention to detail": "Пажња на детаље", "Attention to detail": "Пажња на детаље",
"Attribute for Mail": "", "Attribute for Mail": "Особина е-поруке",
"Attribute for Username": "Особина корисника", "Attribute for Username": "Особина корисника",
"Audio": "Звук", "Audio": "Звук",
"August": "Август", "August": "Август",
@ -116,33 +116,33 @@
"Batch Size (num_batch)": "", "Batch Size (num_batch)": "",
"before": "пре", "before": "пре",
"Being lazy": "Бити лењ", "Being lazy": "Бити лењ",
"Beta": "", "Beta": "Бета",
"Bing Search V7 Endpoint": "", "Bing Search V7 Endpoint": "",
"Bing Search V7 Subscription Key": "", "Bing Search V7 Subscription Key": "",
"Brave Search API Key": "Апи кључ за храбру претрагу", "Brave Search API Key": "Апи кључ за храбру претрагу",
"By {{name}}": "", "By {{name}}": "Од {{name}}",
"Bypass SSL verification for Websites": "Заобиђи SSL потврђивање за веб странице", "Bypass SSL verification for Websites": "Заобиђи SSL потврђивање за веб странице",
"Call": "Позив", "Call": "Позив",
"Call feature is not supported when using Web STT engine": "", "Call feature is not supported when using Web STT engine": "",
"Camera": "Камера", "Camera": "Камера",
"Cancel": "Откажи", "Cancel": "Откажи",
"Capabilities": "Могућности", "Capabilities": "Могућности",
"Capture": "", "Capture": "Ухвати",
"Certificate Path": "", "Certificate Path": "Путања до сертификата",
"Change Password": "Промени лозинку", "Change Password": "Промени лозинку",
"Channel Name": "", "Channel Name": "Назив канала",
"Channels": "", "Channels": "Канали",
"Character": "Знак", "Character": "Знак",
"Character limit for autocomplete generation input": "", "Character limit for autocomplete generation input": "",
"Chart new frontiers": "", "Chart new frontiers": "Откриј нове границе",
"Chat": "Ћаскање", "Chat": "Ћаскање",
"Chat Background Image": "", "Chat Background Image": "Позадинска слика ћаскања",
"Chat Bubble UI": "Интерфејс балона ћаскања", "Chat Bubble UI": "Прочеље балона ћаскања",
"Chat Controls": "", "Chat Controls": "Контроле ћаскања",
"Chat direction": "Смер ћаскања", "Chat direction": "Смер ћаскања",
"Chat Overview": "Преглед ћаскања", "Chat Overview": "Преглед ћаскања",
"Chat Permissions": "Дозволе ћаскања", "Chat Permissions": "Дозволе ћаскања",
"Chat Tags Auto-Generation": "", "Chat Tags Auto-Generation": "Самостварање ознака ћаскања",
"Chats": "Ћаскања", "Chats": "Ћаскања",
"Check Again": "Провери поново", "Check Again": "Провери поново",
"Check for updates": "Потражи ажурирања", "Check for updates": "Потражи ажурирања",
@ -151,11 +151,11 @@
"Chunk Overlap": "Преклапање делова", "Chunk Overlap": "Преклапање делова",
"Chunk Params": "Параметри делова", "Chunk Params": "Параметри делова",
"Chunk Size": "Величина дела", "Chunk Size": "Величина дела",
"Ciphers": "", "Ciphers": "Шифре",
"Citation": "Цитат", "Citation": "Цитат",
"Clear memory": "", "Clear memory": "Очисти сећања",
"click here": "", "click here": "кликни овде",
"Click here for filter guides.": "", "Click here for filter guides.": "Кликни овде за упутства филтера.",
"Click here for help.": "Кликните овде за помоћ.", "Click here for help.": "Кликните овде за помоћ.",
"Click here to": "Кликните овде да", "Click here to": "Кликните овде да",
"Click here to download user import template file.": "", "Click here to download user import template file.": "",
@ -168,36 +168,36 @@
"Click on the user role button to change a user's role.": "Кликните на дугме за улогу корисника да промените улогу корисника.", "Click on the user role button to change a user's role.": "Кликните на дугме за улогу корисника да промените улогу корисника.",
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "", "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
"Clone": "Клонирај", "Clone": "Клонирај",
"Clone Chat": "", "Clone Chat": "Клонирај ћаскање",
"Close": "Затвори", "Close": "Затвори",
"Code execution": "", "Code execution": "Извршавање кода",
"Code formatted successfully": "", "Code formatted successfully": "Код форматиран успешно",
"Collection": "Колекција", "Collection": "Колекција",
"Color": "", "Color": "Боја",
"ComfyUI": "ComfyUI", "ComfyUI": "ComfyUI",
"ComfyUI API Key": "", "ComfyUI API Key": "ComfyUI API кључ",
"ComfyUI Base URL": "Основна адреса за ComfyUI", "ComfyUI Base URL": "Основна адреса за ComfyUI",
"ComfyUI Base URL is required.": "Потребна је основна адреса за ComfyUI.", "ComfyUI Base URL is required.": "Потребна је основна адреса за ComfyUI.",
"ComfyUI Workflow": "", "ComfyUI Workflow": "ComfyUI радни ток",
"ComfyUI Workflow Nodes": "", "ComfyUI Workflow Nodes": "ComfyUI чворови радног тока",
"Command": "Наредба", "Command": "Наредба",
"Completions": "", "Completions": "Допуне",
"Concurrent Requests": "Упоредни захтеви", "Concurrent Requests": "Упоредни захтеви",
"Configure": "", "Configure": "Подеси",
"Confirm": "", "Confirm": "Потврди",
"Confirm Password": "Потврди лозинку", "Confirm Password": "Потврди лозинку",
"Confirm your action": "", "Confirm your action": "Потврди радњу",
"Confirm your new password": "", "Confirm your new password": "Потврди нову лозинку",
"Connections": "Везе", "Connections": "Везе",
"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "", "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
"Contact Admin for WebUI Access": "", "Contact Admin for WebUI Access": "Пишите админима за приступ на WebUI",
"Content": "Садржај", "Content": "Садржај",
"Content Extraction": "", "Content Extraction": "Извлачење садржаја",
"Context Length": "Дужина контекста", "Context Length": "Дужина контекста",
"Continue Response": "Настави одговор", "Continue Response": "Настави одговор",
"Continue with {{provider}}": "", "Continue with {{provider}}": "Настави са {{provider}}",
"Continue with Email": "", "Continue with Email": "Настави са е-адресом",
"Continue with LDAP": "", "Continue with LDAP": "Настави са ЛДАП-ом",
"Control how message text is split for TTS requests. 'Punctuation' splits into sentences, 'paragraphs' splits into paragraphs, and 'none' keeps the message as a single string.": "", "Control how message text is split for TTS requests. 'Punctuation' splits into sentences, 'paragraphs' splits into paragraphs, and 'none' keeps the message as a single string.": "",
"Controls": "Контроле", "Controls": "Контроле",
"Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text. (Default: 5.0)": "", "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text. (Default: 5.0)": "",
@ -208,14 +208,14 @@
"Copy last code block": "Копирај последњи блок кода", "Copy last code block": "Копирај последњи блок кода",
"Copy last response": "Копирај последњи одговор", "Copy last response": "Копирај последњи одговор",
"Copy Link": "Копирај везу", "Copy Link": "Копирај везу",
"Copy to clipboard": "", "Copy to clipboard": "Копирај у оставу",
"Copying to clipboard was successful!": "Успешно копирање у оставу!", "Copying to clipboard was successful!": "Успешно копирање у оставу!",
"Create": "Направи", "Create": "Направи",
"Create a knowledge base": "Направи базу знања", "Create a knowledge base": "Направи базу знања",
"Create a model": "Креирање модела", "Create a model": "Креирање модела",
"Create Account": "Направи налог", "Create Account": "Направи налог",
"Create Admin Account": "Направи админ налог", "Create Admin Account": "Направи админ налог",
"Create Channel": "", "Create Channel": "Направи канал",
"Create Group": "Направи групу", "Create Group": "Направи групу",
"Create Knowledge": "Направи знање", "Create Knowledge": "Направи знање",
"Create new key": "Направи нови кључ", "Create new key": "Направи нови кључ",
@ -223,7 +223,7 @@
"Created at": "Направљено у", "Created at": "Направљено у",
"Created At": "Направљено у", "Created At": "Направљено у",
"Created by": "Направио/ла", "Created by": "Направио/ла",
"CSV Import": "", "CSV Import": "Увоз CSV-а",
"Current Model": "Тренутни модел", "Current Model": "Тренутни модел",
"Current Password": "Тренутна лозинка", "Current Password": "Тренутна лозинка",
"Custom": "Прилагођено", "Custom": "Прилагођено",
@ -231,7 +231,7 @@
"Database": "База података", "Database": "База података",
"December": "Децембар", "December": "Децембар",
"Default": "Подразумевано", "Default": "Подразумевано",
"Default (Open AI)": "", "Default (Open AI)": "Подразумевано (Open AI)",
"Default (SentenceTransformers)": "Подразумевано (SentenceTransformers)", "Default (SentenceTransformers)": "Подразумевано (SentenceTransformers)",
"Default Model": "Подразумевани модел", "Default Model": "Подразумевани модел",
"Default model updated": "Подразумевани модел ажуриран", "Default model updated": "Подразумевани модел ажуриран",
@ -244,56 +244,56 @@
"Default User Role": "Подразумевана улога корисника", "Default User Role": "Подразумевана улога корисника",
"Delete": "Обриши", "Delete": "Обриши",
"Delete a model": "Обриши модел", "Delete a model": "Обриши модел",
"Delete All Chats": "Избриши сва ћаскања", "Delete All Chats": "Обриши сва ћаскања",
"Delete All Models": "", "Delete All Models": "Обриши све моделе",
"Delete chat": "Обриши ћаскање", "Delete chat": "Обриши ћаскање",
"Delete Chat": "Обриши ћаскање", "Delete Chat": "Обриши ћаскање",
"Delete chat?": "", "Delete chat?": "Обрисати ћаскање?",
"Delete folder?": "", "Delete folder?": "Обрисати фасциклу?",
"Delete function?": "", "Delete function?": "Обрисати функцију?",
"Delete Message": "", "Delete Message": "Обриши поруку",
"Delete prompt?": "", "Delete prompt?": "Обрисати упит?",
"delete this link": "обриши ову везу", "delete this link": "обриши ову везу",
"Delete tool?": "", "Delete tool?": "Обрисати алат?",
"Delete User": "Обриши корисника", "Delete User": "Обриши корисника",
"Deleted {{deleteModelTag}}": "Обрисано {{deleteModelTag}}", "Deleted {{deleteModelTag}}": "Обрисано {{deleteModelTag}}",
"Deleted {{name}}": "Избрисано {{наме}}", "Deleted {{name}}": "Избрисано {{наме}}",
"Deleted User": "", "Deleted User": "Обрисани корисници",
"Describe your knowledge base and objectives": "", "Describe your knowledge base and objectives": "Опишите вашу базу знања и циљеве",
"Description": "Опис", "Description": "Опис",
"Didn't fully follow instructions": "Упутства нису праћена у потпуности", "Didn't fully follow instructions": "Упутства нису праћена у потпуности",
"Disabled": "", "Disabled": "Онемогућено",
"Discover a function": "Откријте функцију", "Discover a function": "Откријте функцију",
"Discover a model": "Откријте модел", "Discover a model": "Откријте модел",
"Discover a prompt": "Откриј упит", "Discover a prompt": "Откриј упит",
"Discover a tool": "Откријте алат", "Discover a tool": "Откријте алат",
"Discover wonders": "", "Discover wonders": "Откријте чудеса",
"Discover, download, and explore custom functions": "Откријте, преузмите и истражите прилагођене функције", "Discover, download, and explore custom functions": "Откријте, преузмите и истражите прилагођене функције",
"Discover, download, and explore custom prompts": "Откријте, преузмите и истражите прилагођене упите", "Discover, download, and explore custom prompts": "Откријте, преузмите и истражите прилагођене упите",
"Discover, download, and explore custom tools": "Откријте, преузмите и истражите прилагођене алате", "Discover, download, and explore custom tools": "Откријте, преузмите и истражите прилагођене алате",
"Discover, download, and explore model presets": "Откријте, преузмите и истражите образце модела", "Discover, download, and explore model presets": "Откријте, преузмите и истражите образце модела",
"Dismissible": "", "Dismissible": "Занемариво",
"Display": "", "Display": "Приказ",
"Display Emoji in Call": "", "Display Emoji in Call": "Прикажи емоџије у позиву",
"Display the username instead of You in the Chat": "Прикажи корисничко име уместо Ти у чату", "Display the username instead of You in the Chat": "Прикажи корисничко уместо Ти у ћаскању",
"Displays citations in the response": "", "Displays citations in the response": "Прикажи цитате у одговору",
"Dive into knowledge": "", "Dive into knowledge": "Ускочите у знање",
"Do not install functions from sources you do not fully trust.": "", "Do not install functions from sources you do not fully trust.": "",
"Do not install tools from sources you do not fully trust.": "", "Do not install tools from sources you do not fully trust.": "",
"Document": "Документ", "Document": "Документ",
"Documentation": "", "Documentation": "Документација",
"Documents": "Документи", "Documents": "Документи",
"does not make any external connections, and your data stays securely on your locally hosted server.": "не отвара никакве спољне везе и ваши подаци остају сигурно на вашем локално хостованом серверу.", "does not make any external connections, and your data stays securely on your locally hosted server.": "не отвара никакве спољне везе и ваши подаци остају сигурно на вашем локално хостованом серверу.",
"Don't have an account?": "Немате налог?", "Don't have an account?": "Немате налог?",
"don't install random functions from sources you don't trust.": "", "don't install random functions from sources you don't trust.": "",
"don't install random tools from sources you don't trust.": "", "don't install random tools from sources you don't trust.": "",
"Don't like the style": "Не свиђа ми се стил", "Don't like the style": "Не свиђа ми се стил",
"Done": "", "Done": "Готово",
"Download": "Преузми", "Download": "Преузми",
"Download canceled": "Преузимање отказано", "Download canceled": "Преузимање отказано",
"Download Database": "Преузми базу података", "Download Database": "Преузми базу података",
"Drag and drop a file to upload or select a file to view": "", "Drag and drop a file to upload or select a file to view": "",
"Draw": "", "Draw": "Нацртај",
"Drop any files here to add to the conversation": "Убаците било које датотеке овде да их додате у разговор", "Drop any files here to add to the conversation": "Убаците било које датотеке овде да их додате у разговор",
"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "нпр. '30s', '10m'. Важеће временске јединице су 's', 'm', 'h'.", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "нпр. '30s', '10m'. Важеће временске јединице су 's', 'm', 'h'.",
"e.g. A filter to remove profanity from text": "", "e.g. A filter to remove profanity from text": "",
@ -302,17 +302,17 @@
"e.g. my_filter": "", "e.g. my_filter": "",
"e.g. my_tools": "", "e.g. my_tools": "",
"e.g. Tools for performing various operations": "", "e.g. Tools for performing various operations": "",
"Edit": "Уреди", "Edit": "Измени",
"Edit Arena Model": "", "Edit Arena Model": "Измени модел арене",
"Edit Channel": "", "Edit Channel": "Измени канал",
"Edit Connection": "", "Edit Connection": "Измени везу",
"Edit Default Permissions": "", "Edit Default Permissions": "Измени подразумевана овлашћења",
"Edit Memory": "", "Edit Memory": "Измени сећање",
"Edit User": "Уреди корисника", "Edit User": "Измени корисника",
"Edit User Group": "", "Edit User Group": "Измени корисничку групу",
"ElevenLabs": "", "ElevenLabs": "",
"Email": "Е-пошта", "Email": "Е-пошта",
"Embark on adventures": "", "Embark on adventures": "Започните пустоловину",
"Embedding Batch Size": "", "Embedding Batch Size": "",
"Embedding Model": "Модел уградње", "Embedding Model": "Модел уградње",
"Embedding Model Engine": "Мотор модела уградње", "Embedding Model Engine": "Мотор модела уградње",
@ -327,8 +327,8 @@
"Enable Mirostat sampling for controlling perplexity. (Default: 0, 0 = Disabled, 1 = Mirostat, 2 = Mirostat 2.0)": "", "Enable Mirostat sampling for controlling perplexity. (Default: 0, 0 = Disabled, 1 = Mirostat, 2 = Mirostat 2.0)": "",
"Enable New Sign Ups": "Омогући нове пријаве", "Enable New Sign Ups": "Омогући нове пријаве",
"Enable Web Search": "Омогући Wеб претрагу", "Enable Web Search": "Омогући Wеб претрагу",
"Enabled": "", "Enabled": "Омогућено",
"Engine": "", "Engine": "Мотор",
"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Уверите се да ваша CSV датотека укључује 4 колоне у овом редоследу: Име, Е-пошта, Лозинка, Улога.", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Уверите се да ваша CSV датотека укључује 4 колоне у овом редоследу: Име, Е-пошта, Лозинка, Улога.",
"Enter {{role}} message here": "Унесите {{role}} поруку овде", "Enter {{role}} message here": "Унесите {{role}} поруку овде",
"Enter a detail about yourself for your LLMs to recall": "Унесите детаље за себе да ће LLMs преузимати", "Enter a detail about yourself for your LLMs to recall": "Унесите детаље за себе да ће LLMs преузимати",
@ -400,9 +400,9 @@
"Experimental": "Експериментално", "Experimental": "Експериментално",
"Explore the cosmos": "", "Explore the cosmos": "",
"Export": "Извоз", "Export": "Извоз",
"Export All Archived Chats": "", "Export All Archived Chats": "Извези све архиве",
"Export All Chats (All Users)": "Извези сва ћаскања (сви корисници)", "Export All Chats (All Users)": "Извези сва ћаскања (сви корисници)",
"Export chat (.json)": "", "Export chat (.json)": "Извези ћаскање (.json)",
"Export Chats": "Извези ћаскања", "Export Chats": "Извези ћаскања",
"Export Config to JSON File": "", "Export Config to JSON File": "",
"Export Functions": "Извези функције", "Export Functions": "Извези функције",
@ -479,25 +479,25 @@
"Group updated successfully": "Група измењена успешно", "Group updated successfully": "Група измењена успешно",
"Groups": "Групе", "Groups": "Групе",
"h:mm a": "h:mm a", "h:mm a": "h:mm a",
"Haptic Feedback": "", "Haptic Feedback": "Вибрација као одговор",
"has no conversations.": "нема разговора.", "has no conversations.": "нема разговора.",
"Hello, {{name}}": "Здраво, {{name}}", "Hello, {{name}}": "Здраво, {{name}}",
"Help": "Помоћ", "Help": "Помоћ",
"Help us create the best community leaderboard by sharing your feedback history!": "", "Help us create the best community leaderboard by sharing your feedback history!": "",
"Hex Color": "", "Hex Color": "Хекс боја",
"Hex Color - Leave empty for default color": "", "Hex Color - Leave empty for default color": "Хекс боја (празно за подразумевано)",
"Hide": "Сакриј", "Hide": "Сакриј",
"Host": "", "Host": "Домаћин",
"How can I help you today?": "Како могу да вам помогнем данас?", "How can I help you today?": "Како могу да вам помогнем данас?",
"How would you rate this response?": "", "How would you rate this response?": "",
"Hybrid Search": "Хибридна претрага", "Hybrid Search": "Хибридна претрага",
"I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "", "I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "",
"ID": "", "ID": "ИБ",
"Ignite curiosity": "", "Ignite curiosity": "Покрени знатижељу",
"Image": "", "Image": "Слика",
"Image Compression": "", "Image Compression": "Компресија слике",
"Image generation": "", "Image generation": "Стварање слике",
"Image Generation": "", "Image Generation": "Стварање слике",
"Image Generation (Experimental)": "Стварање слика (експериментално)", "Image Generation (Experimental)": "Стварање слика (експериментално)",
"Image Generation Engine": "Мотор за стварање слика", "Image Generation Engine": "Мотор за стварање слика",
"Image Max Compression Size": "", "Image Max Compression Size": "",
@ -535,22 +535,22 @@
"JWT Token": "JWT жетон", "JWT Token": "JWT жетон",
"Kagi Search API Key": "", "Kagi Search API Key": "",
"Keep Alive": "Одржи трајање", "Keep Alive": "Одржи трајање",
"Key": "", "Key": "Кључ",
"Keyboard shortcuts": "Пречице на тастатури", "Keyboard shortcuts": "Пречице на тастатури",
"Knowledge": "", "Knowledge": "Знање",
"Knowledge Access": "", "Knowledge Access": "Приступ знању",
"Knowledge created successfully.": "", "Knowledge created successfully.": "",
"Knowledge deleted successfully.": "", "Knowledge deleted successfully.": "",
"Knowledge reset successfully.": "", "Knowledge reset successfully.": "",
"Knowledge updated successfully": "", "Knowledge updated successfully": "",
"Label": "", "Label": "Етикета",
"Landing Page Mode": "", "Landing Page Mode": "Режим почетне стране",
"Language": "Језик", "Language": "Језик",
"Last Active": "Последња активност", "Last Active": "Последња активност",
"Last Modified": "", "Last Modified": "Последња измена",
"Last reply": "", "Last reply": "Последњи одговор",
"LDAP": "", "LDAP": "ЛДАП",
"LDAP server updated": "", "LDAP server updated": "ЛДАП сервер измењен",
"Leaderboard": "Ранг листа", "Leaderboard": "Ранг листа",
"Leave empty for unlimited": "", "Leave empty for unlimited": "",
"Leave empty to include all models from \"{{URL}}/api/tags\" endpoint": "", "Leave empty to include all models from \"{{URL}}/api/tags\" endpoint": "",
@ -558,23 +558,23 @@
"Leave empty to include all models or select specific models": "", "Leave empty to include all models or select specific models": "",
"Leave empty to use the default prompt, or enter a custom prompt": "", "Leave empty to use the default prompt, or enter a custom prompt": "",
"Light": "Светла", "Light": "Светла",
"Listening...": "", "Listening...": "Слушам...",
"Llama.cpp": "", "Llama.cpp": "Llama.cpp",
"LLMs can make mistakes. Verify important information.": "ВЈМ-ови (LLM-ови) могу правити грешке. Проверите важне податке.", "LLMs can make mistakes. Verify important information.": "ВЈМ-ови (LLM-ови) могу правити грешке. Проверите важне податке.",
"Loading {{count}} sites": "", "Loading {{count}} sites": "",
"Local": "", "Local": "Локално",
"Local Models": "", "Local Models": "Локални модели",
"Lost": "Пораза", "Lost": "Пораза",
"LTR": "ЛНД", "LTR": "ЛНД",
"Made by OpenWebUI Community": "Израдила OpenWebUI заједница", "Made by OpenWebUI Community": "Израдила OpenWebUI заједница",
"Make sure to enclose them with": "Уверите се да их затворите са", "Make sure to enclose them with": "Уверите се да их затворите са",
"Make sure to export a workflow.json file as API format from ComfyUI.": "", "Make sure to export a workflow.json file as API format from ComfyUI.": "",
"Manage": "", "Manage": "Управљај",
"Manage Arena Models": "", "Manage Arena Models": "Управљај моделима арене",
"Manage Models": "", "Manage Models": "Управљај моделима",
"Manage Ollama": "", "Manage Ollama": "Управљај Ollama-ом",
"Manage Ollama API Connections": "", "Manage Ollama API Connections": "Управљај Ollama АПИ везама",
"Manage OpenAI API Connections": "", "Manage OpenAI API Connections": "Управљај OpenAI АПИ везама",
"Manage Pipelines": "Управљање цевоводима", "Manage Pipelines": "Управљање цевоводима",
"March": "Март", "March": "Март",
"Max Tokens (num_predict)": "Маx Токенс (нум_предицт)", "Max Tokens (num_predict)": "Маx Токенс (нум_предицт)",
@ -583,12 +583,12 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Највише 3 модела могу бити преузета истовремено. Покушајте поново касније.", "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Највише 3 модела могу бити преузета истовремено. Покушајте поново касније.",
"May": "Мај", "May": "Мај",
"Memories accessible by LLMs will be shown here.": "Памћења које ће бити појављена од овог LLM-а ће бити приказана овде.", "Memories accessible by LLMs will be shown here.": "Памћења које ће бити појављена од овог LLM-а ће бити приказана овде.",
"Memory": "Памћење", "Memory": "Сећања",
"Memory added successfully": "", "Memory added successfully": "Сећање успешно додато",
"Memory cleared successfully": "", "Memory cleared successfully": "Сећање успешно очишћено",
"Memory deleted successfully": "", "Memory deleted successfully": "Сећање успешно обрисано",
"Memory updated successfully": "", "Memory updated successfully": "Сећање успешно измењено",
"Merge Responses": "", "Merge Responses": "Спој одговоре",
"Message rating should be enabled to use this feature": "", "Message rating should be enabled to use this feature": "",
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Поруке које пошаљете након стварања ваше везе неће бити подељене. Корисници са URL-ом ће моћи да виде дељено ћаскање.", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Поруке које пошаљете након стварања ваше везе неће бити подељене. Корисници са URL-ом ће моћи да виде дељено ћаскање.",
"Min P": "", "Min P": "",
@ -621,7 +621,7 @@
"Models Access": "", "Models Access": "",
"Models configuration saved successfully": "", "Models configuration saved successfully": "",
"Mojeek Search API Key": "", "Mojeek Search API Key": "",
"more": "", "more": "више",
"More": "Више", "More": "Више",
"Name": "Име", "Name": "Име",
"Name your knowledge base": "", "Name your knowledge base": "",
@ -645,15 +645,15 @@
"No results found": "Нема резултата", "No results found": "Нема резултата",
"No search query generated": "Није генерисан упит за претрагу", "No search query generated": "Није генерисан упит за претрагу",
"No source available": "Нема доступног извора", "No source available": "Нема доступног извора",
"No users were found.": "", "No users were found.": "Нема корисника.",
"No valves to update": "", "No valves to update": "",
"None": "Нико", "None": "Нико",
"Not factually correct": "Није чињенично тачно", "Not factually correct": "Није чињенично тачно",
"Not helpful": "", "Not helpful": "Није од помоћи",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Напомена: ако подесите најмањи резултат, претрага ће вратити само документе са резултатом већим или једнаким најмањем резултату.", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Напомена: ако подесите најмањи резултат, претрага ће вратити само документе са резултатом већим или једнаким најмањем резултату.",
"Notes": "", "Notes": "Белешке",
"Notification Sound": "", "Notification Sound": "Звук обавештења",
"Notification Webhook": "", "Notification Webhook": "Веб-кука обавештења",
"Notifications": "Обавештења", "Notifications": "Обавештења",
"November": "Новембар", "November": "Новембар",
"num_gpu (Ollama)": "", "num_gpu (Ollama)": "",
@ -691,27 +691,27 @@
"or": "или", "or": "или",
"Organize your users": "Организујте ваше кориснике", "Organize your users": "Организујте ваше кориснике",
"Other": "Остало", "Other": "Остало",
"OUTPUT": "", "OUTPUT": "ИЗЛАЗ",
"Output format": "Формат излаза", "Output format": "Формат излаза",
"Overview": "Преглед", "Overview": "Преглед",
"page": "", "page": "страница",
"Password": "Лозинка", "Password": "Лозинка",
"Paste Large Text as File": "", "Paste Large Text as File": "Убаци велики текст као датотеку",
"PDF document (.pdf)": "PDF документ (.pdf)", "PDF document (.pdf)": "PDF документ (.pdf)",
"PDF Extract Images (OCR)": "Извлачење PDF слика (OCR)", "PDF Extract Images (OCR)": "Извлачење PDF слика (OCR)",
"pending": "на чекању", "pending": "на чекању",
"Permission denied when accessing media devices": "", "Permission denied when accessing media devices": "Приступ медијским уређајима одбијен",
"Permission denied when accessing microphone": "", "Permission denied when accessing microphone": "Приступ микрофону је одбијен",
"Permission denied when accessing microphone: {{error}}": "Приступ микрофону је одбијен: {{error}}", "Permission denied when accessing microphone: {{error}}": "Приступ микрофону је одбијен: {{error}}",
"Permissions": "", "Permissions": "",
"Personalization": "Прилагођавање", "Personalization": "Прилагођавање",
"Pin": "Закачи", "Pin": "Закачи",
"Pinned": "Закачено", "Pinned": "Закачено",
"Pioneer insights": "", "Pioneer insights": "",
"Pipeline deleted successfully": "", "Pipeline deleted successfully": "Цевовод успешно обрисан",
"Pipeline downloaded successfully": "", "Pipeline downloaded successfully": "Цевовод успешно преузет",
"Pipelines": "Цевоводи", "Pipelines": "Цевоводи",
"Pipelines Not Detected": "", "Pipelines Not Detected": "Цевоводи нису уочени",
"Pipelines Valves": "Вентили за цевоводе", "Pipelines Valves": "Вентили за цевоводе",
"Plain text (.txt)": "Обичан текст (.txt)", "Plain text (.txt)": "Обичан текст (.txt)",
"Playground": "Игралиште", "Playground": "Игралиште",
@ -727,14 +727,14 @@
"Previous 30 days": "Претходних 30 дана", "Previous 30 days": "Претходних 30 дана",
"Previous 7 days": "Претходних 7 дана", "Previous 7 days": "Претходних 7 дана",
"Profile Image": "Слика профила", "Profile Image": "Слика профила",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Упит (нпр. „реци ми занимљивост о Римском царству“)", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Упит (нпр. „подели занимљивост о Римском царству“)",
"Prompt Content": "Садржај упита", "Prompt Content": "Садржај упита",
"Prompt created successfully": "", "Prompt created successfully": "",
"Prompt suggestions": "Предлози упита", "Prompt suggestions": "Предлози упита",
"Prompt updated successfully": "", "Prompt updated successfully": "Упит измењен успешно",
"Prompts": "Упити", "Prompts": "Упити",
"Prompts Access": "", "Prompts Access": "Приступ упитима",
"Proxy URL": "", "Proxy URL": "Адреса посредника",
"Pull \"{{searchValue}}\" from Ollama.com": "Повуците \"{{searchValue}}\" са Ollama.com", "Pull \"{{searchValue}}\" from Ollama.com": "Повуците \"{{searchValue}}\" са Ollama.com",
"Pull a model from Ollama.com": "Повуците модел са Ollama.com", "Pull a model from Ollama.com": "Повуците модел са Ollama.com",
"Query Generation Prompt": "", "Query Generation Prompt": "",
@ -742,18 +742,18 @@
"RAG Template": "RAG шаблон", "RAG Template": "RAG шаблон",
"Rating": "Оцена", "Rating": "Оцена",
"Re-rank models by topic similarity": "", "Re-rank models by topic similarity": "",
"Read": "", "Read": "Читање",
"Read Aloud": "Прочитај наглас", "Read Aloud": "Прочитај наглас",
"Reasoning Effort": "", "Reasoning Effort": "Јачина размишљања",
"Record voice": "Сними глас", "Record voice": "Сними глас",
"Redirecting you to OpenWebUI Community": "Преусмеравање на OpenWebUI заједницу", "Redirecting you to OpenWebUI Community": "Преусмеравање на OpenWebUI заједницу",
"Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative. (Default: 40)": "", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative. (Default: 40)": "",
"Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "", "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "",
"References from": "", "References from": "Референце од",
"Refused when it shouldn't have": "Одбијено када није требало", "Refused when it shouldn't have": "Одбијено када није требало",
"Regenerate": "Регенериши", "Regenerate": "Поново створи",
"Release Notes": "Напомене о издању", "Release Notes": "Напомене о издању",
"Relevance": "", "Relevance": "Примењивост",
"Remove": "Уклони", "Remove": "Уклони",
"Remove Model": "Уклони модел", "Remove Model": "Уклони модел",
"Rename": "Преименуј", "Rename": "Преименуј",
@ -764,46 +764,46 @@
"Reranking Model": "Модел поновног рангирања", "Reranking Model": "Модел поновног рангирања",
"Reranking model disabled": "Модел поновног рангирања онемогућен", "Reranking model disabled": "Модел поновног рангирања онемогућен",
"Reranking model set to \"{{reranking_model}}\"": "Модел поновног рангирања подешен на \"{{reranking_model}}\"", "Reranking model set to \"{{reranking_model}}\"": "Модел поновног рангирања подешен на \"{{reranking_model}}\"",
"Reset": "", "Reset": "Поврати",
"Reset All Models": "", "Reset All Models": "Поврати све моделе",
"Reset Upload Directory": "", "Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "", "Reset Vector Storage/Knowledge": "",
"Reset view": "", "Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "", "Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "", "Response splitting": "",
"Result": "", "Result": "Исход",
"Retrieval Query Generation": "", "Retrieval Query Generation": "",
"Rich Text Input for Chat": "", "Rich Text Input for Chat": "Богат унос текста у ћаскању",
"RK": "", "RK": "",
"Role": "Улога", "Role": "Улога",
"Rosé Pine": "Rosé Pine", "Rosé Pine": "Rosé Pine",
"Rosé Pine Dawn": "Rosé Pine Dawn", "Rosé Pine Dawn": "Rosé Pine Dawn",
"RTL": "ДНЛ", "RTL": "ДНЛ",
"Run": "", "Run": "Покрени",
"Running": "", "Running": "Покрећем",
"Save": "Сачувај", "Save": "Сачувај",
"Save & Create": "Сачувај и направи", "Save & Create": "Сачувај и направи",
"Save & Update": "Сачувај и ажурирај", "Save & Update": "Сачувај и ажурирај",
"Save As Copy": "", "Save As Copy": "Сачувај као копију",
"Save Tag": "", "Save Tag": "Сачувај ознаку",
"Saved": "", "Saved": "Сачувано",
"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": "Чување ћаскања директно у складиште вашег прегледача више није подржано. Одвојите тренутак да преузмете и избришете ваша ћаскања кликом на дугме испод. Не брините, можете лако поново увезти ваша ћаскања у бекенд кроз", "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": "Чување ћаскања директно у складиште вашег прегледача више није подржано. Одвојите тренутак да преузмете и избришете ваша ћаскања кликом на дугме испод. Не брините, можете лако поново увезти ваша ћаскања у бекенд кроз",
"Scroll to bottom when switching between branches": "", "Scroll to bottom when switching between branches": "Иди на дно странице приликом промене гране",
"Search": "Претражи", "Search": "Претражи",
"Search a model": "Претражи модел", "Search a model": "Претражи модел",
"Search Base": "", "Search Base": "Претражи базу",
"Search Chats": "Претражи ћаскања", "Search Chats": "Претражи ћаскања",
"Search Collection": "", "Search Collection": "Претражи колекцију",
"Search Filters": "", "Search Filters": "Претражи филтере",
"search for tags": "", "search for tags": "",
"Search Functions": "Претражи функције", "Search Functions": "Претражи функције",
"Search Knowledge": "", "Search Knowledge": "Претражи знање",
"Search Models": "Модели претраге", "Search Models": "Модели претраге",
"Search options": "", "Search options": "Опције претраге",
"Search Prompts": "Претражи упите", "Search Prompts": "Претражи упите",
"Search Result Count": "Број резултата претраге", "Search Result Count": "Број резултата претраге",
"Search the web": "", "Search the web": "Претражи веб",
"Search Tools": "", "Search Tools": "Алати претраге",
"SearchApi API Key": "", "SearchApi API Key": "",
"SearchApi Engine": "", "SearchApi Engine": "",
"Searched {{count}} sites": "", "Searched {{count}} sites": "",
@ -863,7 +863,7 @@
"Share Chat": "Подели ћаскање", "Share Chat": "Подели ћаскање",
"Share to OpenWebUI Community": "Подели са OpenWebUI заједницом", "Share to OpenWebUI Community": "Подели са OpenWebUI заједницом",
"Show": "Прикажи", "Show": "Прикажи",
"Show \"What's New\" modal on login": "", "Show \"What's New\" modal on login": "Прикажи \"Погледај шта је ново\" прозорче при пријави",
"Show Admin Details in Account Pending Overlay": "", "Show Admin Details in Account Pending Overlay": "",
"Show shortcuts": "Прикажи пречице", "Show shortcuts": "Прикажи пречице",
"Show your support!": "", "Show your support!": "",
@ -880,23 +880,23 @@
"Speech Playback Speed": "", "Speech Playback Speed": "",
"Speech recognition error: {{error}}": "Грешка у препознавању говора: {{error}}", "Speech recognition error: {{error}}": "Грешка у препознавању говора: {{error}}",
"Speech-to-Text Engine": "Мотор за говор у текст", "Speech-to-Text Engine": "Мотор за говор у текст",
"Stop": "", "Stop": "Заустави",
"Stop Sequence": "Секвенца заустављања", "Stop Sequence": "Секвенца заустављања",
"Stream Chat Response": "", "Stream Chat Response": "",
"STT Model": "", "STT Model": "STT модел",
"STT Settings": "STT подешавања", "STT Settings": "STT подешавања",
"Subtitle (e.g. about the Roman Empire)": "Поднаслов (нпр. о Римском царству)", "Subtitle (e.g. about the Roman Empire)": "Поднаслов (нпр. о Римском царству)",
"Success": "Успех", "Success": "Успех",
"Successfully updated.": "Успешно ажурирано.", "Successfully updated.": "Успешно ажурирано.",
"Suggested": "Предложено", "Suggested": "Предложено",
"Support": "", "Support": "Подршка",
"Support this plugin:": "", "Support this plugin:": "Подржите овај прикључак",
"Sync directory": "", "Sync directory": "Фасцикла усклађивања",
"System": "Систем", "System": "Систем",
"System Instructions": "", "System Instructions": "Системске инструкције",
"System Prompt": "Системски упит", "System Prompt": "Системски упит",
"Tags Generation": "", "Tags Generation": "Стварање ознака",
"Tags Generation Prompt": "", "Tags Generation Prompt": "Упит стварања ознака",
"Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting. (default: 1)": "", "Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting. (default: 1)": "",
"Tap to interrupt": "", "Tap to interrupt": "",
"Tavily API Key": "", "Tavily API Key": "",
@ -904,7 +904,7 @@
"Temperature": "Температура", "Temperature": "Температура",
"Template": "Шаблон", "Template": "Шаблон",
"Temporary Chat": "Привремено ћаскање", "Temporary Chat": "Привремено ћаскање",
"Text Splitter": "", "Text Splitter": "Раздвајач текста",
"Text-to-Speech Engine": "Мотор за текст у говор", "Text-to-Speech Engine": "Мотор за текст у говор",
"Tfs Z": "Tfs Z", "Tfs Z": "Tfs Z",
"Thanks for your feedback!": "Хвала на вашем коментару!", "Thanks for your feedback!": "Хвала на вашем коментару!",
@ -921,19 +921,19 @@
"The score should be a value between 0.0 (0%) and 1.0 (100%).": "Резултат треба да буде вредност између 0.0 (0%) и 1.0 (100%).", "The score should be a value between 0.0 (0%) and 1.0 (100%).": "Резултат треба да буде вредност између 0.0 (0%) и 1.0 (100%).",
"The temperature of the model. Increasing the temperature will make the model answer more creatively. (Default: 0.8)": "", "The temperature of the model. Increasing the temperature will make the model answer more creatively. (Default: 0.8)": "",
"Theme": "Тема", "Theme": "Тема",
"Thinking...": "", "Thinking...": "Размишљам...",
"This action cannot be undone. Do you wish to continue?": "", "This action cannot be undone. Do you wish to continue?": "Ова радња се не може опозвати. Да ли желите наставити?",
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Ово осигурава да су ваши вредни разговори безбедно сачувани у вашој бекенд бази података. Хвала вам!", "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Ово осигурава да су ваши вредни разговори безбедно сачувани у вашој бекенд бази података. Хвала вам!",
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "", "This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
"This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics. (Default: 24)": "", "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics. (Default: 24)": "",
"This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated. (Default: 128)": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated. (Default: 128)": "",
"This option will delete all existing files in the collection and replace them with newly uploaded files.": "", "This option will delete all existing files in the collection and replace them with newly uploaded files.": "",
"This response was generated by \"{{model}}\"": "", "This response was generated by \"{{model}}\"": "",
"This will delete": "", "This will delete": "Ово ће обрисати",
"This will delete <strong>{{NAME}}</strong> and <strong>all its contents</strong>.": "", "This will delete <strong>{{NAME}}</strong> and <strong>all its contents</strong>.": "Ово ће обрисати <strong>{{NAME}}</strong> и <strong>сав садржај унутар</strong>.",
"This will delete all models including custom models": "", "This will delete all models including custom models": "Ово ће обрисати све моделе укључујући прилагођене моделе",
"This will delete all models including custom models and cannot be undone.": "", "This will delete all models including custom models and cannot be undone.": "Ово ће обрисати све моделе укључујући прилагођене моделе и не може се опозвати.",
"This will reset the knowledge base and sync all files. Do you wish to continue?": "", "This will reset the knowledge base and sync all files. Do you wish to continue?": "Ово ће обрисати базу знања и ускладити све датотеке. Да ли желите наставити?",
"Thorough explanation": "Детаљно објашњење", "Thorough explanation": "Детаљно објашњење",
"Thought for {{DURATION}}": "", "Thought for {{DURATION}}": "",
"Tika": "", "Tika": "",
@ -945,7 +945,7 @@
"Title Auto-Generation": "Самостално стварање наслова", "Title Auto-Generation": "Самостално стварање наслова",
"Title cannot be an empty string.": "Наслов не може бити празан низ.", "Title cannot be an empty string.": "Наслов не може бити празан низ.",
"Title Generation Prompt": "Упит за стварање наслова", "Title Generation Prompt": "Упит за стварање наслова",
"TLS": "", "TLS": "ТЛС",
"To access the available model names for downloading,": "Да бисте приступили доступним именима модела за преузимање,", "To access the available model names for downloading,": "Да бисте приступили доступним именима модела за преузимање,",
"To access the GGUF models available for downloading,": "Да бисте приступили GGUF моделима доступним за преузимање,", "To access the GGUF models available for downloading,": "Да бисте приступили GGUF моделима доступним за преузимање,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "", "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
@ -955,20 +955,20 @@
"To select actions here, add them to the \"Functions\" workspace first.": "", "To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "", "To select filters here, add them to the \"Functions\" workspace first.": "",
"To select toolkits here, add them to the \"Tools\" workspace first.": "", "To select toolkits here, add them to the \"Tools\" workspace first.": "",
"Toast notifications for new updates": "", "Toast notifications for new updates": "Тост-обавештења за нове исправке",
"Today": "Данас", "Today": "Данас",
"Toggle settings": "Пребаци подешавања", "Toggle settings": "Пребаци подешавања",
"Toggle sidebar": "Пребаци бочну траку", "Toggle sidebar": "Пребаци бочну траку",
"Token": "", "Token": "Жетон",
"Tokens To Keep On Context Refresh (num_keep)": "", "Tokens To Keep On Context Refresh (num_keep)": "",
"Too verbose": "", "Too verbose": "Преопширно",
"Tool created successfully": "", "Tool created successfully": "Алат направљен успешно",
"Tool deleted successfully": "", "Tool deleted successfully": "Алат обрисан успешно",
"Tool Description": "", "Tool Description": "Опис алата",
"Tool ID": "", "Tool ID": "ИБ алата",
"Tool imported successfully": "", "Tool imported successfully": "Алат увезен успешно",
"Tool Name": "", "Tool Name": "Назив алата",
"Tool updated successfully": "", "Tool updated successfully": "Алат ажуриран успешно",
"Tools": "Алати", "Tools": "Алати",
"Tools Access": "Приступ алатима", "Tools Access": "Приступ алатима",
"Tools are a function calling system with arbitrary code execution": "", "Tools are a function calling system with arbitrary code execution": "",
@ -978,46 +978,46 @@
"Top P": "Топ П", "Top P": "Топ П",
"Transformers": "", "Transformers": "",
"Trouble accessing Ollama?": "Проблеми са приступом Ollama-и?", "Trouble accessing Ollama?": "Проблеми са приступом Ollama-и?",
"TTS Model": "", "TTS Model": "TTS модел",
"TTS Settings": "TTS подешавања", "TTS Settings": "TTS подешавања",
"TTS Voice": "", "TTS Voice": "TTS глас",
"Type": "Тип", "Type": "Тип",
"Type Hugging Face Resolve (Download) URL": "Унесите Hugging Face Resolve (Download) адресу", "Type Hugging Face Resolve (Download) URL": "Унесите Hugging Face Resolve (Download) адресу",
"Uh-oh! There was an issue with the response.": "", "Uh-oh! There was an issue with the response.": "",
"UI": "", "UI": "Прочеље",
"Unarchive All": "", "Unarchive All": "Деархивирај све",
"Unarchive All Archived Chats": "", "Unarchive All Archived Chats": "Деархивирај све архиве",
"Unarchive Chat": "", "Unarchive Chat": "Деархивирај ћаскање",
"Unlock mysteries": "", "Unlock mysteries": "Реши мистерије",
"Unpin": "", "Unpin": "Откачи",
"Unravel secrets": "", "Unravel secrets": "Разоткриј тајне",
"Untagged": "", "Untagged": "Неозначено",
"Update": "", "Update": "Ажурирај",
"Update and Copy Link": "Ажурирај и копирај везу", "Update and Copy Link": "Ажурирај и копирај везу",
"Update for the latest features and improvements.": "", "Update for the latest features and improvements.": "Ажурирајте за најновије могућности и побољшања.",
"Update password": "Ажурирај лозинку", "Update password": "Ажурирај лозинку",
"Updated": "", "Updated": "Ажурирано",
"Updated at": "", "Updated at": "Ажурирано у",
"Updated At": "", "Updated At": "Ажурирано у",
"Upload": "", "Upload": "Отпреми",
"Upload a GGUF model": "Отпреми GGUF модел", "Upload a GGUF model": "Отпреми GGUF модел",
"Upload directory": "", "Upload directory": "Отпреми фасциклу",
"Upload files": "", "Upload files": "Отпремање датотека",
"Upload Files": "Отпремање датотека", "Upload Files": "Отпремање датотека",
"Upload Pipeline": "", "Upload Pipeline": "Цевовод отпремања",
"Upload Progress": "Напредак отпремања", "Upload Progress": "Напредак отпремања",
"URL": "", "URL": "УРЛ",
"URL Mode": "Режим адресе", "URL Mode": "Режим адресе",
"Use '#' in the prompt input to load and include your knowledge.": "", "Use '#' in the prompt input to load and include your knowledge.": "",
"Use Gravatar": "Користи Граватар", "Use Gravatar": "Користи Граватар",
"Use groups to group your users and assign permissions.": "Користите групе да бисте разврстали ваше кориснике и доделили овлашћења.", "Use groups to group your users and assign permissions.": "Користите групе да бисте разврстали ваше кориснике и доделили овлашћења.",
"Use Initials": "Користи иницијале", "Use Initials": "Користи иницијале",
"use_mlock (Ollama)": "усе _млоцк (Оллама)", "use_mlock (Ollama)": "use_mlock (Ollama)",
"use_mmap (Ollama)": "усе _ммап (Оллама)", "use_mmap (Ollama)": "use_mmap (Ollama)",
"user": "корисник", "user": "корисник",
"User": "", "User": "Корисник",
"User location successfully retrieved.": "", "User location successfully retrieved.": "Корисничка локација успешно добављена.",
"Username": "", "Username": "Корисничко име",
"Users": "Корисници", "Users": "Корисници",
"Using the default arena model with all models. Click the plus button to add custom models.": "", "Using the default arena model with all models. Click the plus button to add custom models.": "",
"Utilize": "Искористи", "Utilize": "Искористи",
@ -1029,23 +1029,23 @@
"variable to have them replaced with clipboard content.": "променљива за замену са садржајем оставе.", "variable to have them replaced with clipboard content.": "променљива за замену са садржајем оставе.",
"Version": "Издање", "Version": "Издање",
"Version {{selectedVersion}} of {{totalVersions}}": "", "Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "", "View Replies": "Погледај одговоре",
"Visibility": "", "Visibility": "Видљивост",
"Voice": "", "Voice": "Глас",
"Voice Input": "", "Voice Input": "Гласовни унос",
"Warning": "Упозорење", "Warning": "Упозорење",
"Warning:": "", "Warning:": "Упозорење:",
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "", "Warning: Enabling this will allow users to upload arbitrary code on the server.": "",
"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Упозорење: ако ажурирате или промените ваш модел уградње, мораћете поново да увезете све документе.", "Warning: If you update or change your embedding model, you will need to re-import all documents.": "Упозорење: ако ажурирате или промените ваш модел уградње, мораћете поново да увезете све документе.",
"Web": "Веб", "Web": "Веб",
"Web API": "", "Web API": "Веб АПИ",
"Web Loader Settings": "Подешавања веб учитавача", "Web Loader Settings": "Подешавања веб учитавача",
"Web Search": "Wеб претрага", "Web Search": "Веб претрага",
"Web Search Engine": "Wеб претраживач", "Web Search Engine": "Веб претраживач",
"Web Search Query Generation": "", "Web Search Query Generation": "",
"Webhook URL": "Адреса веб-куке", "Webhook URL": "Адреса веб-куке",
"WebUI Settings": "Подешавања веб интерфејса", "WebUI Settings": "Подешавања веб интерфејса",
"WebUI URL": "", "WebUI URL": "WebUI адреса",
"WebUI will make requests to \"{{url}}/api/chat\"": "", "WebUI will make requests to \"{{url}}/api/chat\"": "",
"WebUI will make requests to \"{{url}}/chat/completions\"": "", "WebUI will make requests to \"{{url}}/chat/completions\"": "",
"What are you trying to achieve?": "", "What are you trying to achieve?": "",
@ -1054,21 +1054,21 @@
"When enabled, the model will respond to each chat message in real-time, generating a response as soon as the user sends a message. This mode is useful for live chat applications, but may impact performance on slower hardware.": "", "When enabled, the model will respond to each chat message in real-time, generating a response as soon as the user sends a message. This mode is useful for live chat applications, but may impact performance on slower hardware.": "",
"wherever you are": "", "wherever you are": "",
"Whisper (Local)": "", "Whisper (Local)": "",
"Why?": "", "Why?": "Зашто?",
"Widescreen Mode": "", "Widescreen Mode": "Режим широког екрана",
"Won": "Победа", "Won": "Победа",
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text. (Default: 0.9)": "", "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text. (Default: 0.9)": "",
"Workspace": "Радни простор", "Workspace": "Радни простор",
"Workspace Permissions": "", "Workspace Permissions": "",
"Write": "", "Write": "Пиши",
"Write a prompt suggestion (e.g. Who are you?)": "Напишите предлог упита (нпр. „ко си ти?“)", "Write a prompt suggestion (e.g. Who are you?)": "Напишите предлог упита (нпр. „ко си ти?“)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Напишите сажетак у 50 речи који резимира [тему или кључну реч].", "Write a summary in 50 words that summarizes [topic or keyword].": "Напишите сажетак у 50 речи који резимира [тему или кључну реч].",
"Write something...": "", "Write something...": "Упишите нешто...",
"Write your model template content here": "", "Write your model template content here": "",
"Yesterday": "Јуче", "Yesterday": "Јуче",
"You": "Ти", "You": "Ти",
"You can only chat with a maximum of {{maxCount}} file(s) at a time.": "", "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "",
"You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Можете учинити разговор са ВЈМ-овима приснијим додавањем сећања користећи „Управљај“ думе испод и тиме их учинити приснијим и кориснијим.",
"You cannot upload an empty file.": "", "You cannot upload an empty file.": "",
"You do not have permission to access this feature.": "", "You do not have permission to access this feature.": "",
"You do not have permission to upload files.": "", "You do not have permission to upload files.": "",

View File

@ -61,9 +61,16 @@ self.onmessage = async (event) => {
try { try {
self.result = await self.pyodide.runPythonAsync(code); self.result = await self.pyodide.runPythonAsync(code);
try {
self.result = self.result.toJSON();
} catch (error) {
console.error(error);
}
} catch (error) { } catch (error) {
self.stderr = error.toString(); self.stderr = error.toString();
} }
self.postMessage({ id, result: self.result, stdout: self.stdout, stderr: self.stderr }); self.postMessage({ id, result: self.result, stdout: self.stdout, stderr: self.stderr });
}; };

View File

@ -17,12 +17,12 @@ const config = {
}) })
}, },
vitePlugin: { vitePlugin: {
inspector: { // inspector: {
toggleKeyCombo: 'meta-shift', // Key combination to open the inspector // toggleKeyCombo: 'meta-shift', // Key combination to open the inspector
holdMode: false, // Enable or disable hold mode // holdMode: false, // Enable or disable hold mode
showToggleButton: 'always', // Show toggle button ('always', 'active', 'never') // showToggleButton: 'always', // Show toggle button ('always', 'active', 'never')
toggleButtonPos: 'bottom-right' // Position of the toggle button // toggleButtonPos: 'bottom-right' // Position of the toggle button
} // }
}, },
onwarn: (warning, handler) => { onwarn: (warning, handler) => {
const { code } = warning; const { code } = warning;