Merge pull request #8071 from open-webui/dev

0.5.1
This commit is contained in:
Timothy Jaeryang Baek 2024-12-25 23:31:01 -07:00 committed by GitHub
commit 2bdf99b398
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
57 changed files with 315 additions and 155 deletions

View File

@ -5,6 +5,20 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.5.1] - 2024-12-25
### Added
- **🔕 Notification Sound Toggle**: Added a new setting under Settings > Interface to disable notification sounds, giving you greater control over your workspace environment and focus.
### Fixed
- **🔄 Non-Streaming Response Visibility**: Resolved an issue where non-streaming responses were not displayed, ensuring all responses are now reliably shown in your conversations.
- **🖋️ Title Generation with OpenAI APIs**: Fixed a bug preventing title generation when using OpenAI APIs, restoring the ability to automatically generate chat titles for smoother organization.
- **👥 Admin Panel User List**: Addressed the issue where only 50 users were visible in the admin panel. You can now manage and view all users without restrictions.
- **🖼️ Image Generation Error**: Fixed the issue causing 'get_automatic1111_api_auth()' errors in image generation, ensuring seamless creative workflows.
- **⚙️ Pipeline Settings Loading Issue**: Resolved a problem where pipeline settings were stuck at the loading screen, restoring full configurability in the admin panel.
## [0.5.0] - 2024-12-25
### Added

View File

@ -613,9 +613,8 @@ async def generate_chat_completion(
payload["max_tokens"] = payload["max_completion_tokens"]
del payload["max_completion_tokens"]
# TODO: check if below is needed
# if "max_tokens" in payload and "max_completion_tokens" in payload:
# del payload["max_tokens"]
if "max_tokens" in payload and "max_completion_tokens" in payload:
del payload["max_tokens"]
# Convert the modified body back to JSON
payload = json.dumps(payload)

View File

@ -748,14 +748,92 @@ async def process_chat_payload(request, form_data, metadata, user, model):
async def process_chat_response(
request, response, form_data, user, events, metadata, tasks
):
if not isinstance(response, StreamingResponse):
return response
async def background_tasks_handler():
message_map = Chats.get_messages_by_chat_id(metadata["chat_id"])
message = message_map.get(metadata["message_id"])
if not any(
content_type in response.headers["Content-Type"]
for content_type in ["text/event-stream", "application/x-ndjson"]
):
return response
if message:
messages = get_message_list(message_map, message.get("id"))
if tasks:
if TASKS.TITLE_GENERATION in tasks:
if tasks[TASKS.TITLE_GENERATION]:
res = await generate_title(
request,
{
"model": message["model"],
"messages": messages,
"chat_id": metadata["chat_id"],
},
user,
)
if res and isinstance(res, dict):
title = (
res.get("choices", [])[0]
.get("message", {})
.get(
"content",
message.get("content", "New Chat"),
)
)
Chats.update_chat_title_by_id(metadata["chat_id"], title)
await event_emitter(
{
"type": "chat:title",
"data": title,
}
)
elif len(messages) == 2:
title = messages[0].get("content", "New Chat")
Chats.update_chat_title_by_id(metadata["chat_id"], title)
await event_emitter(
{
"type": "chat:title",
"data": message.get("content", "New Chat"),
}
)
if TASKS.TAGS_GENERATION in tasks and tasks[TASKS.TAGS_GENERATION]:
res = await generate_chat_tags(
request,
{
"model": message["model"],
"messages": messages,
"chat_id": metadata["chat_id"],
},
user,
)
if res and isinstance(res, dict):
tags_string = (
res.get("choices", [])[0]
.get("message", {})
.get("content", "")
)
tags_string = tags_string[
tags_string.find("{") : tags_string.rfind("}") + 1
]
try:
tags = json.loads(tags_string).get("tags", [])
Chats.update_chat_tags_by_id(
metadata["chat_id"], tags, user
)
await event_emitter(
{
"type": "chat:tags",
"data": tags,
}
)
except Exception as e:
print(f"Error: {e}")
event_emitter = None
if (
@ -768,6 +846,79 @@ async def process_chat_response(
):
event_emitter = get_event_emitter(metadata)
if not isinstance(response, StreamingResponse):
if event_emitter:
if "selected_model_id" in response:
Chats.upsert_message_to_chat_by_id_and_message_id(
metadata["chat_id"],
metadata["message_id"],
{
"selectedModelId": response["selected_model_id"],
},
)
if response.get("choices", [])[0].get("message", {}).get("content"):
content = response["choices"][0]["message"]["content"]
if content:
await event_emitter(
{
"type": "chat:completion",
"data": response,
}
)
title = Chats.get_chat_title_by_id(metadata["chat_id"])
await event_emitter(
{
"type": "chat:completion",
"data": {
"done": True,
"content": content,
"title": title,
},
}
)
# Save message in the database
Chats.upsert_message_to_chat_by_id_and_message_id(
metadata["chat_id"],
metadata["message_id"],
{
"content": content,
},
)
# Send a webhook notification if the user is not active
if get_user_id_from_session_pool(metadata["session_id"]) is None:
webhook_url = Users.get_user_webhook_url_by_id(user.id)
if webhook_url:
post_webhook(
webhook_url,
f"{title} - {request.app.state.config.WEBUI_URL}/c/{metadata['chat_id']}\n\n{content}",
{
"action": "chat",
"message": content,
"title": title,
"url": f"{request.app.state.config.WEBUI_URL}/c/{metadata['chat_id']}",
},
)
await background_tasks_handler()
return response
else:
return response
if not any(
content_type in response.headers["Content-Type"]
for content_type in ["text/event-stream", "application/x-ndjson"]
):
return response
if event_emitter:
task_id = str(uuid4()) # Create a unique task ID.
@ -877,99 +1028,7 @@ async def process_chat_response(
}
)
message_map = Chats.get_messages_by_chat_id(metadata["chat_id"])
message = message_map.get(metadata["message_id"])
if message:
messages = get_message_list(message_map, message.get("id"))
if tasks:
if TASKS.TITLE_GENERATION in tasks:
if tasks[TASKS.TITLE_GENERATION]:
res = await generate_title(
request,
{
"model": message["model"],
"messages": messages,
"chat_id": metadata["chat_id"],
},
user,
)
if res and isinstance(res, dict):
title = (
res.get("choices", [])[0]
.get("message", {})
.get(
"content",
message.get("content", "New Chat"),
)
)
Chats.update_chat_title_by_id(
metadata["chat_id"], title
)
await event_emitter(
{
"type": "chat:title",
"data": title,
}
)
elif len(messages) == 2:
title = messages[0].get("content", "New Chat")
Chats.update_chat_title_by_id(
metadata["chat_id"], title
)
await event_emitter(
{
"type": "chat:title",
"data": message.get("content", "New Chat"),
}
)
if (
TASKS.TAGS_GENERATION in tasks
and tasks[TASKS.TAGS_GENERATION]
):
res = await generate_chat_tags(
request,
{
"model": message["model"],
"messages": messages,
"chat_id": metadata["chat_id"],
},
user,
)
if res and isinstance(res, dict):
tags_string = (
res.get("choices", [])[0]
.get("message", {})
.get("content", "")
)
tags_string = tags_string[
tags_string.find("{") : tags_string.rfind("}") + 1
]
try:
tags = json.loads(tags_string).get("tags", [])
Chats.update_chat_tags_by_id(
metadata["chat_id"], tags, user
)
await event_emitter(
{
"type": "chat:tags",
"data": tags,
}
)
except Exception as e:
print(f"Error: {e}")
await background_tasks_handler()
except asyncio.CancelledError:
print("Task was cancelled!")
await event_emitter({"type": "task-cancelled"})

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{
"name": "open-webui",
"version": "0.5.0",
"version": "0.5.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "open-webui",
"version": "0.5.0",
"version": "0.5.1",
"dependencies": {
"@codemirror/lang-javascript": "^6.2.2",
"@codemirror/lang-python": "^6.1.6",

View File

@ -1,6 +1,6 @@
{
"name": "open-webui",
"version": "0.5.0",
"version": "0.5.1",
"private": true,
"scripts": {
"dev": "npm run pyodide:fetch && vite dev --host",

View File

@ -1,4 +1,5 @@
<script lang="ts">
import { settings } from '$lib/stores';
import DOMPurify from 'dompurify';
import { marked } from 'marked';
@ -11,8 +12,10 @@
export let content: string;
onMount(() => {
const audio = new Audio(`/audio/notification.mp3`);
audio.play();
if ($settings?.notificationSound ?? true) {
const audio = new Audio(`/audio/notification.mp3`);
audio.play();
}
});
</script>

View File

@ -1064,37 +1064,43 @@
}
if (choices) {
let value = choices[0]?.delta?.content ?? '';
if (message.content == '' && value == '\n') {
console.log('Empty response');
if (choices[0]?.message?.content) {
// Non-stream response
message.content += choices[0]?.message?.content;
} else {
message.content += value;
// Stream response
let value = choices[0]?.delta?.content ?? '';
if (message.content == '' && value == '\n') {
console.log('Empty response');
} else {
message.content += value;
if (navigator.vibrate && ($settings?.hapticFeedback ?? false)) {
navigator.vibrate(5);
}
if (navigator.vibrate && ($settings?.hapticFeedback ?? false)) {
navigator.vibrate(5);
}
// Emit chat event for TTS
const messageContentParts = getMessageContentParts(
message.content,
$config?.audio?.tts?.split_on ?? 'punctuation'
);
messageContentParts.pop();
// dispatch only last sentence and make sure it hasn't been dispatched before
if (
messageContentParts.length > 0 &&
messageContentParts[messageContentParts.length - 1] !== message.lastSentence
) {
message.lastSentence = messageContentParts[messageContentParts.length - 1];
eventTarget.dispatchEvent(
new CustomEvent('chat', {
detail: {
id: message.id,
content: messageContentParts[messageContentParts.length - 1]
}
})
// Emit chat event for TTS
const messageContentParts = getMessageContentParts(
message.content,
$config?.audio?.tts?.split_on ?? 'punctuation'
);
messageContentParts.pop();
// dispatch only last sentence and make sure it hasn't been dispatched before
if (
messageContentParts.length > 0 &&
messageContentParts[messageContentParts.length - 1] !== message.lastSentence
) {
message.lastSentence = messageContentParts[messageContentParts.length - 1];
eventTarget.dispatchEvent(
new CustomEvent('chat', {
detail: {
id: message.id,
content: messageContentParts[messageContentParts.length - 1]
}
})
);
}
}
}
}

View File

@ -32,6 +32,7 @@
let showUsername = false;
let richTextInput = true;
let largeTextAsFile = false;
let notificationSound = true;
let landingPageMode = '';
let chatBubble = true;
@ -81,6 +82,11 @@
saveSettings({ showUpdateToast: showUpdateToast });
};
const toggleNotificationSound = async () => {
notificationSound = !notificationSound;
saveSettings({ notificationSound: notificationSound });
};
const toggleShowChangelog = async () => {
showChangelog = !showChangelog;
saveSettings({ showChangelog: showChangelog });
@ -216,6 +222,8 @@
chatDirection = $settings.chatDirection ?? 'LTR';
userLocation = $settings.userLocation ?? false;
notificationSound = $settings.notificationSound ?? true;
hapticFeedback = $settings.hapticFeedback ?? false;
imageCompression = $settings.imageCompression ?? false;
@ -371,6 +379,28 @@
</div>
</div>
<div>
<div class=" py-0.5 flex w-full justify-between">
<div class=" self-center text-xs">
{$i18n.t('Notification Sound')}
</div>
<button
class="p-1 px-3 text-xs flex rounded transition"
on:click={() => {
toggleNotificationSound();
}}
type="button"
>
{#if notificationSound === true}
<span class="ml-2 self-center">{$i18n.t('On')}</span>
{:else}
<span class="ml-2 self-center">{$i18n.t('Off')}</span>
{/if}
</button>
</div>
</div>
{#if $user.role === 'admin'}
<div>
<div class=" py-0.5 flex w-full justify-between">

View File

@ -630,6 +630,7 @@
"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.": "ملاحظة: إذا قمت بتعيين الحد الأدنى من النقاط، فلن يؤدي البحث إلا إلى إرجاع المستندات التي لها نقاط أكبر من أو تساوي الحد الأدنى من النقاط.",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "إشعارات",
"November": "نوفمبر",

View File

@ -630,6 +630,7 @@
"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.": "Забележка: Ако зададете минимален резултат, търсенето ще върне само документи с резултат, по-голям или равен на минималния резултат.",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Десктоп Известия",
"November": "Ноември",

View File

@ -630,6 +630,7 @@
"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.": "দ্রষ্টব্য: আপনি যদি ন্যূনতম স্কোর সেট করেন তবে অনুসন্ধানটি কেবলমাত্র ন্যূনতম স্কোরের চেয়ে বেশি বা সমান স্কোর সহ নথিগুলি ফেরত দেবে।",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "নোটিফিকেশনসমূহ",
"November": "নভেম্বর",

View File

@ -630,6 +630,7 @@
"Not helpful": "No ajuda",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: Si s'estableix una puntuació mínima, la cerca només retornarà documents amb una puntuació major o igual a la puntuació mínima.",
"Notes": "Notes",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Notificacions",
"November": "Novembre",

View File

@ -630,6 +630,7 @@
"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.": "",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Mga pahibalo sa desktop",
"November": "",

View File

@ -630,6 +630,7 @@
"Not helpful": "Nepomocné",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Poznámka: Pokud nastavíte minimální skóre, vyhledávání vrátí pouze dokumenty s hodnocením, které je větší nebo rovno zadanému minimálnímu skóre.",
"Notes": "Poznámky",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Oznámení",
"November": "Listopad",

View File

@ -630,6 +630,7 @@
"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.": "Bemærk: Hvis du angiver en minimumscore, returnerer søgningen kun dokumenter med en score, der er større end eller lig med minimumscoren.",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Notifikationer",
"November": "November",

View File

@ -630,6 +630,7 @@
"Not helpful": "Nich hilfreich",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Hinweis: Wenn Sie eine Mindestpunktzahl festlegen, werden in der Suche nur Dokumente mit einer Punktzahl größer oder gleich der Mindestpunktzahl zurückgegeben.",
"Notes": "Notizen",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Benachrichtigungen",
"November": "November",

View File

@ -630,6 +630,7 @@
"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.": "",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Notifications",
"November": "",

View File

@ -630,6 +630,7 @@
"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.": "Σημείωση: Αν ορίσετε ένα ελάχιστο score, η αναζήτηση θα επιστρέψει μόνο έγγραφα με score μεγαλύτερο ή ίσο με το ελάχιστο score.",
"Notes": "Σημειώσεις",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Ειδοποιήσεις",
"November": "Νοέμβριος",

View File

@ -630,6 +630,7 @@
"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.": "",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "",
"November": "",

View File

@ -630,6 +630,7 @@
"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.": "",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "",
"November": "",

View File

@ -630,6 +630,7 @@
"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.": "Nota: Si estableces una puntuación mínima, la búsqueda sólo devolverá documentos con una puntuación mayor o igual a la puntuación mínima.",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Notificaciones",
"November": "Noviembre",

View File

@ -630,6 +630,7 @@
"Not helpful": "Ez da lagungarria",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Oharra: Gutxieneko puntuazio bat ezartzen baduzu, bilaketak gutxieneko puntuazioa baino handiagoa edo berdina duten dokumentuak soilik itzuliko ditu.",
"Notes": "Oharrak",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Jakinarazpenak",
"November": "Azaroa",

View File

@ -630,6 +630,7 @@
"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.": "توجه: اگر حداقل نمره را تعیین کنید، جستجو تنها اسنادی را با نمره بیشتر یا برابر با حداقل نمره باز می گرداند.",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "اعلان",
"November": "نوامبر",

View File

@ -630,6 +630,7 @@
"Not helpful": "Ei hyödyllinen",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Huomautus: Jos asetat vähimmäispistemäärän, haku palauttaa vain sellaiset asiakirjat, joiden pistemäärä on vähintään vähimmäismäärä.",
"Notes": "Muistiinpanot",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Ilmoitukset",
"November": "marraskuu",

View File

@ -630,6 +630,7 @@
"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 : Si vous définissez un score minimum, seuls les documents ayant un score supérieur ou égal à ce score minimum seront retournés par la recherche.",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Notifications",
"November": "Novembre",

View File

@ -630,6 +630,7 @@
"Not helpful": "Pas utile",
"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 : Si vous définissez un score minimum, seuls les documents ayant un score supérieur ou égal à ce score minimum seront retournés par la recherche.",
"Notes": "Notes",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Notifications",
"November": "Novembre",

View File

@ -630,6 +630,7 @@
"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.": "הערה: אם תקבע ציון מינימלי, החיפוש יחזיר רק מסמכים עם ציון שגבוה או שווה לציון המינימלי.",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "התראות",
"November": "נובמבר",

View File

@ -630,6 +630,7 @@
"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.": "ध्यान दें: यदि आप न्यूनतम स्कोर निर्धारित करते हैं, तो खोज केवल न्यूनतम स्कोर से अधिक या उसके बराबर स्कोर वाले दस्तावेज़ वापस लाएगी।",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "सूचनाएं",
"November": "नवंबर",

View File

@ -630,6 +630,7 @@
"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.": "Napomena: Ako postavite minimalnu ocjenu, pretraga će vratiti samo dokumente s ocjenom većom ili jednakom minimalnoj ocjeni.",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Obavijesti",
"November": "Studeni",

View File

@ -630,6 +630,7 @@
"Not helpful": "Nem segítőkész",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Megjegyzés: Ha minimum pontszámot állít be, a keresés csak olyan dokumentumokat ad vissza, amelyek pontszáma nagyobb vagy egyenlő a minimum pontszámmal.",
"Notes": "Jegyzetek",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Értesítések",
"November": "November",

View File

@ -630,6 +630,7 @@
"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.": "Catatan: Jika Anda menetapkan skor minimum, pencarian hanya akan mengembalikan dokumen dengan skor yang lebih besar atau sama dengan skor minimum.",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Pemberitahuan",
"November": "November",

View File

@ -630,6 +630,7 @@
"Not helpful": "Gan a bheith cabhrach",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nóta: Má shocraíonn tú íosscór, ní thabharfaidh an cuardach ach doiciméid a bhfuil scór níos mó ná nó cothrom leis an scór íosta ar ais.",
"Notes": "Nótaí",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Fógraí",
"November": "Samhain",

View File

@ -630,6 +630,7 @@
"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.": "Nota: se imposti un punteggio minimo, la ricerca restituirà solo i documenti con un punteggio maggiore o uguale al punteggio minimo.",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Notifiche desktop",
"November": "Novembre",

View File

@ -630,6 +630,7 @@
"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.": "注意:最小スコアを設定した場合、検索は最小スコア以上のスコアを持つドキュメントのみを返します。",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "デスクトップ通知",
"November": "11月",

View File

@ -630,6 +630,7 @@
"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.": "შენიშვნა: თუ თქვენ დააყენებთ მინიმალურ ქულას, ძებნა დააბრუნებს მხოლოდ დოკუმენტებს მინიმალური ქულის მეტი ან ტოლი ქულით.",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "შეტყობინება",
"November": "ნოემბერი",

View File

@ -630,6 +630,7 @@
"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.": "참고: 최소 점수를 설정하면, 검색 결과로 최소 점수 이상의 점수를 가진 문서만 반환합니다.",
"Notes": "노트",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "알림",
"November": "11월",

View File

@ -630,6 +630,7 @@
"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.": "Jei turite minimalų įvertį, paieška gražins tik tą informaciją, kuri viršyje šį įvertį",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Pranešimai",
"November": "lapkritis",

View File

@ -630,6 +630,7 @@
"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.": "Nota: Jika anda menetapkan skor minimum, carian hanya akan mengembalikan dokumen dengan skor lebih besar daripada atau sama dengan skor minimum.",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Pemberitahuan",
"November": "November",

View File

@ -630,6 +630,7 @@
"Not helpful": "Ikke nyttig",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Merk: Hvis du setter en minimumspoengsum, returnerer søket kun dokumenter med en poengsum som er større enn eller lik minimumspoengsummen.",
"Notes": "Notater",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Varsler",
"November": "november",

View File

@ -630,6 +630,7 @@
"Not helpful": "Niet nuttig",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Opmerking: Als je een minimumscore instelt, levert de zoekopdracht alleen documenten op met een score groter dan of gelijk aan de minimumscore.",
"Notes": "Aantekeningen",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Notificaties",
"November": "November",

View File

@ -630,6 +630,7 @@
"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.": "ਨੋਟ: ਜੇ ਤੁਸੀਂ ਘੱਟੋ-ਘੱਟ ਸਕੋਰ ਸੈੱਟ ਕਰਦੇ ਹੋ, ਤਾਂ ਖੋਜ ਸਿਰਫ਼ ਉਹੀ ਡਾਕੂਮੈਂਟ ਵਾਪਸ ਕਰੇਗੀ ਜਿਨ੍ਹਾਂ ਦਾ ਸਕੋਰ ਘੱਟੋ-ਘੱਟ ਸਕੋਰ ਦੇ ਬਰਾਬਰ ਜਾਂ ਵੱਧ ਹੋਵੇ।",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "ਸੂਚਨਾਵਾਂ",
"November": "ਨਵੰਬਰ",

View File

@ -630,6 +630,7 @@
"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.": "Uwaga: Jeśli ustawisz minimalny wynik, szukanie zwróci jedynie dokumenty z wynikiem większym lub równym minimalnemu.",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Powiadomienia",
"November": "Listopad",

View File

@ -630,6 +630,7 @@
"Not helpful": "Não é útil",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: Se você definir uma pontuação mínima, a pesquisa retornará apenas documentos com pontuação igual ou superior à pontuação mínima.",
"Notes": "Notas",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Notificações",
"November": "Novembro",

View File

@ -630,6 +630,7 @@
"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.": "Nota: Se você definir uma pontuação mínima, a pesquisa só retornará documentos com uma pontuação maior ou igual à pontuação mínima.",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Notificações da Área de Trabalho",
"November": "Novembro",

View File

@ -630,6 +630,7 @@
"Not helpful": "Nu este de ajutor",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Notă: Dacă setați un scor minim, căutarea va returna doar documente cu un scor mai mare sau egal cu scorul minim.",
"Notes": "Note",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Notificări",
"November": "Noiembrie",

View File

@ -630,6 +630,7 @@
"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.": "Обратите внимание: Если вы установите минимальный балл, поиск будет возвращать только документы с баллом больше или равным минимальному баллу.",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Уведомления",
"November": "Ноябрь",

View File

@ -630,6 +630,7 @@
"Not helpful": "Nepomocné",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Poznámka: Ak nastavíte minimálne skóre, vyhľadávanie vráti iba dokumenty s hodnotením, ktoré je väčšie alebo rovné zadanému minimálnemu skóre.",
"Notes": "Poznámky",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Oznámenia",
"November": "November",

View File

@ -630,6 +630,7 @@
"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.": "Напомена: ако подесите најмањи резултат, претрага ће вратити само документе са резултатом већим или једнаким најмањем резултату.",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Обавештења",
"November": "Новембар",

View File

@ -630,6 +630,7 @@
"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.": "Obs: Om du anger en tröskel kommer sökningen endast att returnera dokument med ett betyg som är större än eller lika med tröskeln.",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Notifikationer",
"November": "november",

View File

@ -630,6 +630,7 @@
"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.": "หมายเหตุ: หากคุณตั้งค่าคะแนนขั้นต่ำ การค้นหาจะคืนเอกสารที่มีคะแนนมากกว่าหรือเท่ากับคะแนนขั้นต่ำเท่านั้น",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "การแจ้งเตือน",
"November": "พฤศจิกายน",

View File

@ -630,6 +630,7 @@
"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.": "",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "",
"November": "",

View File

@ -630,6 +630,7 @@
"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.": "Not: Minimum bir skor belirlerseniz, arama yalnızca minimum skora eşit veya daha yüksek bir skora sahip belgeleri getirecektir.",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Bildirimler",
"November": "Kasım",

View File

@ -76,8 +76,8 @@
"Archive All Chats": "Архівувати всі чати",
"Archived Chats": "Архівовані чати",
"archived-chat-export": "експорт-архівованих-чатів",
"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 channel?": "Ви впевнені, що хочете видалити цей канал?",
"Are you sure you want to delete this message?": "Ви впевнені, що хочете видалити це повідомлення?",
"Are you sure you want to unarchive all archived chats?": "Ви впевнені, що хочете розархівувати всі архівовані чати?",
"Are you sure?": "Ви впевнені?",
"Arena Models": "Моделі Arena",
@ -110,7 +110,7 @@
"Batch Size (num_batch)": "Розмір партії (num_batch)",
"before": "до того, як",
"Being lazy": "Не поспішати",
"Beta": "",
"Beta": "Beta",
"Bing Search V7 Endpoint": "Точка доступу Bing Search V7",
"Bing Search V7 Subscription Key": "Ключ підписки Bing Search V7",
"Brave Search API Key": "Ключ API пошуку Brave",
@ -124,8 +124,8 @@
"Capture": "Захоплення",
"Certificate Path": "Шлях до сертифіката",
"Change Password": "Змінити пароль",
"Channel Name": "",
"Channels": "",
"Channel Name": "Назва каналу",
"Channels": "Канали",
"Character": "Персонаж",
"Character limit for autocomplete generation input": "Ліміт символів для введення при генерації автозаповнення",
"Chart new frontiers": "Відкривати нові горизонти",
@ -181,7 +181,7 @@
"Confirm": "Підтвердити",
"Confirm Password": "Підтвердіть пароль",
"Confirm your action": "Підтвердіть свою дію",
"Confirm your new password": "",
"Confirm your new password": "Підтвердіть свій новий пароль",
"Connections": "З'єднання",
"Contact Admin for WebUI Access": "Зверніться до адміна для отримання доступу до WebUI",
"Content": "Зміст",
@ -208,7 +208,7 @@
"Create a model": "Створити модель",
"Create Account": "Створити обліковий запис",
"Create Admin Account": "Створити обліковий запис адміністратора",
"Create Channel": "",
"Create Channel": "Створити канал",
"Create Group": "Створити групу",
"Create Knowledge": "Створити знання",
"Create new key": "Створити новий ключ",
@ -244,7 +244,7 @@
"Delete chat?": "Видалити чат?",
"Delete folder?": "Видалити папку?",
"Delete function?": "Видалити функцію?",
"Delete Message": "",
"Delete Message": "Видалити повідомлення",
"Delete prompt?": "Видалити промт?",
"delete this link": "видалити це посилання",
"Delete tool?": "Видалити інструмент?",
@ -297,7 +297,7 @@
"e.g. Tools for performing various operations": "напр., Інструменти для виконання різних операцій",
"Edit": "Редагувати",
"Edit Arena Model": "Редагувати модель Arena",
"Edit Channel": "",
"Edit Channel": "Редагувати канал",
"Edit Connection": "Редагувати з'єднання",
"Edit Default Permissions": "Редагувати дозволи за замовчуванням",
"Edit Memory": "Редагувати пам'ять",
@ -364,20 +364,20 @@
"Enter stop sequence": "Введіть символ зупинки",
"Enter system prompt": "Введіть системний промт",
"Enter Tavily API Key": "Введіть ключ API Tavily",
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "",
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Введіть публічний URL вашого WebUI. Цей URL буде використовуватися для генерування посилань у сповіщеннях.",
"Enter Tika Server URL": "Введіть URL-адресу сервера Tika ",
"Enter Top K": "Введіть Top K",
"Enter URL (e.g. http://127.0.0.1:7860/)": "Введіть URL-адресу (напр., http://127.0.0.1:7860/)",
"Enter URL (e.g. http://localhost:11434)": "Введіть URL-адресу (напр., http://localhost:11434)",
"Enter your current password": "",
"Enter your current password": "Введіть ваш поточний пароль",
"Enter Your Email": "Введіть вашу ел. пошту",
"Enter Your Full Name": "Введіть ваше ім'я",
"Enter your message": "Введіть повідомлення ",
"Enter your new password": "",
"Enter your new password": "Введіть ваш новий пароль",
"Enter Your Password": "Введіть ваш пароль",
"Enter Your Role": "Введіть вашу роль",
"Enter Your Username": "Введіть своє ім'я користувача",
"Enter your webhook URL": "",
"Enter your webhook URL": "Введіть URL вашого вебхука",
"Error": "Помилка",
"ERROR": "ПОМИЛКА",
"Error accessing Google Drive: {{error}}": "Помилка доступу до Google Drive: {{error}}",
@ -483,10 +483,10 @@
"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": "Запаліть цікавість",
"Image Compression": "",
"Image Compression": "Стиснення зображень",
"Image Generation (Experimental)": "Генерування зображень (експериментально)",
"Image Generation Engine": "Механізм генерації зображень",
"Image Max Compression Size": "",
"Image Max Compression Size": "Максимальний розмір стиснення зображення",
"Image Settings": "Налаштування зображення",
"Images": "Зображення",
"Import Chats": "Імпорт чатів",
@ -605,9 +605,9 @@
"Name": "Ім'я",
"Name your knowledge base": "Назвіть вашу базу знань",
"New Chat": "Новий чат",
"New folder": "",
"New folder": "Нова папка",
"New Password": "Новий пароль",
"new-channel": "",
"new-channel": "новий-канал",
"No content found": "Контент не знайдено.",
"No content to speak": "Нема чого говорити",
"No distance available": "Відстань недоступна",
@ -630,7 +630,8 @@
"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.": "Примітка: Якщо ви встановите мінімальну кількість балів, пошук поверне лише документи з кількістю балів, більшою або рівною мінімальній кількості балів.",
"Notes": "Примітки",
"Notification Webhook": "",
"Notification Sound": "",
"Notification Webhook": "Вебхук для сповіщень",
"Notifications": "Сповіщення",
"November": "Листопад",
"num_gpu (Ollama)": "num_gpu (Ollama)",
@ -780,7 +781,7 @@
"Search Tools": "Пошуку інструментів",
"SearchApi API Key": "Ключ API для SearchApi",
"SearchApi Engine": "Рушій SearchApi",
"Searched {{count}} sites": "",
"Searched {{count}} sites": "Шукалося {{count}} сайтів",
"Searching \"{{searchQuery}}\"": "Шукаю \"{{searchQuery}}\"",
"Searching Knowledge for \"{{searchQuery}}\"": "Пошук знань для \"{{searchQuery}}\"",
"Searxng Query URL": "URL-адреса запиту Searxng",
@ -1014,7 +1015,7 @@
"Web Search Query Generation": "Генерація запиту для пошуку в мережі",
"Webhook URL": "URL веб-запиту",
"WebUI Settings": "Налаштування WebUI",
"WebUI URL": "",
"WebUI URL": "WebUI URL",
"WebUI will make requests to \"{{url}}/api/chat\"": "WebUI надсилатиме запити до \"{{url}}/api/chat\"",
"WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI надсилатиме запити до \"{{url}}/chat/completions\"",
"What are you trying to achieve?": "Чого ви прагнете досягти?",

View File

@ -630,6 +630,7 @@
"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.": "نوٹ: اگر آپ کم از کم سکور سیٹ کرتے ہیں، تو تلاش صرف ان دستاویزات کو واپس کرے گی جن کا سکور کم از کم سکور کے برابر یا اس سے زیادہ ہوگا",
"Notes": "نوٹس",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "اطلاعات",
"November": "نومبر",

View File

@ -630,6 +630,7 @@
"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.": "Lưu ý: Nếu bạn đặt điểm (Score) tối thiểu thì tìm kiếm sẽ chỉ trả về những tài liệu có điểm lớn hơn hoặc bằng điểm tối thiểu.",
"Notes": "",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "Thông báo trên máy tính (Notification)",
"November": "Tháng 11",

View File

@ -630,6 +630,7 @@
"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.": "注意:如果设置了最低分数,搜索只会返回分数大于或等于最低分数的文档。",
"Notes": "笔记",
"Notification Sound": "",
"Notification Webhook": "通知 Webhook",
"Notifications": "桌面通知",
"November": "十一月",

View File

@ -630,6 +630,7 @@
"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.": "注意:如果您設定了最低分數,則搜尋只會回傳分數大於或等於最低分數的文件。",
"Notes": "注意",
"Notification Sound": "",
"Notification Webhook": "",
"Notifications": "通知",
"November": "11 月",