From af979ce49afad97c9188dcffeee3dcbd4d731772 Mon Sep 17 00:00:00 2001 From: hurxxxx Date: Wed, 29 Jan 2025 02:01:46 +0900 Subject: [PATCH 01/69] feat: Add user setting for "Always Enable Search" --- src/lib/components/chat/Chat.svelte | 5 ++++ .../components/chat/Settings/Interface.svelte | 29 +++++++++++++++++++ src/lib/components/chat/SettingsModal.svelte | 3 +- src/lib/i18n/locales/ar-BH/translation.json | 1 + src/lib/i18n/locales/bg-BG/translation.json | 1 + src/lib/i18n/locales/bn-BD/translation.json | 1 + src/lib/i18n/locales/ca-ES/translation.json | 1 + src/lib/i18n/locales/ceb-PH/translation.json | 1 + src/lib/i18n/locales/cs-CZ/translation.json | 1 + src/lib/i18n/locales/da-DK/translation.json | 1 + src/lib/i18n/locales/de-DE/translation.json | 1 + src/lib/i18n/locales/dg-DG/translation.json | 1 + src/lib/i18n/locales/el-GR/translation.json | 1 + src/lib/i18n/locales/en-GB/translation.json | 1 + src/lib/i18n/locales/en-US/translation.json | 1 + src/lib/i18n/locales/es-ES/translation.json | 1 + src/lib/i18n/locales/eu-ES/translation.json | 1 + src/lib/i18n/locales/fa-IR/translation.json | 1 + src/lib/i18n/locales/fi-FI/translation.json | 1 + src/lib/i18n/locales/fr-CA/translation.json | 1 + src/lib/i18n/locales/fr-FR/translation.json | 1 + src/lib/i18n/locales/he-IL/translation.json | 1 + src/lib/i18n/locales/hi-IN/translation.json | 1 + src/lib/i18n/locales/hr-HR/translation.json | 1 + src/lib/i18n/locales/hu-HU/translation.json | 1 + src/lib/i18n/locales/id-ID/translation.json | 1 + src/lib/i18n/locales/ie-GA/translation.json | 1 + src/lib/i18n/locales/it-IT/translation.json | 1 + src/lib/i18n/locales/ja-JP/translation.json | 1 + src/lib/i18n/locales/ka-GE/translation.json | 1 + src/lib/i18n/locales/ko-KR/translation.json | 1 + src/lib/i18n/locales/lt-LT/translation.json | 1 + src/lib/i18n/locales/ms-MY/translation.json | 1 + src/lib/i18n/locales/nb-NO/translation.json | 1 + src/lib/i18n/locales/nl-NL/translation.json | 1 + src/lib/i18n/locales/pa-IN/translation.json | 1 + src/lib/i18n/locales/pl-PL/translation.json | 1 + src/lib/i18n/locales/pt-BR/translation.json | 1 + src/lib/i18n/locales/pt-PT/translation.json | 1 + src/lib/i18n/locales/ro-RO/translation.json | 1 + src/lib/i18n/locales/ru-RU/translation.json | 1 + src/lib/i18n/locales/sk-SK/translation.json | 1 + src/lib/i18n/locales/sr-RS/translation.json | 1 + src/lib/i18n/locales/sv-SE/translation.json | 1 + src/lib/i18n/locales/th-TH/translation.json | 1 + src/lib/i18n/locales/tk-TW/translation.json | 1 + src/lib/i18n/locales/tr-TR/translation.json | 1 + src/lib/i18n/locales/uk-UA/translation.json | 1 + src/lib/i18n/locales/ur-PK/translation.json | 1 + src/lib/i18n/locales/vi-VN/translation.json | 1 + src/lib/i18n/locales/zh-CN/translation.json | 1 + src/lib/i18n/locales/zh-TW/translation.json | 1 + 52 files changed, 85 insertions(+), 1 deletion(-) diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 331806a96b..bfd643c096 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -715,6 +715,11 @@ if ($page.url.searchParams.get('web-search') === 'true') { webSearchEnabled = true; } + + if($settings?.alwaysOnWebSearch) { + webSearchEnabled = true; + } + if ($page.url.searchParams.get('image-generation') === 'true') { imageGenerationEnabled = true; } diff --git a/src/lib/components/chat/Settings/Interface.svelte b/src/lib/components/chat/Settings/Interface.svelte index 8fe2e4dd6d..6fa114ba36 100644 --- a/src/lib/components/chat/Settings/Interface.svelte +++ b/src/lib/components/chat/Settings/Interface.svelte @@ -52,6 +52,8 @@ let voiceInterruption = false; let hapticFeedback = false; + let alwaysOnWebSearch = false; + const toggleSplitLargeChunks = async () => { splitLargeChunks = !splitLargeChunks; saveSettings({ splitLargeChunks: splitLargeChunks }); @@ -198,6 +200,11 @@ }); }; + const toggleAlwaysOnWebSearch = async () => { + alwaysOnWebSearch = !alwaysOnWebSearch; + saveSettings({ alwaysOnWebSearch }); + }; + onMount(async () => { titleAutoGenerate = $settings?.title?.auto ?? true; autoTags = $settings.autoTags ?? true; @@ -235,6 +242,8 @@ } backgroundImageUrl = $settings.backgroundImageUrl ?? null; + + alwaysOnWebSearch = $settings.alwaysOnWebSearch ?? false; }); @@ -666,6 +675,26 @@ +
+
+
{$i18n.t('Always-On Web Search')}
+ + +
+
+
{$i18n.t('Voice')}
diff --git a/src/lib/components/chat/SettingsModal.svelte b/src/lib/components/chat/SettingsModal.svelte index 62f6d016f5..9e604f4bf4 100644 --- a/src/lib/components/chat/SettingsModal.svelte +++ b/src/lib/components/chat/SettingsModal.svelte @@ -118,7 +118,8 @@ 'displayemoji', 'save', 'interfaceoptions', - 'interfacecustomization' + 'interfacecustomization', + 'alwaysonwebsearch', ] }, { diff --git a/src/lib/i18n/locales/ar-BH/translation.json b/src/lib/i18n/locales/ar-BH/translation.json index d115f42279..f310e0b97e 100644 --- a/src/lib/i18n/locales/ar-BH/translation.json +++ b/src/lib/i18n/locales/ar-BH/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "هل تملك حساب ؟", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "مساعد", "and": "و", diff --git a/src/lib/i18n/locales/bg-BG/translation.json b/src/lib/i18n/locales/bg-BG/translation.json index f2eea288a4..63e536bb46 100644 --- a/src/lib/i18n/locales/bg-BG/translation.json +++ b/src/lib/i18n/locales/bg-BG/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Вече имате акаунт? ", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "асистент", "and": "и", diff --git a/src/lib/i18n/locales/bn-BD/translation.json b/src/lib/i18n/locales/bn-BD/translation.json index 18a270eb2b..bd093b2b73 100644 --- a/src/lib/i18n/locales/bn-BD/translation.json +++ b/src/lib/i18n/locales/bn-BD/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "আগে থেকেই একাউন্ট আছে?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "একটা এসিস্ট্যান্ট", "and": "এবং", diff --git a/src/lib/i18n/locales/ca-ES/translation.json b/src/lib/i18n/locales/ca-ES/translation.json index 3eeef48d4b..46bb0e4fe3 100644 --- a/src/lib/i18n/locales/ca-ES/translation.json +++ b/src/lib/i18n/locales/ca-ES/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "Punts d'accés permesos", "Already have an account?": "Ja tens un compte?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternativa al top_p, i pretén garantir un equilibri de qualitat i varietat. El paràmetre p representa la probabilitat mínima que es consideri un token, en relació amb la probabilitat del token més probable. Per exemple, amb p=0,05 i el token més probable amb una probabilitat de 0,9, es filtren els logits amb un valor inferior a 0,045. (Per defecte: 0.0)", + "Always-On Web Search": "", "Amazing": "Al·lucinant", "an assistant": "un assistent", "and": "i", diff --git a/src/lib/i18n/locales/ceb-PH/translation.json b/src/lib/i18n/locales/ceb-PH/translation.json index 9029fbae0c..a6293750f2 100644 --- a/src/lib/i18n/locales/ceb-PH/translation.json +++ b/src/lib/i18n/locales/ceb-PH/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Naa na kay account ?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "usa ka katabang", "and": "Ug", diff --git a/src/lib/i18n/locales/cs-CZ/translation.json b/src/lib/i18n/locales/cs-CZ/translation.json index d07b3b6ec7..c99d814e02 100644 --- a/src/lib/i18n/locales/cs-CZ/translation.json +++ b/src/lib/i18n/locales/cs-CZ/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Už máte účet?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "asistent", "and": "a", diff --git a/src/lib/i18n/locales/da-DK/translation.json b/src/lib/i18n/locales/da-DK/translation.json index dca76c74db..7759ec46ad 100644 --- a/src/lib/i18n/locales/da-DK/translation.json +++ b/src/lib/i18n/locales/da-DK/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Har du allerede en profil?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "en assistent", "and": "og", diff --git a/src/lib/i18n/locales/de-DE/translation.json b/src/lib/i18n/locales/de-DE/translation.json index f96e6bf087..4bc1461f35 100644 --- a/src/lib/i18n/locales/de-DE/translation.json +++ b/src/lib/i18n/locales/de-DE/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Haben Sie bereits einen Account?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternative zu top_p und zielt darauf ab, ein Gleichgewicht zwischen Qualität und Vielfalt zu gewährleisten. Der Parameter p repräsentiert die Mindestwahrscheinlichkeit für ein Token, um berücksichtigt zu werden, relativ zur Wahrscheinlichkeit des wahrscheinlichsten Tokens. Zum Beispiel, bei p=0.05 und das wahrscheinlichste Token hat eine Wahrscheinlichkeit von 0.9, werden Logits mit einem Wert von weniger als 0.045 herausgefiltert. (Standard: 0.0)", + "Always-On Web Search": "", "Amazing": "Fantastisch", "an assistant": "ein Assistent", "and": "und", diff --git a/src/lib/i18n/locales/dg-DG/translation.json b/src/lib/i18n/locales/dg-DG/translation.json index aaca0565ba..357bf9222a 100644 --- a/src/lib/i18n/locales/dg-DG/translation.json +++ b/src/lib/i18n/locales/dg-DG/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Such account exists?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "such assistant", "and": "and", diff --git a/src/lib/i18n/locales/el-GR/translation.json b/src/lib/i18n/locales/el-GR/translation.json index 8058615a06..d74ec3b071 100644 --- a/src/lib/i18n/locales/el-GR/translation.json +++ b/src/lib/i18n/locales/el-GR/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Έχετε ήδη λογαριασμό;", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Εναλλακτικό στο top_p, και στοχεύει στη διασφάλιση μιας ισορροπίας μεταξύ ποιότητας και ποικιλίας. Η παράμετρος p αντιπροσωπεύει την ελάχιστη πιθανότητα για ένα token να θεωρηθεί, σε σχέση με την πιθανότητα του πιο πιθανού token. Για παράδειγμα, με p=0.05 και το πιο πιθανό token να έχει πιθανότητα 0.9, τα logits με τιμή μικρότερη από 0.045 φιλτράρονται. (Προεπιλογή: 0.0)", + "Always-On Web Search": "", "Amazing": "Καταπληκτικό", "an assistant": "ένας βοηθός", "and": "και", diff --git a/src/lib/i18n/locales/en-GB/translation.json b/src/lib/i18n/locales/en-GB/translation.json index 3075e7c0f1..b247715c73 100644 --- a/src/lib/i18n/locales/en-GB/translation.json +++ b/src/lib/i18n/locales/en-GB/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "", "and": "", diff --git a/src/lib/i18n/locales/en-US/translation.json b/src/lib/i18n/locales/en-US/translation.json index 3075e7c0f1..b247715c73 100644 --- a/src/lib/i18n/locales/en-US/translation.json +++ b/src/lib/i18n/locales/en-US/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "", "and": "", diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index d748943ca2..ec0475c76c 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "¿Ya tienes una cuenta?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "un asistente", "and": "y", diff --git a/src/lib/i18n/locales/eu-ES/translation.json b/src/lib/i18n/locales/eu-ES/translation.json index 1e5da410f4..b81504287d 100644 --- a/src/lib/i18n/locales/eu-ES/translation.json +++ b/src/lib/i18n/locales/eu-ES/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Baduzu kontu bat?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "top_p-ren alternatiba, kalitate eta aniztasunaren arteko oreka bermatzea du helburu. p parametroak token bat kontuan hartzeko gutxieneko probabilitatea adierazten du, token probableenaren probabilitatearen arabera. Adibidez, p=0.05 balioarekin eta token probableenaren probabilitatea 0.9 denean, 0.045 baino balio txikiagoko logit-ak baztertzen dira. (Lehenetsia: 0.0)", + "Always-On Web Search": "", "Amazing": "Harrigarria", "an assistant": "laguntzaile bat", "and": "eta", diff --git a/src/lib/i18n/locales/fa-IR/translation.json b/src/lib/i18n/locales/fa-IR/translation.json index cd647b8a71..f8d8be1895 100644 --- a/src/lib/i18n/locales/fa-IR/translation.json +++ b/src/lib/i18n/locales/fa-IR/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "از قبل حساب کاربری دارید؟", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "یک دستیار", "and": "و", diff --git a/src/lib/i18n/locales/fi-FI/translation.json b/src/lib/i18n/locales/fi-FI/translation.json index 399da492f9..55cb4525d5 100644 --- a/src/lib/i18n/locales/fi-FI/translation.json +++ b/src/lib/i18n/locales/fi-FI/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Onko sinulla jo tili?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Vaihtoehto top_p:lle, jolla pyritään varmistamaan laadun ja monipuolisuuden tasapaino. Parametri p edustaa pienintä todennäköisyyttä, jolla token otetaan huomioon suhteessa todennäköisimpään tokeniin. Esimerkiksi p=0.05 ja todennäköisin token todennäköisyydellä 0.9, arvoltaan alle 0.045 olevat logit suodatetaan pois. (Oletus: 0.0)", + "Always-On Web Search": "", "Amazing": "Hämmästyttävä", "an assistant": "avustaja", "and": "ja", diff --git a/src/lib/i18n/locales/fr-CA/translation.json b/src/lib/i18n/locales/fr-CA/translation.json index 051780d71d..1edc00f752 100644 --- a/src/lib/i18n/locales/fr-CA/translation.json +++ b/src/lib/i18n/locales/fr-CA/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Avez-vous déjà un compte ?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "un assistant", "and": "et", diff --git a/src/lib/i18n/locales/fr-FR/translation.json b/src/lib/i18n/locales/fr-FR/translation.json index 62bdd81397..724bde77ab 100644 --- a/src/lib/i18n/locales/fr-FR/translation.json +++ b/src/lib/i18n/locales/fr-FR/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "Points de terminaison autorisés", "Already have an account?": "Avez-vous déjà un compte ?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternative au top_p, visant à assurer un équilibre entre qualité et variété. Le paramètre p représente la probabilité minimale pour qu'un token soit pris en compte, par rapport à la probabilité du token le plus probable. Par exemple, avec p=0.05 et le token le plus probable ayant une probabilité de 0.9, les logits ayant une valeur inférieure à 0.045 sont filtrés. (Par défaut : 0.0)", + "Always-On Web Search": "", "Amazing": "Incroyable", "an assistant": "un assistant", "and": "et", diff --git a/src/lib/i18n/locales/he-IL/translation.json b/src/lib/i18n/locales/he-IL/translation.json index 17756cbb09..8e2b46ccb7 100644 --- a/src/lib/i18n/locales/he-IL/translation.json +++ b/src/lib/i18n/locales/he-IL/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "כבר יש לך חשבון?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "עוזר", "and": "וגם", diff --git a/src/lib/i18n/locales/hi-IN/translation.json b/src/lib/i18n/locales/hi-IN/translation.json index ea039a59d8..c6ba15018e 100644 --- a/src/lib/i18n/locales/hi-IN/translation.json +++ b/src/lib/i18n/locales/hi-IN/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "क्या आपके पास पहले से एक खाता मौजूद है?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "एक सहायक", "and": "और", diff --git a/src/lib/i18n/locales/hr-HR/translation.json b/src/lib/i18n/locales/hr-HR/translation.json index c9e293389b..b3a37c3c36 100644 --- a/src/lib/i18n/locales/hr-HR/translation.json +++ b/src/lib/i18n/locales/hr-HR/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Već imate račun?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "asistent", "and": "i", diff --git a/src/lib/i18n/locales/hu-HU/translation.json b/src/lib/i18n/locales/hu-HU/translation.json index 0b9e15140d..0197229c93 100644 --- a/src/lib/i18n/locales/hu-HU/translation.json +++ b/src/lib/i18n/locales/hu-HU/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Már van fiókod?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "egy asszisztens", "and": "és", diff --git a/src/lib/i18n/locales/id-ID/translation.json b/src/lib/i18n/locales/id-ID/translation.json index 9c4d477a0f..8912b3416e 100644 --- a/src/lib/i18n/locales/id-ID/translation.json +++ b/src/lib/i18n/locales/id-ID/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Sudah memiliki akun?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "asisten", "and": "dan", diff --git a/src/lib/i18n/locales/ie-GA/translation.json b/src/lib/i18n/locales/ie-GA/translation.json index a07d360652..5bceeeaac6 100644 --- a/src/lib/i18n/locales/ie-GA/translation.json +++ b/src/lib/i18n/locales/ie-GA/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "Críochphointí Ceadaithe", "Already have an account?": "Tá cuntas agat cheana féin?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Rogha eile seachas an top_p, agus tá sé mar aidhm aige cothromaíocht cáilíochta agus éagsúlachta a chinntiú. Léiríonn an paraiméadar p an dóchúlacht íosta go mbreithneofar comhartha, i gcoibhneas le dóchúlacht an chomhartha is dóichí. Mar shampla, le p=0.05 agus dóchúlacht 0.9 ag an comhartha is dóichí, déantar logits le luach níos lú ná 0.045 a scagadh amach. (Réamhshocrú: 0.0)", + "Always-On Web Search": "", "Amazing": "Iontach", "an assistant": "cúntóir", "and": "agus", diff --git a/src/lib/i18n/locales/it-IT/translation.json b/src/lib/i18n/locales/it-IT/translation.json index 2fa94bace6..46862979dd 100644 --- a/src/lib/i18n/locales/it-IT/translation.json +++ b/src/lib/i18n/locales/it-IT/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Hai già un account?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "un assistente", "and": "e", diff --git a/src/lib/i18n/locales/ja-JP/translation.json b/src/lib/i18n/locales/ja-JP/translation.json index 6ddb781f12..a4d1927b4d 100644 --- a/src/lib/i18n/locales/ja-JP/translation.json +++ b/src/lib/i18n/locales/ja-JP/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "すでにアカウントをお持ちですか?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "アシスタント", "and": "および", diff --git a/src/lib/i18n/locales/ka-GE/translation.json b/src/lib/i18n/locales/ka-GE/translation.json index b26aa6c73e..3a30bebc51 100644 --- a/src/lib/i18n/locales/ka-GE/translation.json +++ b/src/lib/i18n/locales/ka-GE/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "უკვე გაქვს ანგარიში?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "ასისტენტი", "and": "და", diff --git a/src/lib/i18n/locales/ko-KR/translation.json b/src/lib/i18n/locales/ko-KR/translation.json index dc9090b1ea..1fc4d1b4ae 100644 --- a/src/lib/i18n/locales/ko-KR/translation.json +++ b/src/lib/i18n/locales/ko-KR/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "이미 계정이 있으신가요?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "놀라움", "an assistant": "어시스턴트", "and": "그리고", diff --git a/src/lib/i18n/locales/lt-LT/translation.json b/src/lib/i18n/locales/lt-LT/translation.json index b562d3f7c6..17c84be013 100644 --- a/src/lib/i18n/locales/lt-LT/translation.json +++ b/src/lib/i18n/locales/lt-LT/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Ar jau turite paskyrą?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "assistentas", "and": "ir", diff --git a/src/lib/i18n/locales/ms-MY/translation.json b/src/lib/i18n/locales/ms-MY/translation.json index 950a065afc..c2d6a13a34 100644 --- a/src/lib/i18n/locales/ms-MY/translation.json +++ b/src/lib/i18n/locales/ms-MY/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Telah mempunyai akaun?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "seorang pembantu", "and": "dan", diff --git a/src/lib/i18n/locales/nb-NO/translation.json b/src/lib/i18n/locales/nb-NO/translation.json index 1ce3a9aa96..f3c3c3537c 100644 --- a/src/lib/i18n/locales/nb-NO/translation.json +++ b/src/lib/i18n/locales/nb-NO/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Har du allerede en konto?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternativ til top_p, og har som mål å sikre en balanse mellom kvalitet og variasjon. Parameteren p representerer minimumssannsynligheten for at et token skal vurderes, i forhold til sannsynligheten for det mest sannsynlige tokenet. Hvis p for eksempel er 0,05 og det mest sannsynlige tokenet har en sannsynlighet på 0,9, filtreres logits med en verdi på mindre enn 0,045 bort. (Standard: 0,0)", + "Always-On Web Search": "", "Amazing": "Flott", "an assistant": "en assistent", "and": "og", diff --git a/src/lib/i18n/locales/nl-NL/translation.json b/src/lib/i18n/locales/nl-NL/translation.json index 68764d8a8a..e3a8532ddc 100644 --- a/src/lib/i18n/locales/nl-NL/translation.json +++ b/src/lib/i18n/locales/nl-NL/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Heb je al een account?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternatief voor de top_p, en streeft naar een evenwicht tussen kwaliteit en variatie. De parameter p vertegenwoordigt de minimumwaarschijnlijkheid dat een token in aanmerking wordt genomen, in verhouding tot de waarschijnlijkheid van het meest waarschijnlijke token. Bijvoorbeeld, met p=0.05 en de meest waarschijnlijke token met een waarschijnlijkheid van 0.9, worden logits met een waarde kleiner dan 0.045 uitgefilterd. (Standaard: 0,0)", + "Always-On Web Search": "", "Amazing": "Geweldig", "an assistant": "een assistent", "and": "en", diff --git a/src/lib/i18n/locales/pa-IN/translation.json b/src/lib/i18n/locales/pa-IN/translation.json index 58e8bf3398..e823f066ca 100644 --- a/src/lib/i18n/locales/pa-IN/translation.json +++ b/src/lib/i18n/locales/pa-IN/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "ਪਹਿਲਾਂ ਹੀ ਖਾਤਾ ਹੈ?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "ਇੱਕ ਸਹਾਇਕ", "and": "ਅਤੇ", diff --git a/src/lib/i18n/locales/pl-PL/translation.json b/src/lib/i18n/locales/pl-PL/translation.json index 64168bfe3c..381f3e777f 100644 --- a/src/lib/i18n/locales/pl-PL/translation.json +++ b/src/lib/i18n/locales/pl-PL/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Masz już konto?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "asystent", "and": "i", diff --git a/src/lib/i18n/locales/pt-BR/translation.json b/src/lib/i18n/locales/pt-BR/translation.json index 4c416f409b..5232787ece 100644 --- a/src/lib/i18n/locales/pt-BR/translation.json +++ b/src/lib/i18n/locales/pt-BR/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Já tem uma conta?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternativa ao 'top_p', e visa garantir um equilíbrio entre qualidade e variedade. O parâmetro 'p' representa a probabilidade mínima para que um token seja considerado, em relação à probabilidade do token mais provável. Por exemplo, com 'p=0.05' e o token mais provável com probabilidade de '0.9', as predições com valor inferior a '0.045' são filtrados. (Default: 0.0)", + "Always-On Web Search": "", "Amazing": "Incrível", "an assistant": "um assistente", "and": "e", diff --git a/src/lib/i18n/locales/pt-PT/translation.json b/src/lib/i18n/locales/pt-PT/translation.json index 092669629c..4ce8f4a1f1 100644 --- a/src/lib/i18n/locales/pt-PT/translation.json +++ b/src/lib/i18n/locales/pt-PT/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Já tem uma conta?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "um assistente", "and": "e", diff --git a/src/lib/i18n/locales/ro-RO/translation.json b/src/lib/i18n/locales/ro-RO/translation.json index 01994c6317..22d4ae532e 100644 --- a/src/lib/i18n/locales/ro-RO/translation.json +++ b/src/lib/i18n/locales/ro-RO/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Deja ai un cont?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "un asistent", "and": "și", diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index b4d6aa916d..71b1b62fd3 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "У вас уже есть учетная запись?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "Удивительный", "an assistant": "ассистент", "and": "и", diff --git a/src/lib/i18n/locales/sk-SK/translation.json b/src/lib/i18n/locales/sk-SK/translation.json index 29d8622ea2..f78492ac66 100644 --- a/src/lib/i18n/locales/sk-SK/translation.json +++ b/src/lib/i18n/locales/sk-SK/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Už máte účet?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "asistent", "and": "a", diff --git a/src/lib/i18n/locales/sr-RS/translation.json b/src/lib/i18n/locales/sr-RS/translation.json index 8dc2556551..f6f8a991ad 100644 --- a/src/lib/i18n/locales/sr-RS/translation.json +++ b/src/lib/i18n/locales/sr-RS/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Већ имате налог?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "Невероватно", "an assistant": "помоћник", "and": "и", diff --git a/src/lib/i18n/locales/sv-SE/translation.json b/src/lib/i18n/locales/sv-SE/translation.json index 0abc82341c..6f423b29d0 100644 --- a/src/lib/i18n/locales/sv-SE/translation.json +++ b/src/lib/i18n/locales/sv-SE/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Har du redan ett konto?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "en assistent", "and": "och", diff --git a/src/lib/i18n/locales/th-TH/translation.json b/src/lib/i18n/locales/th-TH/translation.json index f1f23478bd..19a4066b60 100644 --- a/src/lib/i18n/locales/th-TH/translation.json +++ b/src/lib/i18n/locales/th-TH/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "มีบัญชีอยู่แล้ว?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "ผู้ช่วย", "and": "และ", diff --git a/src/lib/i18n/locales/tk-TW/translation.json b/src/lib/i18n/locales/tk-TW/translation.json index 3075e7c0f1..b247715c73 100644 --- a/src/lib/i18n/locales/tk-TW/translation.json +++ b/src/lib/i18n/locales/tk-TW/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "", "and": "", diff --git a/src/lib/i18n/locales/tr-TR/translation.json b/src/lib/i18n/locales/tr-TR/translation.json index e6d05dfe16..4f22fde938 100644 --- a/src/lib/i18n/locales/tr-TR/translation.json +++ b/src/lib/i18n/locales/tr-TR/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "İzin Verilen Uç Noktalar", "Already have an account?": "Zaten bir hesabınız mı var?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "top_p'ye bir alternatif ve kalite ile çeşitlilik arasında bir denge sağlamayı amaçlar. p parametresi, en olası tokenin olasılığına göre, bir tokenin dikkate alınması için minimum olasılığı temsil eder. Örneğin, p=0.05 ve en olası tokenin 0.9 olasılığı ile 0.045'ten küçük bir değere sahip logitler filtrelenir. (Varsayılan: 0.0)", + "Always-On Web Search": "", "Amazing": "Harika", "an assistant": "bir asistan", "and": "ve", diff --git a/src/lib/i18n/locales/uk-UA/translation.json b/src/lib/i18n/locales/uk-UA/translation.json index 449958c2b5..13a6a7729e 100644 --- a/src/lib/i18n/locales/uk-UA/translation.json +++ b/src/lib/i18n/locales/uk-UA/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "Дозволені кінцеві точки", "Already have an account?": "Вже є обліковий запис?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Альтернатива параметру top_p, яка має на меті забезпечити баланс якості та різноманітності. Параметр p представляє мінімальну ймовірність для того, щоб токен був врахований, відносно ймовірності найбільш ймовірного токена. Наприклад, при p=0.05 і найбільш імовірному токені з ймовірністю 0.9, логіти зі значенням менше 0.045 будуть відфільтровані. (За замовчуванням: 0.0)", + "Always-On Web Search": "", "Amazing": "Чудово", "an assistant": "асистента", "and": "та", diff --git a/src/lib/i18n/locales/ur-PK/translation.json b/src/lib/i18n/locales/ur-PK/translation.json index 437d943ae2..d50b4f854c 100644 --- a/src/lib/i18n/locales/ur-PK/translation.json +++ b/src/lib/i18n/locales/ur-PK/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "کیا پہلے سے اکاؤنٹ موجود ہے؟", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "معاون", "and": "اور", diff --git a/src/lib/i18n/locales/vi-VN/translation.json b/src/lib/i18n/locales/vi-VN/translation.json index c786b67a7a..7ded0b202a 100644 --- a/src/lib/i18n/locales/vi-VN/translation.json +++ b/src/lib/i18n/locales/vi-VN/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Bạn đã có tài khoản?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", + "Always-On Web Search": "", "Amazing": "", "an assistant": "trợ lý", "and": "và", diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index 803d0d89aa..666d07b290 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "允许的端点", "Already have an account?": "已经拥有账号了?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "top_p的替代方法,目标是在质量和多样性之间取得平衡。参数p表示一个token相对于最有可能的token所需的最低概率。比如,当p=0.05且最有可能的token概率为0.9时,概率低于0.045的logits会被排除。(默认值:0.0)", + "Always-On Web Search": "", "Amazing": "很棒", "an assistant": "AI模型", "and": "和", diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index 029fb99683..9fd72430f4 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -63,6 +63,7 @@ "Allowed Endpoints": "允許的端點", "Already have an account?": "已經有帳號了嗎?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "作為 top_p 的替代方案,旨在確保質量和多樣性的平衡。相對於最可能的 token 機率而言,參數 p 代表一個 token 被考慮在内的最低機率。例如,當 p=0.05 且最可能的 token 機率為 0.9 時,數值低於 0.045 的對數機率會被過濾掉。(預設值:0.0)", + "Always-On Web Search": "", "Amazing": "很棒", "an assistant": "一位助手", "and": "和", From 8e0c0b4ae3857ed1ddd66f45b52f787b759cbd51 Mon Sep 17 00:00:00 2001 From: hurxxxx Date: Wed, 29 Jan 2025 04:42:41 +0900 Subject: [PATCH 02/69] fix : Infinite loading issue occurs. --- src/lib/components/chat/Chat.svelte | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 9c2a55b4f9..8e8810e4d3 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -115,7 +115,7 @@ let selectedToolIds = []; let imageGenerationEnabled = false; - let webSearchEnabled = false; + let webSearchEnabled = $settings?.alwaysOnWebSearch ?? false; let chat = null; let tags = []; @@ -141,7 +141,7 @@ prompt = ''; files = []; selectedToolIds = []; - webSearchEnabled = false; + imageGenerationEnabled = false; if (chatIdProp && (await loadChat())) { @@ -716,11 +716,7 @@ if ($page.url.searchParams.get('web-search') === 'true') { webSearchEnabled = true; } - - if($settings?.alwaysOnWebSearch) { - webSearchEnabled = true; - } - + if ($page.url.searchParams.get('image-generation') === 'true') { imageGenerationEnabled = true; } From 6ca295ec59452e292f32a077c895e248709b4ca0 Mon Sep 17 00:00:00 2001 From: Didier FOURNOUT Date: Wed, 29 Jan 2025 10:55:52 +0000 Subject: [PATCH 03/69] Add user related headers when calling an external embedding api --- backend/open_webui/retrieval/utils.py | 54 ++++++++++++++++++------- backend/open_webui/routers/files.py | 6 ++- backend/open_webui/routers/knowledge.py | 8 +++- backend/open_webui/routers/memories.py | 8 ++-- backend/open_webui/routers/retrieval.py | 24 ++++++----- backend/open_webui/utils/middleware.py | 2 +- 6 files changed, 70 insertions(+), 32 deletions(-) diff --git a/backend/open_webui/retrieval/utils.py b/backend/open_webui/retrieval/utils.py index 44ce0db869..790f8b9ec5 100644 --- a/backend/open_webui/retrieval/utils.py +++ b/backend/open_webui/retrieval/utils.py @@ -15,8 +15,9 @@ from langchain_core.documents import Document from open_webui.config import VECTOR_DB from open_webui.retrieval.vector.connector import VECTOR_DB_CLIENT from open_webui.utils.misc import get_last_user_message +from open_webui.models.users import UserModel -from open_webui.env import SRC_LOG_LEVELS, OFFLINE_MODE +from open_webui.env import SRC_LOG_LEVELS, OFFLINE_MODE, ENABLE_FORWARD_USER_INFO_HEADERS log = logging.getLogger(__name__) log.setLevel(SRC_LOG_LEVELS["RAG"]) @@ -64,6 +65,7 @@ def query_doc( collection_name: str, query_embedding: list[float], k: int, + user: UserModel=None ): try: result = VECTOR_DB_CLIENT.search( @@ -256,29 +258,32 @@ def get_embedding_function( embedding_function, url, key, - embedding_batch_size, + embedding_batch_size ): if embedding_engine == "": - return lambda query: embedding_function.encode(query).tolist() + return lambda query, user=None: embedding_function.encode(query).tolist() elif embedding_engine in ["ollama", "openai"]: - func = lambda query: generate_embeddings( + func = lambda query, user=None: generate_embeddings( engine=embedding_engine, model=embedding_model, text=query, url=url, key=key, + user=user ) - def generate_multiple(query, func): + def generate_multiple(query, user, func): if isinstance(query, list): embeddings = [] for i in range(0, len(query), embedding_batch_size): - embeddings.extend(func(query[i : i + embedding_batch_size])) + embeddings.extend(func(query[i : i + embedding_batch_size], user=user)) return embeddings else: - return func(query) + return func(query, user) - return lambda query: generate_multiple(query, func) + return lambda query, user=None: generate_multiple(query, user, func) + else: + raise ValueError(f"Unknown embedding engine: {embedding_engine}") def get_sources_from_files( @@ -423,7 +428,7 @@ def get_model_path(model: str, update_model: bool = False): def generate_openai_batch_embeddings( - model: str, texts: list[str], url: str = "https://api.openai.com/v1", key: str = "" + model: str, texts: list[str], url: str = "https://api.openai.com/v1", key: str = "", user: UserModel = None ) -> Optional[list[list[float]]]: try: r = requests.post( @@ -431,6 +436,16 @@ def generate_openai_batch_embeddings( headers={ "Content-Type": "application/json", "Authorization": f"Bearer {key}", + **( + { + "X-OpenWebUI-User-Name": user.name, + "X-OpenWebUI-User-Id": user.id, + "X-OpenWebUI-User-Email": user.email, + "X-OpenWebUI-User-Role": user.role, + } + if ENABLE_FORWARD_USER_INFO_HEADERS and user + else {} + ), }, json={"input": texts, "model": model}, ) @@ -446,7 +461,7 @@ def generate_openai_batch_embeddings( def generate_ollama_batch_embeddings( - model: str, texts: list[str], url: str, key: str = "" + model: str, texts: list[str], url: str, key: str = "", user: UserModel = None ) -> Optional[list[list[float]]]: try: r = requests.post( @@ -454,6 +469,16 @@ def generate_ollama_batch_embeddings( headers={ "Content-Type": "application/json", "Authorization": f"Bearer {key}", + **( + { + "X-OpenWebUI-User-Name": user.name, + "X-OpenWebUI-User-Id": user.id, + "X-OpenWebUI-User-Email": user.email, + "X-OpenWebUI-User-Role": user.role, + } + if ENABLE_FORWARD_USER_INFO_HEADERS + else {} + ), }, json={"input": texts, "model": model}, ) @@ -472,22 +497,23 @@ def generate_ollama_batch_embeddings( def generate_embeddings(engine: str, model: str, text: Union[str, list[str]], **kwargs): url = kwargs.get("url", "") key = kwargs.get("key", "") + user = kwargs.get("user") if engine == "ollama": if isinstance(text, list): embeddings = generate_ollama_batch_embeddings( - **{"model": model, "texts": text, "url": url, "key": key} + **{"model": model, "texts": text, "url": url, "key": key, "user": user} ) else: embeddings = generate_ollama_batch_embeddings( - **{"model": model, "texts": [text], "url": url, "key": key} + **{"model": model, "texts": [text], "url": url, "key": key, "user": user} ) return embeddings[0] if isinstance(text, str) else embeddings elif engine == "openai": if isinstance(text, list): - embeddings = generate_openai_batch_embeddings(model, text, url, key) + embeddings = generate_openai_batch_embeddings(model, text, url, key, user) else: - embeddings = generate_openai_batch_embeddings(model, [text], url, key) + embeddings = generate_openai_batch_embeddings(model, [text], url, key, user) return embeddings[0] if isinstance(text, str) else embeddings diff --git a/backend/open_webui/routers/files.py b/backend/open_webui/routers/files.py index b648fccc26..1ab76fac1c 100644 --- a/backend/open_webui/routers/files.py +++ b/backend/open_webui/routers/files.py @@ -71,7 +71,7 @@ def upload_file( ) try: - process_file(request, ProcessFileForm(file_id=id)) + process_file(request, ProcessFileForm(file_id=id), user=user) file_item = Files.get_file_by_id(id=id) except Exception as e: log.exception(e) @@ -193,7 +193,9 @@ async def update_file_data_content_by_id( if file and (file.user_id == user.id or user.role == "admin"): try: process_file( - request, ProcessFileForm(file_id=id, content=form_data.content) + request, + ProcessFileForm(file_id=id, content=form_data.content), + user=user ) file = Files.get_file_by_id(id=id) except Exception as e: diff --git a/backend/open_webui/routers/knowledge.py b/backend/open_webui/routers/knowledge.py index cce3d63116..8388f50fbf 100644 --- a/backend/open_webui/routers/knowledge.py +++ b/backend/open_webui/routers/knowledge.py @@ -285,7 +285,9 @@ def add_file_to_knowledge_by_id( # Add content to the vector database try: process_file( - request, ProcessFileForm(file_id=form_data.file_id, collection_name=id) + request, + ProcessFileForm(file_id=form_data.file_id, collection_name=id), + user=user ) except Exception as e: log.debug(e) @@ -363,7 +365,9 @@ def update_file_from_knowledge_by_id( # Add content to the vector database try: process_file( - request, ProcessFileForm(file_id=form_data.file_id, collection_name=id) + request, + ProcessFileForm(file_id=form_data.file_id, collection_name=id), + user=user ) except Exception as e: raise HTTPException( diff --git a/backend/open_webui/routers/memories.py b/backend/open_webui/routers/memories.py index e72cf1445a..8ffc67cc00 100644 --- a/backend/open_webui/routers/memories.py +++ b/backend/open_webui/routers/memories.py @@ -57,7 +57,7 @@ async def add_memory( { "id": memory.id, "text": memory.content, - "vector": request.app.state.EMBEDDING_FUNCTION(memory.content), + "vector": request.app.state.EMBEDDING_FUNCTION(memory.content, user), "metadata": {"created_at": memory.created_at}, } ], @@ -82,7 +82,7 @@ async def query_memory( ): results = VECTOR_DB_CLIENT.search( collection_name=f"user-memory-{user.id}", - vectors=[request.app.state.EMBEDDING_FUNCTION(form_data.content)], + vectors=[request.app.state.EMBEDDING_FUNCTION(form_data.content, user)], limit=form_data.k, ) @@ -105,7 +105,7 @@ async def reset_memory_from_vector_db( { "id": memory.id, "text": memory.content, - "vector": request.app.state.EMBEDDING_FUNCTION(memory.content), + "vector": request.app.state.EMBEDDING_FUNCTION(memory.content, user), "metadata": { "created_at": memory.created_at, "updated_at": memory.updated_at, @@ -160,7 +160,7 @@ async def update_memory_by_id( { "id": memory.id, "text": memory.content, - "vector": request.app.state.EMBEDDING_FUNCTION(memory.content), + "vector": request.app.state.EMBEDDING_FUNCTION(memory.content, user), "metadata": { "created_at": memory.created_at, "updated_at": memory.updated_at, diff --git a/backend/open_webui/routers/retrieval.py b/backend/open_webui/routers/retrieval.py index 2cffd9ead4..505cb4031f 100644 --- a/backend/open_webui/routers/retrieval.py +++ b/backend/open_webui/routers/retrieval.py @@ -660,6 +660,7 @@ def save_docs_to_vector_db( overwrite: bool = False, split: bool = True, add: bool = False, + user = None, ) -> bool: def _get_docs_info(docs: list[Document]) -> str: docs_info = set() @@ -775,7 +776,8 @@ def save_docs_to_vector_db( ) embeddings = embedding_function( - list(map(lambda x: x.replace("\n", " "), texts)) + list(map(lambda x: x.replace("\n", " "), texts)), + user = user ) items = [ @@ -933,6 +935,7 @@ def process_file( "hash": hash, }, add=(True if form_data.collection_name else False), + user=user ) if result: @@ -990,7 +993,7 @@ def process_text( text_content = form_data.content log.debug(f"text_content: {text_content}") - result = save_docs_to_vector_db(request, docs, collection_name) + result = save_docs_to_vector_db(request, docs, collection_name, user=user) if result: return { "status": True, @@ -1023,7 +1026,7 @@ def process_youtube_video( content = " ".join([doc.page_content for doc in docs]) log.debug(f"text_content: {content}") - save_docs_to_vector_db(request, docs, collection_name, overwrite=True) + save_docs_to_vector_db(request, docs, collection_name, overwrite=True, user=user) return { "status": True, @@ -1064,7 +1067,7 @@ def process_web( content = " ".join([doc.page_content for doc in docs]) log.debug(f"text_content: {content}") - save_docs_to_vector_db(request, docs, collection_name, overwrite=True) + save_docs_to_vector_db(request, docs, collection_name, overwrite=True, user=user) return { "status": True, @@ -1272,7 +1275,7 @@ def process_web_search( requests_per_second=request.app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS, ) docs = loader.load() - save_docs_to_vector_db(request, docs, collection_name, overwrite=True) + save_docs_to_vector_db(request, docs, collection_name, overwrite=True, user=user) return { "status": True, @@ -1306,7 +1309,7 @@ def query_doc_handler( return query_doc_with_hybrid_search( collection_name=form_data.collection_name, query=form_data.query, - embedding_function=request.app.state.EMBEDDING_FUNCTION, + embedding_function=lambda query: request.app.state.EMBEDDING_FUNCTION(query, user=user), k=form_data.k if form_data.k else request.app.state.config.TOP_K, reranking_function=request.app.state.rf, r=( @@ -1314,12 +1317,14 @@ def query_doc_handler( if form_data.r else request.app.state.config.RELEVANCE_THRESHOLD ), + user=user ) else: return query_doc( collection_name=form_data.collection_name, - query_embedding=request.app.state.EMBEDDING_FUNCTION(form_data.query), + query_embedding=request.app.state.EMBEDDING_FUNCTION(form_data.query, user=user), k=form_data.k if form_data.k else request.app.state.config.TOP_K, + user=user ) except Exception as e: log.exception(e) @@ -1348,7 +1353,7 @@ def query_collection_handler( return query_collection_with_hybrid_search( collection_names=form_data.collection_names, queries=[form_data.query], - embedding_function=request.app.state.EMBEDDING_FUNCTION, + embedding_function=lambda query: request.app.state.EMBEDDING_FUNCTION(query, user=user), k=form_data.k if form_data.k else request.app.state.config.TOP_K, reranking_function=request.app.state.rf, r=( @@ -1361,7 +1366,7 @@ def query_collection_handler( return query_collection( collection_names=form_data.collection_names, queries=[form_data.query], - embedding_function=request.app.state.EMBEDDING_FUNCTION, + embedding_function=lambda query: request.app.state.EMBEDDING_FUNCTION(query,user=user), k=form_data.k if form_data.k else request.app.state.config.TOP_K, ) @@ -1509,6 +1514,7 @@ def process_files_batch( docs=all_docs, collection_name=collection_name, add=True, + user=user, ) # Update all files with collection name diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 6b2329be1c..2aae38056e 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -630,7 +630,7 @@ async def chat_completion_files_handler( lambda: get_sources_from_files( files=files, queries=queries, - embedding_function=request.app.state.EMBEDDING_FUNCTION, + embedding_function=lambda query: request.app.state.EMBEDDING_FUNCTION(query,user=user), k=request.app.state.config.TOP_K, reranking_function=request.app.state.rf, r=request.app.state.config.RELEVANCE_THRESHOLD, From d1c7a3cff35ca261b6d8cd5e6b7db6cc54835f00 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 3 Feb 2025 20:49:54 -0800 Subject: [PATCH 04/69] enh: code interpreter prompt --- backend/open_webui/config.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index 0753992b04..d77ca8659a 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -1328,9 +1328,11 @@ DEFAULT_CODE_INTERPRETER_PROMPT = """ - When coding, **always aim to print meaningful outputs** (e.g., results, tables, summaries, or visuals) to better interpret and verify the findings. Avoid relying on implicit outputs; prioritize explicit and clear print statements so the results are effectively communicated to the user. - After obtaining the printed output, **always provide a concise analysis, interpretation, or next steps to help the user understand the findings or refine the outcome further.** - If the results are unclear, unexpected, or require validation, refine the code and execute it again as needed. Always aim to deliver meaningful insights from the results, iterating if necessary. + - All responses should be communicated in the chat's primary language, ensuring seamless understanding. If the chat is multilingual, default to English for clarity. Ensure that the tools are effectively utilized to achieve the highest-quality analysis for the user.""" + #################################### # Vector Database #################################### From 454294a101792afca4af528d6edffd988b310ec7 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 3 Feb 2025 20:53:46 -0800 Subject: [PATCH 05/69] refac: design MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit thanks @jannikstdl for nudging me to redesign 🙌 Co-Authored-By: Jannik S. --- src/lib/components/chat/MessageInput.svelte | 22 ++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 9d3c12a61d..8d8b1dc5a0 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -390,7 +390,7 @@
- {#if atSelectedModel !== undefined || selectedToolIds.length > 0 || imageGenerationEnabled || codeInterpreterEnabled} + {#if atSelectedModel !== undefined || selectedToolIds.length > 0 || webSearchEnabled || imageGenerationEnabled || codeInterpreterEnabled}
@@ -426,6 +426,22 @@
{/if} + {#if webSearchEnabled} +
+
+
+ + + + +
+
{$i18n.t('Search the internet')}
+
+
+ {/if} + {#if imageGenerationEnabled}
@@ -448,9 +464,9 @@
- +
{$i18n.t('Code interpreter')}
From 074a44379011a03fecaacb0a4e28837ac94d7bc3 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 3 Feb 2025 21:10:49 -0800 Subject: [PATCH 06/69] refac --- src/lib/components/chat/Chat.svelte | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 7d3eb617af..32c1060380 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -1327,20 +1327,9 @@ { modelId = null, modelIdx = null, newChat = false } = {} ) => { let _chatId = JSON.parse(JSON.stringify($chatId)); + const _history = JSON.parse(JSON.stringify(history)); - // Create new chat if newChat is true and first user message - if ( - newChat && - history.messages[history.currentId].parentId === null && - history.messages[history.currentId].role === 'user' - ) { - _chatId = await initChatHandler(history); - } else { - await saveChatHandler(_chatId, history); - } - - await tick(); - + const responseMessageIds: Record = {}; // If modelId is provided, use it, else use selected model let selectedModelIds = modelId ? [modelId] @@ -1349,7 +1338,6 @@ : selectedModels; // Create response messages for each selected model - const responseMessageIds: Record = {}; for (const [_modelIdx, modelId] of selectedModelIds.entries()) { const model = $models.filter((m) => m.id === modelId).at(0); @@ -1384,6 +1372,14 @@ responseMessageIds[`${modelId}-${modelIdx ? modelIdx : _modelIdx}`] = responseMessageId; } } + history = history; + + // Create new chat if newChat is true and first user message + if (newChat && _history.messages[_history.currentId].parentId === null) { + _chatId = await initChatHandler(_history); + } else { + await saveChatHandler(_chatId, _history); + } await tick(); // Save chat after all messages have been created From 7e971f9dd18ca91c6016630c7a5095d5afd79eed Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 3 Feb 2025 21:13:27 -0800 Subject: [PATCH 07/69] refac --- src/lib/components/chat/Chat.svelte | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 32c1060380..ebd882dfc2 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -1266,7 +1266,6 @@ } prompt = ''; - await tick(); // Reset chat input textarea const chatInputElement = document.getElementById('chat-input'); @@ -1308,9 +1307,6 @@ history.messages[messages.at(-1).id].childrenIds.push(userMessageId); } - // Wait until history/message have been updated - await tick(); - // focus on chat input const chatInput = document.getElementById('chat-input'); chatInput?.focus(); From a38ce75eda2bfd68d75f4659cca38299e40d80ba Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 3 Feb 2025 21:25:16 -0800 Subject: [PATCH 08/69] refac: styling --- src/lib/components/channel/MessageInput.svelte | 6 +++--- src/lib/components/chat/MessageInput.svelte | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/lib/components/channel/MessageInput.svelte b/src/lib/components/channel/MessageInput.svelte index 595f84cb53..e12557961d 100644 --- a/src/lib/components/channel/MessageInput.svelte +++ b/src/lib/components/channel/MessageInput.svelte @@ -398,7 +398,7 @@ dir={$settings?.chatDirection ?? 'LTR'} > {#if files.length > 0} -
+
{#each files as file, fileIdx} {#if file.type === 'image'}
@@ -455,7 +455,7 @@
-
+
{#if files.length > 0} -
+
{#each files as file, fileIdx} {#if file.type === 'image'}
@@ -680,7 +680,7 @@
{#if $settings?.richTextInput ?? true}
{ @@ -1075,7 +1075,7 @@ {/if}
-
+
Date: Mon, 3 Feb 2025 21:56:35 -0800 Subject: [PATCH 09/69] chore: format --- backend/open_webui/config.py | 7 ++++ backend/open_webui/retrieval/web/utils.py | 2 ++ backend/open_webui/routers/users.py | 1 + src/lib/components/admin/Users/Groups.svelte | 3 +- .../admin/Users/Groups/EditGroupModal.svelte | 3 +- .../admin/Users/Groups/Permissions.svelte | 11 +++++- src/lib/components/chat/MessageInput.svelte | 36 ++++++++++--------- src/lib/i18n/locales/ar-BH/translation.json | 6 ++-- src/lib/i18n/locales/bg-BG/translation.json | 6 ++-- src/lib/i18n/locales/bn-BD/translation.json | 6 ++-- src/lib/i18n/locales/ca-ES/translation.json | 6 ++-- src/lib/i18n/locales/ceb-PH/translation.json | 6 ++-- src/lib/i18n/locales/cs-CZ/translation.json | 6 ++-- src/lib/i18n/locales/da-DK/translation.json | 6 ++-- src/lib/i18n/locales/de-DE/translation.json | 6 ++-- src/lib/i18n/locales/dg-DG/translation.json | 6 ++-- src/lib/i18n/locales/el-GR/translation.json | 6 ++-- src/lib/i18n/locales/en-GB/translation.json | 6 ++-- src/lib/i18n/locales/en-US/translation.json | 6 ++-- src/lib/i18n/locales/es-ES/translation.json | 6 ++-- src/lib/i18n/locales/eu-ES/translation.json | 6 ++-- src/lib/i18n/locales/fa-IR/translation.json | 6 ++-- src/lib/i18n/locales/fi-FI/translation.json | 6 ++-- src/lib/i18n/locales/fr-CA/translation.json | 6 ++-- src/lib/i18n/locales/fr-FR/translation.json | 6 ++-- src/lib/i18n/locales/he-IL/translation.json | 6 ++-- src/lib/i18n/locales/hi-IN/translation.json | 6 ++-- src/lib/i18n/locales/hr-HR/translation.json | 6 ++-- src/lib/i18n/locales/hu-HU/translation.json | 6 ++-- src/lib/i18n/locales/id-ID/translation.json | 6 ++-- src/lib/i18n/locales/ie-GA/translation.json | 6 ++-- src/lib/i18n/locales/it-IT/translation.json | 6 ++-- src/lib/i18n/locales/ja-JP/translation.json | 6 ++-- src/lib/i18n/locales/ka-GE/translation.json | 6 ++-- src/lib/i18n/locales/ko-KR/translation.json | 6 ++-- src/lib/i18n/locales/lt-LT/translation.json | 6 ++-- src/lib/i18n/locales/ms-MY/translation.json | 6 ++-- src/lib/i18n/locales/nb-NO/translation.json | 6 ++-- src/lib/i18n/locales/nl-NL/translation.json | 6 ++-- src/lib/i18n/locales/pa-IN/translation.json | 6 ++-- src/lib/i18n/locales/pl-PL/translation.json | 6 ++-- src/lib/i18n/locales/pt-BR/translation.json | 6 ++-- src/lib/i18n/locales/pt-PT/translation.json | 6 ++-- src/lib/i18n/locales/ro-RO/translation.json | 6 ++-- src/lib/i18n/locales/ru-RU/translation.json | 6 ++-- src/lib/i18n/locales/sk-SK/translation.json | 6 ++-- src/lib/i18n/locales/sr-RS/translation.json | 6 ++-- src/lib/i18n/locales/sv-SE/translation.json | 6 ++-- src/lib/i18n/locales/th-TH/translation.json | 6 ++-- src/lib/i18n/locales/tk-TW/translation.json | 6 ++-- src/lib/i18n/locales/tr-TR/translation.json | 6 ++-- src/lib/i18n/locales/uk-UA/translation.json | 6 ++-- src/lib/i18n/locales/ur-PK/translation.json | 6 ++-- src/lib/i18n/locales/vi-VN/translation.json | 6 ++-- src/lib/i18n/locales/zh-CN/translation.json | 6 ++-- src/lib/i18n/locales/zh-TW/translation.json | 6 ++-- 56 files changed, 141 insertions(+), 216 deletions(-) diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index d77ca8659a..9ceb81913e 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -927,6 +927,12 @@ USER_PERMISSIONS_FEATURES_IMAGE_GENERATION = ( == "true" ) +USER_PERMISSIONS_FEATURES_CODE_INTERPRETER = ( + os.environ.get("USER_PERMISSIONS_FEATURES_CODE_INTERPRETER", "True").lower() + == "true" +) + + DEFAULT_USER_PERMISSIONS = { "workspace": { "models": USER_PERMISSIONS_WORKSPACE_MODELS_ACCESS, @@ -944,6 +950,7 @@ DEFAULT_USER_PERMISSIONS = { "features": { "web_search": USER_PERMISSIONS_FEATURES_WEB_SEARCH, "image_generation": USER_PERMISSIONS_FEATURES_IMAGE_GENERATION, + "code_interpreter": USER_PERMISSIONS_FEATURES_CODE_INTERPRETER, }, } diff --git a/backend/open_webui/retrieval/web/utils.py b/backend/open_webui/retrieval/web/utils.py index d91c7da150..3a73444b3d 100644 --- a/backend/open_webui/retrieval/web/utils.py +++ b/backend/open_webui/retrieval/web/utils.py @@ -42,6 +42,7 @@ def validate_url(url: Union[str, Sequence[str]]): else: return False + def safe_validate_urls(url: Sequence[str]) -> Sequence[str]: valid_urls = [] for u in url: @@ -52,6 +53,7 @@ def safe_validate_urls(url: Sequence[str]) -> Sequence[str]: continue return valid_urls + def resolve_hostname(hostname): # Get address information addr_info = socket.getaddrinfo(hostname, None) diff --git a/backend/open_webui/routers/users.py b/backend/open_webui/routers/users.py index b37ad4b39e..ddcaef7674 100644 --- a/backend/open_webui/routers/users.py +++ b/backend/open_webui/routers/users.py @@ -79,6 +79,7 @@ class ChatPermissions(BaseModel): class FeaturesPermissions(BaseModel): web_search: bool = True image_generation: bool = True + code_interpreter: bool = True class UserPermissions(BaseModel): diff --git a/src/lib/components/admin/Users/Groups.svelte b/src/lib/components/admin/Users/Groups.svelte index bbc7bab446..b91ce2d389 100644 --- a/src/lib/components/admin/Users/Groups.svelte +++ b/src/lib/components/admin/Users/Groups.svelte @@ -61,7 +61,8 @@ }, features: { web_search: true, - image_generation: true + image_generation: true, + code_interpreter: true } }; diff --git a/src/lib/components/admin/Users/Groups/EditGroupModal.svelte b/src/lib/components/admin/Users/Groups/EditGroupModal.svelte index 9558dbcad5..2e2fe60718 100644 --- a/src/lib/components/admin/Users/Groups/EditGroupModal.svelte +++ b/src/lib/components/admin/Users/Groups/EditGroupModal.svelte @@ -45,7 +45,8 @@ }, features: { web_search: true, - image_generation: true + image_generation: true, + code_interpreter: true } }; export let userIds = []; diff --git a/src/lib/components/admin/Users/Groups/Permissions.svelte b/src/lib/components/admin/Users/Groups/Permissions.svelte index 430fabaacf..19f7e54366 100644 --- a/src/lib/components/admin/Users/Groups/Permissions.svelte +++ b/src/lib/components/admin/Users/Groups/Permissions.svelte @@ -22,7 +22,8 @@ }, features: { web_search: true, - image_generation: true + image_generation: true, + code_interpreter: true } }; @@ -257,5 +258,13 @@
+ +
+
+ {$i18n.t('Code Interpreter')} +
+ + +
diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index b2b4a23b33..02a0ec70e1 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -453,7 +453,7 @@
-
{$i18n.t('Image generation')}
+
{$i18n.t('Generate an image')}
{/if} @@ -469,7 +469,7 @@
-
{$i18n.t('Code interpreter')}
+
{$i18n.t('Execute code for analysis')}
{/if} @@ -1167,22 +1167,24 @@ {/if} - - - + + + + + {/if} {/if}
diff --git a/src/lib/i18n/locales/ar-BH/translation.json b/src/lib/i18n/locales/ar-BH/translation.json index 15e39afcad..5dc688866f 100644 --- a/src/lib/i18n/locales/ar-BH/translation.json +++ b/src/lib/i18n/locales/ar-BH/translation.json @@ -175,8 +175,7 @@ "Close": "أغلق", "Code execution": "", "Code formatted successfully": "", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "مجموعة", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "تجريبي", "Explore the cosmos": "", "Export": "تصدير", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "توليد الصور (تجريبي)", "Image Generation Engine": "محرك توليد الصور", diff --git a/src/lib/i18n/locales/bg-BG/translation.json b/src/lib/i18n/locales/bg-BG/translation.json index 66a89c4f05..a98b5c7346 100644 --- a/src/lib/i18n/locales/bg-BG/translation.json +++ b/src/lib/i18n/locales/bg-BG/translation.json @@ -175,8 +175,7 @@ "Close": "Затвори", "Code execution": "", "Code formatted successfully": "", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Колекция", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Експериментално", "Explore the cosmos": "", "Export": "Износ", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Генерация на изображения (Експериментално)", "Image Generation Engine": "Двигател за генериране на изображения", diff --git a/src/lib/i18n/locales/bn-BD/translation.json b/src/lib/i18n/locales/bn-BD/translation.json index 313da2df4a..440e82b89d 100644 --- a/src/lib/i18n/locales/bn-BD/translation.json +++ b/src/lib/i18n/locales/bn-BD/translation.json @@ -175,8 +175,7 @@ "Close": "বন্ধ", "Code execution": "", "Code formatted successfully": "", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "সংগ্রহ", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "পরিক্ষামূলক", "Explore the cosmos": "", "Export": "রপ্তানি", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "ইমেজ জেনারেশন (পরিক্ষামূলক)", "Image Generation Engine": "ইমেজ জেনারেশন ইঞ্জিন", diff --git a/src/lib/i18n/locales/ca-ES/translation.json b/src/lib/i18n/locales/ca-ES/translation.json index 25ffc6a96a..e273cabe03 100644 --- a/src/lib/i18n/locales/ca-ES/translation.json +++ b/src/lib/i18n/locales/ca-ES/translation.json @@ -175,8 +175,7 @@ "Close": "Tancar", "Code execution": "Execució de codi", "Code formatted successfully": "Codi formatat correctament", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Col·lecció", "Color": "Color", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "Exemple: ou=users,dc=foo,dc=example", "Example: sAMAccountName or uid or userPrincipalName": "Exemple: sAMAccountName o uid o userPrincipalName", "Exclude": "Excloure", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Experimental", "Explore the cosmos": "Explorar el cosmos", "Export": "Exportar", @@ -502,7 +501,6 @@ "Ignite curiosity": "Despertar la curiositat", "Image": "Imatge", "Image Compression": "Compressió d'imatges", - "Image generation": "Generació d'imatges", "Image Generation": "Generació d'imatges", "Image Generation (Experimental)": "Generació d'imatges (Experimental)", "Image Generation Engine": "Motor de generació d'imatges", diff --git a/src/lib/i18n/locales/ceb-PH/translation.json b/src/lib/i18n/locales/ceb-PH/translation.json index 102a482247..905e150a1d 100644 --- a/src/lib/i18n/locales/ceb-PH/translation.json +++ b/src/lib/i18n/locales/ceb-PH/translation.json @@ -175,8 +175,7 @@ "Close": "Suod nga", "Code execution": "", "Code formatted successfully": "", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Koleksyon", "Color": "", "ComfyUI": "", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Eksperimento", "Explore the cosmos": "", "Export": "", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Pagmugna og hulagway (Eksperimento)", "Image Generation Engine": "Makina sa paghimo og imahe", diff --git a/src/lib/i18n/locales/cs-CZ/translation.json b/src/lib/i18n/locales/cs-CZ/translation.json index 149f7dd756..da189e4fde 100644 --- a/src/lib/i18n/locales/cs-CZ/translation.json +++ b/src/lib/i18n/locales/cs-CZ/translation.json @@ -175,8 +175,7 @@ "Close": "Zavřít", "Code execution": "Provádění kódu", "Code formatted successfully": "Kód byl úspěšně naformátován.", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "", "Color": "Barva", "ComfyUI": "ComfyUI.", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "Vyloučit", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Experimentální", "Explore the cosmos": "", "Export": "Exportovat", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Generování obrázků (experimentální)", "Image Generation Engine": "Engine pro generování obrázků", diff --git a/src/lib/i18n/locales/da-DK/translation.json b/src/lib/i18n/locales/da-DK/translation.json index edb0e0b968..64802a1328 100644 --- a/src/lib/i18n/locales/da-DK/translation.json +++ b/src/lib/i18n/locales/da-DK/translation.json @@ -175,8 +175,7 @@ "Close": "Luk", "Code execution": "", "Code formatted successfully": "Kode formateret korrekt", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Samling", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Eksperimentel", "Explore the cosmos": "", "Export": "Eksportér", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Billedgenerering (eksperimentel)", "Image Generation Engine": "Billedgenereringsengine", diff --git a/src/lib/i18n/locales/de-DE/translation.json b/src/lib/i18n/locales/de-DE/translation.json index b6eec9bb7b..9e5f1cc3dc 100644 --- a/src/lib/i18n/locales/de-DE/translation.json +++ b/src/lib/i18n/locales/de-DE/translation.json @@ -175,8 +175,7 @@ "Close": "Schließen", "Code execution": "Codeausführung", "Code formatted successfully": "Code erfolgreich formatiert", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Kollektion", "Color": "Farbe", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "Beispiel: ou=users,dc=foo,dc=example", "Example: sAMAccountName or uid or userPrincipalName": "Beispiel: sAMAccountName or uid or userPrincipalName", "Exclude": "Ausschließen", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Experimentell", "Explore the cosmos": "Erforschen Sie das Universum", "Export": "Exportieren", @@ -502,7 +501,6 @@ "Ignite curiosity": "Neugier entfachen", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Bildgenerierung (experimentell)", "Image Generation Engine": "Bildgenerierungs-Engine", diff --git a/src/lib/i18n/locales/dg-DG/translation.json b/src/lib/i18n/locales/dg-DG/translation.json index bd5367f4cd..a309146ee1 100644 --- a/src/lib/i18n/locales/dg-DG/translation.json +++ b/src/lib/i18n/locales/dg-DG/translation.json @@ -175,8 +175,7 @@ "Close": "Close", "Code execution": "", "Code formatted successfully": "", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Collection", "Color": "", "ComfyUI": "", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Much Experiment", "Explore the cosmos": "", "Export": "", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Image Wow (Much Experiment)", "Image Generation Engine": "Image Engine", diff --git a/src/lib/i18n/locales/el-GR/translation.json b/src/lib/i18n/locales/el-GR/translation.json index efbcfe4f29..1302c644bb 100644 --- a/src/lib/i18n/locales/el-GR/translation.json +++ b/src/lib/i18n/locales/el-GR/translation.json @@ -175,8 +175,7 @@ "Close": "Κλείσιμο", "Code execution": "Εκτέλεση κώδικα", "Code formatted successfully": "Ο κώδικας μορφοποιήθηκε επιτυχώς", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Συλλογή", "Color": "Χρώμα", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "Παράδειγμα: ou=users,dc=foo,dc=example", "Example: sAMAccountName or uid or userPrincipalName": "Παράδειγμα: sAMAccountName ή uid ή userPrincipalName", "Exclude": "Εξαίρεση", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Πειραματικό", "Explore the cosmos": "Εξερευνήστε το σύμπαν", "Export": "Εξαγωγή", @@ -502,7 +501,6 @@ "Ignite curiosity": "Ξύπνημα της περιέργειας", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Δημιουργία Εικόνας (Πειραματικό)", "Image Generation Engine": "Μηχανή Δημιουργίας Εικόνας", diff --git a/src/lib/i18n/locales/en-GB/translation.json b/src/lib/i18n/locales/en-GB/translation.json index a8334337ad..d1b7382094 100644 --- a/src/lib/i18n/locales/en-GB/translation.json +++ b/src/lib/i18n/locales/en-GB/translation.json @@ -175,8 +175,7 @@ "Close": "", "Code execution": "", "Code formatted successfully": "", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "", "Color": "", "ComfyUI": "", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "", "Explore the cosmos": "", "Export": "", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "", "Image Generation Engine": "", diff --git a/src/lib/i18n/locales/en-US/translation.json b/src/lib/i18n/locales/en-US/translation.json index a8334337ad..d1b7382094 100644 --- a/src/lib/i18n/locales/en-US/translation.json +++ b/src/lib/i18n/locales/en-US/translation.json @@ -175,8 +175,7 @@ "Close": "", "Code execution": "", "Code formatted successfully": "", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "", "Color": "", "ComfyUI": "", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "", "Explore the cosmos": "", "Export": "", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "", "Image Generation Engine": "", diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index 6d5321b659..9b42ed4e22 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -175,8 +175,7 @@ "Close": "Cerrar", "Code execution": "", "Code formatted successfully": "Se ha formateado correctamente el código.", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Colección", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Experimental", "Explore the cosmos": "", "Export": "Exportar", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Generación de imágenes (experimental)", "Image Generation Engine": "Motor de generación de imágenes", diff --git a/src/lib/i18n/locales/eu-ES/translation.json b/src/lib/i18n/locales/eu-ES/translation.json index ea5cd8d30a..038cf63116 100644 --- a/src/lib/i18n/locales/eu-ES/translation.json +++ b/src/lib/i18n/locales/eu-ES/translation.json @@ -175,8 +175,7 @@ "Close": "Itxi", "Code execution": "Kodearen exekuzioa", "Code formatted successfully": "Kodea ongi formateatu da", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Bilduma", "Color": "Kolorea", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "Adibidea: ou=users,dc=foo,dc=example", "Example: sAMAccountName or uid or userPrincipalName": "Adibidea: sAMAccountName edo uid edo userPrincipalName", "Exclude": "Baztertu", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Esperimentala", "Explore the cosmos": "Esploratu kosmosa", "Export": "Esportatu", @@ -502,7 +501,6 @@ "Ignite curiosity": "Piztu jakin-mina", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Irudi Sorkuntza (Esperimentala)", "Image Generation Engine": "Irudi Sorkuntza Motorea", diff --git a/src/lib/i18n/locales/fa-IR/translation.json b/src/lib/i18n/locales/fa-IR/translation.json index 4da9d3e961..ba5a9a425f 100644 --- a/src/lib/i18n/locales/fa-IR/translation.json +++ b/src/lib/i18n/locales/fa-IR/translation.json @@ -175,8 +175,7 @@ "Close": "بسته", "Code execution": "", "Code formatted successfully": "", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "مجموعه", "Color": "", "ComfyUI": "کومیوآی", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "آزمایشی", "Explore the cosmos": "", "Export": "برون\u200cریزی", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "تولید تصویر (آزمایشی)", "Image Generation Engine": "موتور تولید تصویر", diff --git a/src/lib/i18n/locales/fi-FI/translation.json b/src/lib/i18n/locales/fi-FI/translation.json index 72cba6859c..6f713970a0 100644 --- a/src/lib/i18n/locales/fi-FI/translation.json +++ b/src/lib/i18n/locales/fi-FI/translation.json @@ -175,8 +175,7 @@ "Close": "Sulje", "Code execution": "Koodin suorittaminen", "Code formatted successfully": "Koodin muotoilu onnistui", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Kokoelma", "Color": "Väri", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "Esimerkki: ou=käyttäjät,dc=foo,dc=example", "Example: sAMAccountName or uid or userPrincipalName": "Esimerkki: sAMAccountName tai uid tai userPrincipalName", "Exclude": "Jätä pois", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Kokeellinen", "Explore the cosmos": "Tutki avaruutta", "Export": "Vie", @@ -502,7 +501,6 @@ "Ignite curiosity": "Sytytä uteliaisuus", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Kuvagenerointi (kokeellinen)", "Image Generation Engine": "Kuvagenerointimoottori", diff --git a/src/lib/i18n/locales/fr-CA/translation.json b/src/lib/i18n/locales/fr-CA/translation.json index 617f775815..dc80be42d1 100644 --- a/src/lib/i18n/locales/fr-CA/translation.json +++ b/src/lib/i18n/locales/fr-CA/translation.json @@ -175,8 +175,7 @@ "Close": "Fermer", "Code execution": "", "Code formatted successfully": "Le code a été formaté avec succès", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Collection", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Expérimental", "Explore the cosmos": "", "Export": "Exportation", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Génération d'images (expérimental)", "Image Generation Engine": "Moteur de génération d'images", diff --git a/src/lib/i18n/locales/fr-FR/translation.json b/src/lib/i18n/locales/fr-FR/translation.json index df62bf4a94..070ecd92be 100644 --- a/src/lib/i18n/locales/fr-FR/translation.json +++ b/src/lib/i18n/locales/fr-FR/translation.json @@ -175,8 +175,7 @@ "Close": "Fermer", "Code execution": "Exécution de code", "Code formatted successfully": "Le code a été formaté avec succès", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Collection", "Color": "Couleur", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "Exemple: ou=utilisateurs,dc=foo,dc=exemple", "Example: sAMAccountName or uid or userPrincipalName": "Exemple: sAMAccountName ou uid ou userPrincipalName", "Exclude": "Exclure", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Expérimental", "Explore the cosmos": "Explorer le cosmos", "Export": "Exportation", @@ -502,7 +501,6 @@ "Ignite curiosity": "Éveiller la curiosité", "Image": "Image", "Image Compression": "Compression d'image", - "Image generation": "Génération d'images", "Image Generation": "Génération d'images", "Image Generation (Experimental)": "Génération d'images (expérimental)", "Image Generation Engine": "Moteur de génération d'images", diff --git a/src/lib/i18n/locales/he-IL/translation.json b/src/lib/i18n/locales/he-IL/translation.json index 8a885adc19..51548d0b6b 100644 --- a/src/lib/i18n/locales/he-IL/translation.json +++ b/src/lib/i18n/locales/he-IL/translation.json @@ -175,8 +175,7 @@ "Close": "סגור", "Code execution": "", "Code formatted successfully": "", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "אוסף", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "ניסיוני", "Explore the cosmos": "", "Export": "ייצא", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "יצירת תמונות (ניסיוני)", "Image Generation Engine": "מנוע יצירת תמונות", diff --git a/src/lib/i18n/locales/hi-IN/translation.json b/src/lib/i18n/locales/hi-IN/translation.json index e1b689f617..9caff66c9f 100644 --- a/src/lib/i18n/locales/hi-IN/translation.json +++ b/src/lib/i18n/locales/hi-IN/translation.json @@ -175,8 +175,7 @@ "Close": "बंद करना", "Code execution": "", "Code formatted successfully": "", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "संग्रह", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "प्रयोगात्मक", "Explore the cosmos": "", "Export": "निर्यातित माल", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "छवि निर्माण (प्रायोगिक)", "Image Generation Engine": "छवि निर्माण इंजन", diff --git a/src/lib/i18n/locales/hr-HR/translation.json b/src/lib/i18n/locales/hr-HR/translation.json index 216abd0156..84cb0f62aa 100644 --- a/src/lib/i18n/locales/hr-HR/translation.json +++ b/src/lib/i18n/locales/hr-HR/translation.json @@ -175,8 +175,7 @@ "Close": "Zatvori", "Code execution": "", "Code formatted successfully": "", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Kolekcija", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Eksperimentalno", "Explore the cosmos": "", "Export": "Izvoz", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Generiranje slika (eksperimentalno)", "Image Generation Engine": "Stroj za generiranje slika", diff --git a/src/lib/i18n/locales/hu-HU/translation.json b/src/lib/i18n/locales/hu-HU/translation.json index 2aaf50b94b..b83254a5f8 100644 --- a/src/lib/i18n/locales/hu-HU/translation.json +++ b/src/lib/i18n/locales/hu-HU/translation.json @@ -175,8 +175,7 @@ "Close": "Bezárás", "Code execution": "Kód végrehajtás", "Code formatted successfully": "Kód sikeresen formázva", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Gyűjtemény", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "Kizárás", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Kísérleti", "Explore the cosmos": "", "Export": "Exportálás", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Képgenerálás (kísérleti)", "Image Generation Engine": "Képgenerálási motor", diff --git a/src/lib/i18n/locales/id-ID/translation.json b/src/lib/i18n/locales/id-ID/translation.json index 944576bc89..39eb3058e2 100644 --- a/src/lib/i18n/locales/id-ID/translation.json +++ b/src/lib/i18n/locales/id-ID/translation.json @@ -175,8 +175,7 @@ "Close": "Tutup", "Code execution": "", "Code formatted successfully": "Kode berhasil diformat", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Koleksi", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Percobaan", "Explore the cosmos": "", "Export": "Ekspor", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Pembuatan Gambar (Eksperimental)", "Image Generation Engine": "Mesin Pembuat Gambar", diff --git a/src/lib/i18n/locales/ie-GA/translation.json b/src/lib/i18n/locales/ie-GA/translation.json index 82462e6ac7..a5a0a29775 100644 --- a/src/lib/i18n/locales/ie-GA/translation.json +++ b/src/lib/i18n/locales/ie-GA/translation.json @@ -175,8 +175,7 @@ "Close": "Dún", "Code execution": "Cód a fhorghníomhú", "Code formatted successfully": "Cód formáidithe go rathúil", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Bailiúchán", "Color": "Dath", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "Sampla: ou=úsáideoirí,dc=foo,dc=sampla", "Example: sAMAccountName or uid or userPrincipalName": "Sampla: sAMAaccountName nó uid nó userPrincipalName", "Exclude": "Eisigh", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Turgnamhach", "Explore the cosmos": "Déan iniúchadh ar an cosmos", "Export": "Easpórtáil", @@ -502,7 +501,6 @@ "Ignite curiosity": "Las fiosracht", "Image": "", "Image Compression": "Comhbhrú Íomhá", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Giniúint Íomhá (Turgnaimh)", "Image Generation Engine": "Inneall Giniúna Íomh", diff --git a/src/lib/i18n/locales/it-IT/translation.json b/src/lib/i18n/locales/it-IT/translation.json index 5f8d408453..3b87b0b765 100644 --- a/src/lib/i18n/locales/it-IT/translation.json +++ b/src/lib/i18n/locales/it-IT/translation.json @@ -175,8 +175,7 @@ "Close": "Chiudi", "Code execution": "", "Code formatted successfully": "", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Collezione", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Sperimentale", "Explore the cosmos": "", "Export": "Esportazione", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Generazione di immagini (sperimentale)", "Image Generation Engine": "Motore di generazione immagini", diff --git a/src/lib/i18n/locales/ja-JP/translation.json b/src/lib/i18n/locales/ja-JP/translation.json index a0eb7c8ed2..cfdea0a7ff 100644 --- a/src/lib/i18n/locales/ja-JP/translation.json +++ b/src/lib/i18n/locales/ja-JP/translation.json @@ -175,8 +175,7 @@ "Close": "閉じる", "Code execution": "", "Code formatted successfully": "コードフォーマットに成功しました", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "コレクション", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "実験的", "Explore the cosmos": "", "Export": "エクスポート", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "画像生成 (実験的)", "Image Generation Engine": "画像生成エンジン", diff --git a/src/lib/i18n/locales/ka-GE/translation.json b/src/lib/i18n/locales/ka-GE/translation.json index 913263a622..aef3734b68 100644 --- a/src/lib/i18n/locales/ka-GE/translation.json +++ b/src/lib/i18n/locales/ka-GE/translation.json @@ -175,8 +175,7 @@ "Close": "დახურვა", "Code execution": "", "Code formatted successfully": "", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "ნაკრები", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "ექსპერიმენტალური", "Explore the cosmos": "", "Export": "ექსპორტი", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "სურათების გენერაცია (ექსპერიმენტული)", "Image Generation Engine": "სურათის გენერაციის ძრავა", diff --git a/src/lib/i18n/locales/ko-KR/translation.json b/src/lib/i18n/locales/ko-KR/translation.json index d9a733d217..424b81bd60 100644 --- a/src/lib/i18n/locales/ko-KR/translation.json +++ b/src/lib/i18n/locales/ko-KR/translation.json @@ -175,8 +175,7 @@ "Close": "닫기", "Code execution": "코드 실행", "Code formatted successfully": "성공적으로 코드가 생성되었습니다", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "컬렉션", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "미포함", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "실험적", "Explore the cosmos": "", "Export": "내보내기", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "이미지", "Image Compression": "이미지 압축", - "Image generation": "이미지 생성", "Image Generation": "이미지 생성", "Image Generation (Experimental)": "이미지 생성(실험적)", "Image Generation Engine": "이미지 생성 엔진", diff --git a/src/lib/i18n/locales/lt-LT/translation.json b/src/lib/i18n/locales/lt-LT/translation.json index 527f506410..5253d4d12a 100644 --- a/src/lib/i18n/locales/lt-LT/translation.json +++ b/src/lib/i18n/locales/lt-LT/translation.json @@ -175,8 +175,7 @@ "Close": "Uždaryti", "Code execution": "", "Code formatted successfully": "Kodas suformatuotas sėkmingai", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Kolekcija", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Eksperimentinis", "Explore the cosmos": "", "Export": "Eksportuoti", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Vaizdų generavimas (eksperimentinis)", "Image Generation Engine": "Vaizdų generavimo variklis", diff --git a/src/lib/i18n/locales/ms-MY/translation.json b/src/lib/i18n/locales/ms-MY/translation.json index c43f988903..34fa1b0a7d 100644 --- a/src/lib/i18n/locales/ms-MY/translation.json +++ b/src/lib/i18n/locales/ms-MY/translation.json @@ -175,8 +175,7 @@ "Close": "Tutup", "Code execution": "", "Code formatted successfully": "Kod berjaya diformatkan", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Koleksi", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Percubaan", "Explore the cosmos": "", "Export": "Eksport", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Penjanaan Imej (Percubaan)", "Image Generation Engine": "Enjin Penjanaan Imej", diff --git a/src/lib/i18n/locales/nb-NO/translation.json b/src/lib/i18n/locales/nb-NO/translation.json index 4c6cb38b41..7732981e58 100644 --- a/src/lib/i18n/locales/nb-NO/translation.json +++ b/src/lib/i18n/locales/nb-NO/translation.json @@ -175,8 +175,7 @@ "Close": "Lukk", "Code execution": "Kodekjøring", "Code formatted successfully": "Koden er formatert", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Samling", "Color": "Farge", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "Eksempel: ou=users,dc=foo,dc=example", "Example: sAMAccountName or uid or userPrincipalName": "Eksempel: sAMAccountName eller uid eller userPrincipalName", "Exclude": "Utelukk", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Eksperimentell", "Explore the cosmos": "Utforsk verdensrommet", "Export": "Eksporter", @@ -502,7 +501,6 @@ "Ignite curiosity": "Vekk nysgjerrigheten", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Bildegenerering (eksperimentell)", "Image Generation Engine": "Bildegenereringsmotor", diff --git a/src/lib/i18n/locales/nl-NL/translation.json b/src/lib/i18n/locales/nl-NL/translation.json index 05907cebda..88154fa0fd 100644 --- a/src/lib/i18n/locales/nl-NL/translation.json +++ b/src/lib/i18n/locales/nl-NL/translation.json @@ -175,8 +175,7 @@ "Close": "Sluiten", "Code execution": "Code uitvoeren", "Code formatted successfully": "Code succesvol geformateerd", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Verzameling", "Color": "Kleur", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "Voorbeeld: ou=users,dc=foo,dc=example", "Example: sAMAccountName or uid or userPrincipalName": "Voorbeeld: sAMAccountName or uid or userPrincipalName", "Exclude": "Sluit uit", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Experimenteel", "Explore the cosmos": "Ontdek de kosmos", "Export": "Exporteren", @@ -502,7 +501,6 @@ "Ignite curiosity": "Wakker nieuwsgierigheid aan", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Afbeeldingsgeneratie (Experimenteel)", "Image Generation Engine": "Afbeeldingsgeneratie Engine", diff --git a/src/lib/i18n/locales/pa-IN/translation.json b/src/lib/i18n/locales/pa-IN/translation.json index 6071d362c6..aa7696c69a 100644 --- a/src/lib/i18n/locales/pa-IN/translation.json +++ b/src/lib/i18n/locales/pa-IN/translation.json @@ -175,8 +175,7 @@ "Close": "ਬੰਦ ਕਰੋ", "Code execution": "", "Code formatted successfully": "", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "ਸੰਗ੍ਰਹਿ", "Color": "", "ComfyUI": "ਕੰਫੀਯੂਆਈ", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "ਪਰਮਾਣੂਕ੍ਰਿਤ", "Explore the cosmos": "", "Export": "ਨਿਰਯਾਤ", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "ਚਿੱਤਰ ਜਨਰੇਸ਼ਨ (ਪਰਮਾਣੂਕ੍ਰਿਤ)", "Image Generation Engine": "ਚਿੱਤਰ ਜਨਰੇਸ਼ਨ ਇੰਜਣ", diff --git a/src/lib/i18n/locales/pl-PL/translation.json b/src/lib/i18n/locales/pl-PL/translation.json index 72b7f2047b..5e2d5a58ae 100644 --- a/src/lib/i18n/locales/pl-PL/translation.json +++ b/src/lib/i18n/locales/pl-PL/translation.json @@ -175,8 +175,7 @@ "Close": "Zamknij", "Code execution": "", "Code formatted successfully": "", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Kolekcja", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Eksperymentalne", "Explore the cosmos": "", "Export": "Eksport", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Generowanie obrazu (eksperymentalne)", "Image Generation Engine": "Silnik generowania obrazu", diff --git a/src/lib/i18n/locales/pt-BR/translation.json b/src/lib/i18n/locales/pt-BR/translation.json index 7c51d34b18..dfb1ae78fa 100644 --- a/src/lib/i18n/locales/pt-BR/translation.json +++ b/src/lib/i18n/locales/pt-BR/translation.json @@ -175,8 +175,7 @@ "Close": "Fechar", "Code execution": "Execução de código", "Code formatted successfully": "Código formatado com sucesso", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Coleção", "Color": "Cor", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "Exemplo: ou=users,dc=foo,dc=example", "Example: sAMAccountName or uid or userPrincipalName": "Exemplo: sAMAccountName ou uid ou userPrincipalName", "Exclude": "Excluir", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Experimental", "Explore the cosmos": "Explorar o cosmos", "Export": "Exportar", @@ -502,7 +501,6 @@ "Ignite curiosity": "Desperte a curiosidade", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Geração de Imagem (Experimental)", "Image Generation Engine": "Motor de Geração de Imagem", diff --git a/src/lib/i18n/locales/pt-PT/translation.json b/src/lib/i18n/locales/pt-PT/translation.json index 925070c025..6763f83e32 100644 --- a/src/lib/i18n/locales/pt-PT/translation.json +++ b/src/lib/i18n/locales/pt-PT/translation.json @@ -175,8 +175,7 @@ "Close": "Fechar", "Code execution": "", "Code formatted successfully": "", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Coleção", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Experimental", "Explore the cosmos": "", "Export": "Exportar", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Geração de Imagens (Experimental)", "Image Generation Engine": "Mecanismo de Geração de Imagens", diff --git a/src/lib/i18n/locales/ro-RO/translation.json b/src/lib/i18n/locales/ro-RO/translation.json index 5a2a4a1725..ffd8b649ab 100644 --- a/src/lib/i18n/locales/ro-RO/translation.json +++ b/src/lib/i18n/locales/ro-RO/translation.json @@ -175,8 +175,7 @@ "Close": "Închide", "Code execution": "Executarea codului", "Code formatted successfully": "Cod formatat cu succes", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Colecție", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "Exclude", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Experimental", "Explore the cosmos": "", "Export": "Exportă", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Generare Imagine (Experimental)", "Image Generation Engine": "Motor de Generare a Imaginilor", diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index ec942cdc99..c4e26b43f9 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -175,8 +175,7 @@ "Close": "Закрыть", "Code execution": "Выполнение кода", "Code formatted successfully": "Код успешно отформатирован", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Коллекция", "Color": "Цвет", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "Исключать", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Экспериментальное", "Explore the cosmos": "Исследуйте космос", "Export": "Экспорт", @@ -502,7 +501,6 @@ "Ignite curiosity": "Разожгите любопытство", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Генерация изображений (Экспериментально)", "Image Generation Engine": "Механизм генерации изображений", diff --git a/src/lib/i18n/locales/sk-SK/translation.json b/src/lib/i18n/locales/sk-SK/translation.json index 7830047398..98cb572654 100644 --- a/src/lib/i18n/locales/sk-SK/translation.json +++ b/src/lib/i18n/locales/sk-SK/translation.json @@ -175,8 +175,7 @@ "Close": "Zavrieť", "Code execution": "Vykonávanie kódu", "Code formatted successfully": "Kód bol úspešne naformátovaný.", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "", "Color": "Farba", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "Vylúčiť", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Experimentálne", "Explore the cosmos": "", "Export": "Exportovať", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Generovanie obrázkov (experimentálne)", "Image Generation Engine": "Engine na generovanie obrázkov", diff --git a/src/lib/i18n/locales/sr-RS/translation.json b/src/lib/i18n/locales/sr-RS/translation.json index 63c373ac66..4d88a1cfc8 100644 --- a/src/lib/i18n/locales/sr-RS/translation.json +++ b/src/lib/i18n/locales/sr-RS/translation.json @@ -175,8 +175,7 @@ "Close": "Затвори", "Code execution": "Извршавање кода", "Code formatted successfully": "Код форматиран успешно", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Колекција", "Color": "Боја", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Експериментално", "Explore the cosmos": "", "Export": "Извоз", @@ -502,7 +501,6 @@ "Ignite curiosity": "Покрени знатижељу", "Image": "Слика", "Image Compression": "Компресија слике", - "Image generation": "Стварање слике", "Image Generation": "Стварање слике", "Image Generation (Experimental)": "Стварање слика (експериментално)", "Image Generation Engine": "Мотор за стварање слика", diff --git a/src/lib/i18n/locales/sv-SE/translation.json b/src/lib/i18n/locales/sv-SE/translation.json index 75f74fa0ed..d12023ff15 100644 --- a/src/lib/i18n/locales/sv-SE/translation.json +++ b/src/lib/i18n/locales/sv-SE/translation.json @@ -175,8 +175,7 @@ "Close": "Stäng", "Code execution": "", "Code formatted successfully": "", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Samling", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Experimentell", "Explore the cosmos": "", "Export": "Export", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Bildgenerering (experimentell)", "Image Generation Engine": "Bildgenereringsmotor", diff --git a/src/lib/i18n/locales/th-TH/translation.json b/src/lib/i18n/locales/th-TH/translation.json index 7f741b88be..8e979a8c04 100644 --- a/src/lib/i18n/locales/th-TH/translation.json +++ b/src/lib/i18n/locales/th-TH/translation.json @@ -175,8 +175,7 @@ "Close": "ปิด", "Code execution": "", "Code formatted successfully": "จัดรูปแบบโค้ดสำเร็จแล้ว", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "คอลเลคชัน", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "การทดลอง", "Explore the cosmos": "", "Export": "ส่งออก", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "การสร้างภาพ (การทดลอง)", "Image Generation Engine": "เครื่องยนต์การสร้างภาพ", diff --git a/src/lib/i18n/locales/tk-TW/translation.json b/src/lib/i18n/locales/tk-TW/translation.json index a8334337ad..d1b7382094 100644 --- a/src/lib/i18n/locales/tk-TW/translation.json +++ b/src/lib/i18n/locales/tk-TW/translation.json @@ -175,8 +175,7 @@ "Close": "", "Code execution": "", "Code formatted successfully": "", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "", "Color": "", "ComfyUI": "", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "", "Explore the cosmos": "", "Export": "", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "", "Image Generation Engine": "", diff --git a/src/lib/i18n/locales/tr-TR/translation.json b/src/lib/i18n/locales/tr-TR/translation.json index 344f760b62..3ff23eff46 100644 --- a/src/lib/i18n/locales/tr-TR/translation.json +++ b/src/lib/i18n/locales/tr-TR/translation.json @@ -175,8 +175,7 @@ "Close": "Kapat", "Code execution": "Kod yürütme", "Code formatted successfully": "Kod başarıyla biçimlendirildi", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Koleksiyon", "Color": "Renk", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "Örnek: ou=users,dc=foo,dc=example", "Example: sAMAccountName or uid or userPrincipalName": "Örnek: sAMAccountName or uid or userPrincipalName", "Exclude": "Hariç tut", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Deneysel", "Explore the cosmos": "Evreni keşfet", "Export": "Dışa Aktar", @@ -502,7 +501,6 @@ "Ignite curiosity": "Merak uyandırın", "Image": "", "Image Compression": "Görüntü Sıkıştırma", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Görüntü Oluşturma (Deneysel)", "Image Generation Engine": "Görüntü Oluşturma Motoru", diff --git a/src/lib/i18n/locales/uk-UA/translation.json b/src/lib/i18n/locales/uk-UA/translation.json index b1b2216902..9345a1f1af 100644 --- a/src/lib/i18n/locales/uk-UA/translation.json +++ b/src/lib/i18n/locales/uk-UA/translation.json @@ -175,8 +175,7 @@ "Close": "Закрити", "Code execution": "Виконання коду", "Code formatted successfully": "Код успішно відформатовано", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Колекція", "Color": "Колір", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "Приклад: ou=users,dc=foo,dc=example", "Example: sAMAccountName or uid or userPrincipalName": "Приклад: sAMAccountName або uid або userPrincipalName", "Exclude": "Виключити", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Експериментальне", "Explore the cosmos": "Досліджуйте космос", "Export": "Експорт", @@ -502,7 +501,6 @@ "Ignite curiosity": "Запаліть цікавість", "Image": "Зображення", "Image Compression": "Стиснення зображень", - "Image generation": "Генерація зображень", "Image Generation": "Генерація зображень", "Image Generation (Experimental)": "Генерування зображень (експериментально)", "Image Generation Engine": "Механізм генерації зображень", diff --git a/src/lib/i18n/locales/ur-PK/translation.json b/src/lib/i18n/locales/ur-PK/translation.json index e8ce7e5444..4f5864b554 100644 --- a/src/lib/i18n/locales/ur-PK/translation.json +++ b/src/lib/i18n/locales/ur-PK/translation.json @@ -175,8 +175,7 @@ "Close": "بند کریں", "Code execution": "کوڈ کا نفاذ", "Code formatted successfully": "کوڈ کامیابی سے فارمیٹ ہو گیا", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "کلیکشن", "Color": "", "ComfyUI": "کومفی یو آئی", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "خارج کریں", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "تجرباتی", "Explore the cosmos": "", "Export": "برآمد کریں", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "تصویر کی تخلیق (تجرباتی)", "Image Generation Engine": "امیج جنریشن انجن", diff --git a/src/lib/i18n/locales/vi-VN/translation.json b/src/lib/i18n/locales/vi-VN/translation.json index c6e62f862d..e4c1545309 100644 --- a/src/lib/i18n/locales/vi-VN/translation.json +++ b/src/lib/i18n/locales/vi-VN/translation.json @@ -175,8 +175,7 @@ "Close": "Đóng", "Code execution": "", "Code formatted successfully": "Mã được định dạng thành công", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "Tổng hợp mọi tài liệu", "Color": "", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", "Exclude": "", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "Thử nghiệm", "Explore the cosmos": "", "Export": "Xuất khẩu", @@ -502,7 +501,6 @@ "Ignite curiosity": "", "Image": "", "Image Compression": "", - "Image generation": "", "Image Generation": "", "Image Generation (Experimental)": "Tạo ảnh (thử nghiệm)", "Image Generation Engine": "Công cụ tạo ảnh", diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index ce6c7936b6..4657f4f39e 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -175,8 +175,7 @@ "Close": "关闭", "Code execution": "代码执行", "Code formatted successfully": "代码格式化成功", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "文件集", "Color": "颜色", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "例如:ou=users,dc=foo,dc=example", "Example: sAMAccountName or uid or userPrincipalName": "例如:sAMAccountName 或 uid 或 userPrincipalName", "Exclude": "排除", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "实验性", "Explore the cosmos": "探索宇宙", "Export": "导出", @@ -502,7 +501,6 @@ "Ignite curiosity": "点燃好奇心", "Image": "图像生成", "Image Compression": "图像压缩", - "Image generation": "图像生成", "Image Generation": "图像生成", "Image Generation (Experimental)": "图像生成(实验性)", "Image Generation Engine": "图像生成引擎", diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index db293ea525..5f91cce9cd 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -175,8 +175,7 @@ "Close": "關閉", "Code execution": "程式碼執行", "Code formatted successfully": "程式碼格式化成功", - "Code Intepreter": "", - "Code interpreter": "", + "Code Interpreter": "", "Collection": "收藏", "Color": "顏色", "ComfyUI": "ComfyUI", @@ -402,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "範例:ou=users,dc=foo,dc=example", "Example: sAMAccountName or uid or userPrincipalName": "範例:sAMAccountName 或 uid 或 userPrincipalName", "Exclude": "排除", - "Executes code for analysis": "", + "Execute code for analysis": "", "Experimental": "實驗性功能", "Explore the cosmos": "探索宇宙", "Export": "匯出", @@ -502,7 +501,6 @@ "Ignite curiosity": "點燃好奇心", "Image": "圖片", "Image Compression": "圖片壓縮", - "Image generation": "圖片生成", "Image Generation": "圖片生成", "Image Generation (Experimental)": "圖片生成(實驗性功能)", "Image Generation Engine": "圖片生成引擎", From b20603e01a206f6e47d4f212d1ab64dbab39a016 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 3 Feb 2025 22:05:52 -0800 Subject: [PATCH 10/69] refac --- backend/open_webui/utils/middleware.py | 16 ++++++++-------- scripts/prepare-pyodide.js | 2 ++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 1b04a64bcf..f766a2ed9f 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1116,14 +1116,14 @@ async def process_chat_response( if reasoning_duration: if raw: - content = f'{content}<{block["tag"]}>{block["content"]}\n' + content = f'{content}\n<{block["tag"]}>{block["content"]}\n' else: - content = f'{content}
\nThought for {reasoning_duration} seconds\n{reasoning_display_content}\n
\n' + content = f'{content}\n
\nThought for {reasoning_duration} seconds\n{reasoning_display_content}\n
\n' else: if raw: - content = f'{content}<{block["tag"]}>{block["content"]}\n' + content = f'{content}\n<{block["tag"]}>{block["content"]}\n' else: - content = f'{content}
\nThinking…\n{reasoning_display_content}\n
\n' + content = f'{content}\n
\nThinking…\n{reasoning_display_content}\n
\n' elif block["type"] == "code_interpreter": attributes = block.get("attributes", {}) @@ -1134,14 +1134,14 @@ async def process_chat_response( output = html.escape(json.dumps(output)) if raw: - content = f'{content}\n{block["content"]}\n\n```output\n{output}\n```\n' + content = f'{content}\n\n{block["content"]}\n\n```output\n{output}\n```\n' else: - content = f'{content}
\nAnalyzed\n```{lang}\n{block["content"]}\n```\n
\n' + content = f'{content}\n
\nAnalyzed\n```{lang}\n{block["content"]}\n```\n
\n' else: if raw: - content = f'{content}\n{block["content"]}\n\n' + content = f'{content}\n\n{block["content"]}\n\n' else: - content = f'{content}
\nAnalyzing...\n```{lang}\n{block["content"]}\n```\n
\n' + content = f'{content}\n
\nAnalyzing...\n```{lang}\n{block["content"]}\n```\n
\n' else: block_content = str(block["content"]).strip() diff --git a/scripts/prepare-pyodide.js b/scripts/prepare-pyodide.js index 5aaac5927e..ccc21b4526 100644 --- a/scripts/prepare-pyodide.js +++ b/scripts/prepare-pyodide.js @@ -9,6 +9,8 @@ const packages = [ 'scikit-learn', 'scipy', 'regex', + 'sympy', + 'tiktoken', 'seaborn' ]; From 49e5d012136e29c8d4505bb0a231bfd224b690b6 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 3 Feb 2025 22:07:59 -0800 Subject: [PATCH 11/69] refac: pyodide --- src/lib/components/chat/Messages/CodeBlock.svelte | 8 ++++++-- src/routes/+layout.svelte | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/lib/components/chat/Messages/CodeBlock.svelte b/src/lib/components/chat/Messages/CodeBlock.svelte index daf13b0c1c..37a84ba1e0 100644 --- a/src/lib/components/chat/Messages/CodeBlock.svelte +++ b/src/lib/components/chat/Messages/CodeBlock.svelte @@ -157,7 +157,9 @@ code.includes('sklearn') ? 'scikit-learn' : null, code.includes('scipy') ? 'scipy' : null, code.includes('re') ? 'regex' : null, - code.includes('seaborn') ? 'seaborn' : null + code.includes('seaborn') ? 'seaborn' : null, + code.includes('sympy') ? 'sympy' : null, + code.includes('tiktoken') ? 'tiktoken' : null ].filter(Boolean); console.log(packages); @@ -207,7 +209,9 @@ __builtins__.input = input`); code.includes('sklearn') ? 'scikit-learn' : null, code.includes('scipy') ? 'scipy' : null, code.includes('re') ? 'regex' : null, - code.includes('seaborn') ? 'seaborn' : null + code.includes('seaborn') ? 'seaborn' : null, + code.includes('sympy') ? 'sympy' : null, + code.includes('tiktoken') ? 'tiktoken' : null ].filter(Boolean); console.log(packages); diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 0d1169ed1e..b3d793ff6b 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -116,7 +116,9 @@ code.includes('sklearn') ? 'scikit-learn' : null, code.includes('scipy') ? 'scipy' : null, code.includes('re') ? 'regex' : null, - code.includes('seaborn') ? 'seaborn' : null + code.includes('seaborn') ? 'seaborn' : null, + code.includes('sympy') ? 'sympy' : null, + code.includes('tiktoken') ? 'tiktoken' : null ].filter(Boolean); const pyodideWorker = new PyodideWorker(); From f58ae6bd175a167f056c8bc3af1aa9450568d552 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 3 Feb 2025 22:11:01 -0800 Subject: [PATCH 12/69] refac: styling --- src/lib/components/channel/MessageInput.svelte | 4 ++-- src/lib/components/chat/MessageInput.svelte | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/lib/components/channel/MessageInput.svelte b/src/lib/components/channel/MessageInput.svelte index e12557961d..a48d386ee4 100644 --- a/src/lib/components/channel/MessageInput.svelte +++ b/src/lib/components/channel/MessageInput.svelte @@ -455,7 +455,7 @@
-
+
{#if $settings?.richTextInput ?? true}
{ @@ -1075,7 +1075,7 @@ {/if}
-
+
Date: Tue, 4 Feb 2025 09:14:02 +0100 Subject: [PATCH 13/69] feat: smart suggestions --- src/lib/components/chat/Placeholder.svelte | 1 + src/lib/components/chat/Suggestions.svelte | 131 ++++++++++++++------- 2 files changed, 92 insertions(+), 40 deletions(-) diff --git a/src/lib/components/chat/Placeholder.svelte b/src/lib/components/chat/Placeholder.svelte index 56916a8e5a..756f7099f0 100644 --- a/src/lib/components/chat/Placeholder.svelte +++ b/src/lib/components/chat/Placeholder.svelte @@ -220,6 +220,7 @@ suggestionPrompts={models[selectedModelIdx]?.info?.meta?.suggestion_prompts ?? $config?.default_prompt_suggestions ?? []} + inputValue={prompt} on:select={(e) => { selectSuggestionPrompt(e.detail); }} diff --git a/src/lib/components/chat/Suggestions.svelte b/src/lib/components/chat/Suggestions.svelte index a73d796171..c77c89479e 100644 --- a/src/lib/components/chat/Suggestions.svelte +++ b/src/lib/components/chat/Suggestions.svelte @@ -1,53 +1,104 @@ -{#if prompts.length > 0} -
- - {$i18n.t('Suggested')} -
-{/if} - -
- {#each prompts as prompt, promptIdx} - - {/each} +
+ + {$i18n.t('Suggested')}
+ +
+ {#if filteredPrompts.length > 0} + {#each filteredPrompts as prompt, idx ((prompt.id || prompt.content) + version)} + + {/each} + {:else} + + {/if} +
+ + From b8b82b91565a5066b1d061f8d6d847768716a3b6 Mon Sep 17 00:00:00 2001 From: Jannik Streidl Date: Tue, 4 Feb 2025 09:17:55 +0100 Subject: [PATCH 14/69] i18n --- src/lib/components/chat/Suggestions.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/components/chat/Suggestions.svelte b/src/lib/components/chat/Suggestions.svelte index c77c89479e..6c2defb04f 100644 --- a/src/lib/components/chat/Suggestions.svelte +++ b/src/lib/components/chat/Suggestions.svelte @@ -1,7 +1,7 @@ @@ -77,7 +99,7 @@ {/each} {:else} - + {/if}
From 6ba9ccdd791ad6b579a0ed0d9e78763953324300 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 4 Feb 2025 00:55:55 -0800 Subject: [PATCH 16/69] refac: styling --- src/lib/components/chat/Suggestions.svelte | 69 ++++++++++++---------- 1 file changed, 37 insertions(+), 32 deletions(-) diff --git a/src/lib/components/chat/Suggestions.svelte b/src/lib/components/chat/Suggestions.svelte index 6dddd65836..d1f53a8117 100644 --- a/src/lib/components/chat/Suggestions.svelte +++ b/src/lib/components/chat/Suggestions.svelte @@ -2,6 +2,8 @@ import Fuse from 'fuse.js'; import Bolt from '$lib/components/icons/Bolt.svelte'; import { onMount, getContext, createEventDispatcher } from 'svelte'; + import { WEBUI_NAME } from '$lib/stores'; + import { WEBUI_VERSION } from '$lib/constants'; const i18n = getContext('i18n'); const dispatch = createEventDispatcher(); @@ -11,9 +13,6 @@ export let inputValue = ''; let sortedPrompts = []; - onMount(() => { - sortedPrompts = [...(suggestionPrompts ?? [])].sort(() => Math.random() - 0.5); - }); const fuseOptions = { keys: ['content', 'title'], @@ -22,29 +21,13 @@ let fuse; let filteredPrompts = []; - let oldFilteredPrompts = []; - - // This variable controls the re-rendering of the suggestions - let version = 0; // Initialize Fuse $: fuse = new Fuse(sortedPrompts, fuseOptions); // Update the filteredPrompts if inputValue changes // Only increase version if something wirklich geändert hat - $: { - const newFilteredPrompts = inputValue.trim() - ? fuse.search(inputValue.trim()).map((result) => result.item) - : sortedPrompts; - - // Compare with the oldFilteredPrompts - // If there's a difference, update array + version - if (!arraysEqual(oldFilteredPrompts, newFilteredPrompts)) { - filteredPrompts = newFilteredPrompts; - version += 1; - } - oldFilteredPrompts = newFilteredPrompts; - } + $: getFilteredPrompts(inputValue); // Helper function to check if arrays are the same // (based on unique IDs oder content) @@ -57,21 +40,45 @@ } return true; } + + const getFilteredPrompts = (inputValue) => { + const newFilteredPrompts = inputValue.trim() + ? fuse.search(inputValue.trim()).map((result) => result.item) + : sortedPrompts; + + // Compare with the oldFilteredPrompts + // If there's a difference, update array + version + if (!arraysEqual(filteredPrompts, newFilteredPrompts)) { + filteredPrompts = newFilteredPrompts; + } + }; + + onMount(() => { + sortedPrompts = [...(suggestionPrompts ?? [])].sort(() => Math.random() - 0.5); + getFilteredPrompts(inputValue); + }); -
- - {$i18n.t('Suggested')} +
+ {#if filteredPrompts.length > 0} + + {$i18n.t('Suggested')} + {:else} + + +
+ {$WEBUI_NAME} ‧ v{WEBUI_VERSION} +
+ {/if}
-
+
{#if filteredPrompts.length > 0} - {#each filteredPrompts as prompt, idx ((prompt.id || prompt.content) + version)} + {#each filteredPrompts as prompt, idx (prompt.id || prompt.content)} {/each} - {:else} - {/if}
@@ -116,7 +121,7 @@ } } - .waterfall-anim { + .waterfall { opacity: 0; animation-name: fadeInUp; animation-duration: 200ms; From 12a7f4d43b107ab4f09c27f76eef3dc601833b85 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 4 Feb 2025 01:03:41 -0800 Subject: [PATCH 17/69] refac: styling --- src/lib/components/chat/MessageInput.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index c3ef7e9853..926a704995 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -1334,7 +1334,7 @@ xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" - class="size-6" + class="size-5" > Date: Tue, 4 Feb 2025 01:06:03 -0800 Subject: [PATCH 18/69] refac --- src/lib/components/channel/Messages/Message.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/channel/Messages/Message.svelte b/src/lib/components/channel/Messages/Message.svelte index e0f3497fa3..66cc6f2e69 100644 --- a/src/lib/components/channel/Messages/Message.svelte +++ b/src/lib/components/channel/Messages/Message.svelte @@ -156,7 +156,7 @@ class="mt-1.5 flex flex-shrink-0 items-center text-xs self-center invisible group-hover:visible text-gray-500 font-medium first-letter:capitalize" > - {dayjs(message.created_at / 1000000).format('LT')} + {dayjs(message.created_at / 1000000).format('HH:mm')}
{/if} From bbffdeb758782c293f3109d1ed6c16a43a74852f Mon Sep 17 00:00:00 2001 From: Mavyre Date: Tue, 4 Feb 2025 12:13:54 +0100 Subject: [PATCH 19/69] Corrected chat generation error after failed web search query generation --- backend/open_webui/utils/middleware.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index f766a2ed9f..de3fea2b9a 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -418,7 +418,7 @@ async def chat_web_search_handler( }, } ) - return + return form_data searchQuery = queries[0] From 1868cf0a91c85fffaf07681f510c3efda27ae504 Mon Sep 17 00:00:00 2001 From: kahghi Date: Tue, 4 Feb 2025 22:40:49 +0800 Subject: [PATCH 20/69] increment unstructured package version --- backend/requirements.txt | 2 +- pyproject.toml | 2 +- uv.lock | 317 +++++++++++++++++++-------------------- 3 files changed, 159 insertions(+), 162 deletions(-) diff --git a/backend/requirements.txt b/backend/requirements.txt index cb6caffa6e..14ad4b9cdf 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -60,7 +60,7 @@ fpdf2==2.8.2 pymdown-extensions==10.14.2 docx2txt==0.8 python-pptx==1.0.0 -unstructured==0.15.9 +unstructured==0.16.11 nltk==3.9.1 Markdown==3.7 pypandoc==1.13 diff --git a/pyproject.toml b/pyproject.toml index 116c0b4622..f121089e8f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,7 +65,7 @@ dependencies = [ "pymdown-extensions==10.14.2", "docx2txt==0.8", "python-pptx==1.0.0", - "unstructured==0.15.9", + "unstructured==0.16.11", "nltk==3.9.1", "Markdown==3.7", "pypandoc==1.13", diff --git a/uv.lock b/uv.lock index 00b6c29b43..ab2e57ae44 100644 --- a/uv.lock +++ b/uv.lock @@ -28,6 +28,9 @@ resolution-markers = [ "python_full_version < '3.12' and platform_system == 'Darwin'", "python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_system == 'Darwin'", "python_full_version < '3.12' and platform_system == 'Darwin'", + "python_full_version < '3.12' and platform_system == 'Darwin'", + "python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_system == 'Darwin'", + "python_full_version < '3.12' and platform_system == 'Darwin'", "python_full_version < '3.12.4' and platform_system == 'Darwin'", "python_full_version >= '3.12.4' and platform_system == 'Darwin'", "python_full_version >= '3.13' and platform_system == 'Darwin'", @@ -38,6 +41,10 @@ resolution-markers = [ "python_full_version >= '3.13' and platform_system == 'Darwin'", "python_full_version >= '3.13' and platform_system == 'Darwin'", "python_full_version >= '3.13' and platform_system == 'Darwin'", + "python_full_version >= '3.13' and platform_system == 'Darwin'", + "python_full_version < '3.12' and platform_machine == 'aarch64' and platform_system == 'Linux'", + "python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine == 'aarch64' and platform_system == 'Linux'", + "python_full_version < '3.12' and platform_machine == 'aarch64' and platform_system == 'Linux'", "python_full_version < '3.12' and platform_machine == 'aarch64' and platform_system == 'Linux'", "python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine == 'aarch64' and platform_system == 'Linux'", "python_full_version < '3.12' and platform_machine == 'aarch64' and platform_system == 'Linux'", @@ -72,6 +79,10 @@ resolution-markers = [ "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux'", "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux'", "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux'", + "(python_full_version < '3.12' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version < '3.12' and platform_system != 'Darwin' and platform_system != 'Linux')", + "(python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_system != 'Darwin' and platform_system != 'Linux')", + "(python_full_version < '3.12' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version < '3.12' and platform_system != 'Darwin' and platform_system != 'Linux')", "(python_full_version < '3.12' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version < '3.12' and platform_system != 'Darwin' and platform_system != 'Linux')", "(python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_system != 'Darwin' and platform_system != 'Linux')", "(python_full_version < '3.12' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version < '3.12' and platform_system != 'Darwin' and platform_system != 'Linux')", @@ -106,6 +117,7 @@ resolution-markers = [ "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux')", "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux')", "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux')", ] [[package]] @@ -137,7 +149,7 @@ wheels = [ [[package]] name = "aiohttp" -version = "3.11.8" +version = "3.11.11" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohappyeyeballs" }, @@ -148,53 +160,53 @@ dependencies = [ { name = "propcache" }, { name = "yarl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2c/e5/c7ad0689e8ab74c3ec9bf20e0f667e1278b3738ae19ae3fed21e6a0543ca/aiohttp-3.11.8.tar.gz", hash = "sha256:7bc9d64a2350cbb29a9732334e1a0743cbb6844de1731cbdf5949b235653f3fd", size = 7667904 } +sdist = { url = "https://files.pythonhosted.org/packages/fe/ed/f26db39d29cd3cb2f5a3374304c713fe5ab5a0e4c8ee25a0c45cc6adf844/aiohttp-3.11.11.tar.gz", hash = "sha256:bb49c7f1e6ebf3821a42d81d494f538107610c3a705987f53068546b0e90303e", size = 7669618 } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/95/af92cedf27707a77b4827e45922f87fde9eed1aee9817c2d93fa6f8b54b9/aiohttp-3.11.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f8dd02b44555893adfe7cc4b3b454fee04f9dcec45cf66ef5bb53ebf393f0505", size = 707895 }, - { url = "https://files.pythonhosted.org/packages/d0/a5/8f28d1b1e37810bf9957dfbbc376da5f8cc377b029dec0e20d5ddacc2253/aiohttp-3.11.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:658052941324edea3dee1f681375e70779f55e437e07bdfc4b5bbe65ad53cefb", size = 467535 }, - { url = "https://files.pythonhosted.org/packages/c9/eb/65c5a4163f79a8dcf8ceb69ca012bf5d14c599819ffa4b52b52aaef0c878/aiohttp-3.11.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6c829471a9e2266da4a0666f8a9e215f19320f79778af379c1c7db324ac24ed2", size = 454817 }, - { url = "https://files.pythonhosted.org/packages/58/f5/7939dbf646708ecc90a8c56d3c4b6602628d9cc2ec0df6a99d9b6004ad4a/aiohttp-3.11.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d21951756690f5d86d0215da38eb0fd65def03b5e2a1c08a4a39718a6d0d48f2", size = 1685395 }, - { url = "https://files.pythonhosted.org/packages/ee/00/619262f2f8d0966c55753bbe65020594462072c0dc485b24de0e7f0229b1/aiohttp-3.11.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2fa50ddc6b21cc1ae23e13524d6f75b27e279fdf5cf905b2df6fd171891ac4e2", size = 1742815 }, - { url = "https://files.pythonhosted.org/packages/55/d0/9be70ee6125a4be06aec54157ed47720426c0d3319bcf816c42ef64487be/aiohttp-3.11.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a5afbd805e449048ecebb1a256176e953d4ca9e48bab387d4d1c8524f1c7a95", size = 1783689 }, - { url = "https://files.pythonhosted.org/packages/56/6a/f5f2edab5d5a5ebc00447d906d12822cdc4e80ce8d9aa10b66bbec38caf4/aiohttp-3.11.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea68db69f2a4ddc24b28b8e754fc0b963ed7f9b9a76137f06fe44643d6821fbd", size = 1675581 }, - { url = "https://files.pythonhosted.org/packages/b0/17/9937026e4e152cd475d88e01fe95e0f792165503115d7d12d9a6cd817173/aiohttp-3.11.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80b3ac163145660ce660aed2f1005e6d4de840d39728990b7250525eeec4e4a8", size = 1621760 }, - { url = "https://files.pythonhosted.org/packages/d3/ee/eb9037cd040a27b234d07d714b9e167e6ea56b8a41cdaa365d17a7bcb4a4/aiohttp-3.11.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e9ac0cce897904b77e109e5403ed713187dbdf96832bfd061ac07164264be16c", size = 1652785 }, - { url = "https://files.pythonhosted.org/packages/b7/34/1c0422065285b272c0ddb63cf61dfb42bdbc0d6c3cc51e59ac1023226c31/aiohttp-3.11.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3260c77cff4e35245bc517658bd54d7a64787f71f3c4f723877c82f22835b032", size = 1649670 }, - { url = "https://files.pythonhosted.org/packages/e0/d2/fc45946781450f2cde010b757c609e1189985961d590300a8637ee4c0b87/aiohttp-3.11.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f7fd9c11ffad6b022bf02a41a70418cb2ab3b33f2c27842a5999e3ab78daf280", size = 1732519 }, - { url = "https://files.pythonhosted.org/packages/c3/b1/56f72200edf9eaae46f9dbbda6434bd970afe48ec8ee494e1cf65c04a8fd/aiohttp-3.11.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:16bda233a7b159ab08107e8858fedca90a9de287057fab54cafde51bd83f9819", size = 1753866 }, - { url = "https://files.pythonhosted.org/packages/9f/29/907e42c94e534a94d4b281ace2ae66d339ab84d8976cdb7dc429d098eb0d/aiohttp-3.11.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4867008617bbf86e9fb5b00f72dd0e3a00a579b32233caff834320867f9b7cac", size = 1692152 }, - { url = "https://files.pythonhosted.org/packages/d7/83/f03968fcbedd92db3131d927b2aedc221003e1d1ce188b39ec4da49a6a5b/aiohttp-3.11.8-cp311-cp311-win32.whl", hash = "sha256:17e6b9d8e29e3bfc7f893f327e92c9769d3582cee2fb1652c1431ac3f60115a0", size = 415560 }, - { url = "https://files.pythonhosted.org/packages/5f/c2/44848c66e0538b8cbd708346754efc7928be5071b0ed0bbbe0db21608306/aiohttp-3.11.8-cp311-cp311-win_amd64.whl", hash = "sha256:7f3be4961a5c2c670f31caab7641a37ea2a97031f0d8ae15bcfd36b6bf273200", size = 441670 }, - { url = "https://files.pythonhosted.org/packages/74/bb/975dcefc5d2238f24815ef1df7358643108ae8efe7371d1c700efd1d813a/aiohttp-3.11.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0e3b5bfef913d6be270c81976fbc0cbf66625cd92663bbb7e03b3adbd6aa4ac6", size = 703595 }, - { url = "https://files.pythonhosted.org/packages/f4/f4/4480ffeca247026a89a828ff701f726a39029d63c20d0c3575c05cc21045/aiohttp-3.11.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cb51a81cb637b9a072c9cfae1839e35c6579638861eb3479eb5d6e6ce8bc6782", size = 462675 }, - { url = "https://files.pythonhosted.org/packages/9d/3a/34fb0a91f667eea7050c299c3d84993db953385b1d5c287173a5bdd7a2c0/aiohttp-3.11.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dd2ca84e5f7a35f313a62eb7d6a50bac6760b60bafce34586750712731c0aeff", size = 455270 }, - { url = "https://files.pythonhosted.org/packages/80/b2/6b7b7728552700b8af03ce1370a4da65d8b7d769d6303c5d453968c7e335/aiohttp-3.11.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47c6663df9446aa848b478413219600da4b54bc0409e1ac4bc80fb1a81501363", size = 1679484 }, - { url = "https://files.pythonhosted.org/packages/86/ae/92cd1a78ab4a962dc57482006b770c436d0ddb30b20cea954279577baec0/aiohttp-3.11.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c665ed4b52256614858b20711bbbd2755b0e19ec86870f8ff1645acf9ae9e760", size = 1736045 }, - { url = "https://files.pythonhosted.org/packages/17/9d/37ebdcb0f7da1b8e902accc239592e2824d13d0f723acb36dd4a4201ecc4/aiohttp-3.11.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35d4545e7684da7a954ffc2dce495462cb16a902dffdebe98572408f6aaaee83", size = 1790952 }, - { url = "https://files.pythonhosted.org/packages/02/9e/d572035320752770c00e6b821f4641493a611976f4dec85012b86b49be8e/aiohttp-3.11.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85be3899e6860dd2cd3f4370ded6708e939d00d5ec922a8eb328d114db605a47", size = 1689079 }, - { url = "https://files.pythonhosted.org/packages/b3/f2/faff5fa14c51161a6f074ed56295562bc80b1c54f9933186c4cccabf6ded/aiohttp-3.11.8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0ed9f1f2697713c48efc9ec483ad5d062e4aa91854f090a3eba0b19c002851d", size = 1616554 }, - { url = "https://files.pythonhosted.org/packages/b3/ea/00412278060ea50c2d5c8a48e7f7f94e95e2170079b67c6772475d153927/aiohttp-3.11.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c0dbae99737badf3f5e862088a118e28d3b36f03eb608a6382eddfd68178e05b", size = 1643126 }, - { url = "https://files.pythonhosted.org/packages/1f/93/9cb3e20cb8f73f00b94f92864f7e1937fd2b33059b2536f6532a2afabe6a/aiohttp-3.11.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:beae08f900b2980af4353a0200eb162b39f276fd8a6e43079a540f83964671f4", size = 1649517 }, - { url = "https://files.pythonhosted.org/packages/e3/27/24e8dc49f4f524d728dcb757f74d9b3f5a652ecb5d20158e175b73186280/aiohttp-3.11.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d6f9e5fd1b3ecbaca3e04a15a02d1fa213248608caee99fd5bdddd4759959cf7", size = 1697243 }, - { url = "https://files.pythonhosted.org/packages/16/bf/480de7d40affc95a046c8580e54ff4875a73ac5e7b8cafca9877f0cf089a/aiohttp-3.11.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a7def89a41fe32120d89cd4577f5efbab3c52234c5890066ced8a2f7202dff88", size = 1730902 }, - { url = "https://files.pythonhosted.org/packages/24/ce/74ed004d72a3d41933ac729765cd58aea8b61fd287fc870abc42f2d6b978/aiohttp-3.11.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:98f596cf59292e779bc387f22378a3d2c5e052c9fe2bf822ac4f547c6fe57758", size = 1696230 }, - { url = "https://files.pythonhosted.org/packages/a5/22/fdba63fc388ec880e99868609761671598b01bb402e063d69c338eaf8a27/aiohttp-3.11.8-cp312-cp312-win32.whl", hash = "sha256:b64fa6b76b35b695cd3e5c42a4e568cbea8d41c9e59165e2a43da00976e2027e", size = 410669 }, - { url = "https://files.pythonhosted.org/packages/7e/b8/37683614a4db2763b56376d4a532cceb0496b7984e1596e2da4b7c953166/aiohttp-3.11.8-cp312-cp312-win_amd64.whl", hash = "sha256:afba47981ff73b1794c00dce774334dcfe62664b3b4f78f278b77d21ce9daf43", size = 437086 }, - { url = "https://files.pythonhosted.org/packages/56/12/97a55a4fe36a68e6e51749c2edd546b4792bc47039d78b766273d91178af/aiohttp-3.11.8-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a81525430da5ca356fae6e889daeb6f5cc0d5f0cef88e59cdde48e2394ea1365", size = 696879 }, - { url = "https://files.pythonhosted.org/packages/da/4c/e84542b25315be8e4ec2fd06cfb31713d940fd94d378d7737f357ec7254c/aiohttp-3.11.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7565689e86a88c1d258351ebd14e343337b76a56ca5c0a2c1db96ec28149386f", size = 459325 }, - { url = "https://files.pythonhosted.org/packages/6b/b5/db278214e5f915c7b203ff66735d1a1e9bfc4e8f331ebe72e74e92cfab7c/aiohttp-3.11.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d0f9dbe9763c014c408ad51a027dc9582518e992dc63e2ffe359ac1b4840a560", size = 452061 }, - { url = "https://files.pythonhosted.org/packages/4a/64/00f313ef75b1ac3d3c0bc408da78ffa0e7698cfd9cd55ab1af3693af74ed/aiohttp-3.11.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ca580edc3ccd7f6ea76ad9cf59f5a8756d338e770b5eda7be26bcda8fa7ef53", size = 1662840 }, - { url = "https://files.pythonhosted.org/packages/3b/9d/eaea2168b1bbe13c31c378e887d92802f352cf28ea09acbbffed84eb908e/aiohttp-3.11.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7d141631a7348038fc7b5d1a81b3c9afa9aa056188ded7902fe754028fdea5c5", size = 1716479 }, - { url = "https://files.pythonhosted.org/packages/f1/51/37f8e30e2053e472febe091006b0c763d02538acb1f52d6af2e5d0d7e656/aiohttp-3.11.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64e6b14608a56a4c76c60daac730b0c0eeaf9d10dfc3231f7fc26521a0d628fd", size = 1772536 }, - { url = "https://files.pythonhosted.org/packages/6e/de/70b3caf16eb51cc92ba560800d52c2ce0bd71f0cb94eaa22ba0ba93dfe6a/aiohttp-3.11.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0983d0ce329f2f9dbeb355c3744bd6333f34e0dc56025b6b7d4f285b90acb51e", size = 1673785 }, - { url = "https://files.pythonhosted.org/packages/90/40/d9d6164452f05a5019394b0e76ff2068d5b0d85b0213f369c7435264fde0/aiohttp-3.11.8-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d96b93a46a3742880fa21bcb35c6c40cf27714ec0fb8ec85fe444d73b95131b9", size = 1601468 }, - { url = "https://files.pythonhosted.org/packages/7c/b0/e2b1964aed11246b4bdc35c0f04b4d353fd9826e33b86e382f05f338e51c/aiohttp-3.11.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f4f1779c3142d913c509c2ed1de8b8f920e07a5cd65ac1f57c61cfb6bfded5a4", size = 1614807 }, - { url = "https://files.pythonhosted.org/packages/22/74/f1bd4c746c74520af3fac8efc34f7191a2b07c32f595009e54049e8b3746/aiohttp-3.11.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:48be7cff468c9c0d86a02e6a826e1fe159094b16d5aa2c17703e7317f791b0f9", size = 1616589 }, - { url = "https://files.pythonhosted.org/packages/35/25/283d0da0573a0c32ae00b0d407e4219308c13b338b8f86e0b77339090349/aiohttp-3.11.8-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:daea456b79ca2bacc7f062845bbb1139c3b3231fc83169da5a682cf385416dd1", size = 1684232 }, - { url = "https://files.pythonhosted.org/packages/51/31/b7dd54d33dd604adb988e4fe4cd35b311f03efc4701743f307041b97e749/aiohttp-3.11.8-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:c92e763cf641e10ad9342597d20060ba23de5e411aada96660e679e3f9371189", size = 1714593 }, - { url = "https://files.pythonhosted.org/packages/bd/8e/76f7919864c755c90696df132686b2a9fd9725e7ad9073db4ac9b52e872f/aiohttp-3.11.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a750ee5a177e0f873d6b2d7d0fa6e1e7c658fc0ca8ea56438dcba2ac94bedb09", size = 1669610 }, - { url = "https://files.pythonhosted.org/packages/ec/93/bde417393de7545c194f0aefc9b4062a2b7d0e8ae8e7c85f5fa74971b433/aiohttp-3.11.8-cp313-cp313-win32.whl", hash = "sha256:4448c9c7f77bad48a6569062c0c16deb77fbb7363de1dc71ed087f66fb3b3c96", size = 409458 }, - { url = "https://files.pythonhosted.org/packages/da/e7/45d57621d9caba3c7d2687618c0e12025e477bd035834cf9ec3334e82810/aiohttp-3.11.8-cp313-cp313-win_amd64.whl", hash = "sha256:481075a1949de79a8a6841e0086f2f5f464785c592cf527ed0db2c0cbd0e1ba2", size = 435403 }, + { url = "https://files.pythonhosted.org/packages/34/ae/e8806a9f054e15f1d18b04db75c23ec38ec954a10c0a68d3bd275d7e8be3/aiohttp-3.11.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ba74ec819177af1ef7f59063c6d35a214a8fde6f987f7661f4f0eecc468a8f76", size = 708624 }, + { url = "https://files.pythonhosted.org/packages/c7/e0/313ef1a333fb4d58d0c55a6acb3cd772f5d7756604b455181049e222c020/aiohttp-3.11.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4af57160800b7a815f3fe0eba9b46bf28aafc195555f1824555fa2cfab6c1538", size = 468507 }, + { url = "https://files.pythonhosted.org/packages/a9/60/03455476bf1f467e5b4a32a465c450548b2ce724eec39d69f737191f936a/aiohttp-3.11.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffa336210cf9cd8ed117011085817d00abe4c08f99968deef0013ea283547204", size = 455571 }, + { url = "https://files.pythonhosted.org/packages/be/f9/469588603bd75bf02c8ffb8c8a0d4b217eed446b49d4a767684685aa33fd/aiohttp-3.11.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81b8fe282183e4a3c7a1b72f5ade1094ed1c6345a8f153506d114af5bf8accd9", size = 1685694 }, + { url = "https://files.pythonhosted.org/packages/88/b9/1b7fa43faf6c8616fa94c568dc1309ffee2b6b68b04ac268e5d64b738688/aiohttp-3.11.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af41686ccec6a0f2bdc66686dc0f403c41ac2089f80e2214a0f82d001052c03", size = 1743660 }, + { url = "https://files.pythonhosted.org/packages/2a/8b/0248d19dbb16b67222e75f6aecedd014656225733157e5afaf6a6a07e2e8/aiohttp-3.11.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70d1f9dde0e5dd9e292a6d4d00058737052b01f3532f69c0c65818dac26dc287", size = 1785421 }, + { url = "https://files.pythonhosted.org/packages/c4/11/f478e071815a46ca0a5ae974651ff0c7a35898c55063305a896e58aa1247/aiohttp-3.11.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:249cc6912405917344192b9f9ea5cd5b139d49e0d2f5c7f70bdfaf6b4dbf3a2e", size = 1675145 }, + { url = "https://files.pythonhosted.org/packages/26/5d/284d182fecbb5075ae10153ff7374f57314c93a8681666600e3a9e09c505/aiohttp-3.11.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0eb98d90b6690827dcc84c246811feeb4e1eea683c0eac6caed7549be9c84665", size = 1619804 }, + { url = "https://files.pythonhosted.org/packages/1b/78/980064c2ad685c64ce0e8aeeb7ef1e53f43c5b005edcd7d32e60809c4992/aiohttp-3.11.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec82bf1fda6cecce7f7b915f9196601a1bd1a3079796b76d16ae4cce6d0ef89b", size = 1654007 }, + { url = "https://files.pythonhosted.org/packages/21/8d/9e658d63b1438ad42b96f94da227f2e2c1d5c6001c9e8ffcc0bfb22e9105/aiohttp-3.11.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9fd46ce0845cfe28f108888b3ab17abff84ff695e01e73657eec3f96d72eef34", size = 1650022 }, + { url = "https://files.pythonhosted.org/packages/85/fd/a032bf7f2755c2df4f87f9effa34ccc1ef5cea465377dbaeef93bb56bbd6/aiohttp-3.11.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bd176afcf8f5d2aed50c3647d4925d0db0579d96f75a31e77cbaf67d8a87742d", size = 1732899 }, + { url = "https://files.pythonhosted.org/packages/c5/0c/c2b85fde167dd440c7ba50af2aac20b5a5666392b174df54c00f888c5a75/aiohttp-3.11.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ec2aa89305006fba9ffb98970db6c8221541be7bee4c1d027421d6f6df7d1ce2", size = 1755142 }, + { url = "https://files.pythonhosted.org/packages/bc/78/91ae1a3b3b3bed8b893c5d69c07023e151b1c95d79544ad04cf68f596c2f/aiohttp-3.11.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:92cde43018a2e17d48bb09c79e4d4cb0e236de5063ce897a5e40ac7cb4878773", size = 1692736 }, + { url = "https://files.pythonhosted.org/packages/77/89/a7ef9c4b4cdb546fcc650ca7f7395aaffbd267f0e1f648a436bec33c9b95/aiohttp-3.11.11-cp311-cp311-win32.whl", hash = "sha256:aba807f9569455cba566882c8938f1a549f205ee43c27b126e5450dc9f83cc62", size = 416418 }, + { url = "https://files.pythonhosted.org/packages/fc/db/2192489a8a51b52e06627506f8ac8df69ee221de88ab9bdea77aa793aa6a/aiohttp-3.11.11-cp311-cp311-win_amd64.whl", hash = "sha256:ae545f31489548c87b0cced5755cfe5a5308d00407000e72c4fa30b19c3220ac", size = 442509 }, + { url = "https://files.pythonhosted.org/packages/69/cf/4bda538c502f9738d6b95ada11603c05ec260807246e15e869fc3ec5de97/aiohttp-3.11.11-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e595c591a48bbc295ebf47cb91aebf9bd32f3ff76749ecf282ea7f9f6bb73886", size = 704666 }, + { url = "https://files.pythonhosted.org/packages/46/7b/87fcef2cad2fad420ca77bef981e815df6904047d0a1bd6aeded1b0d1d66/aiohttp-3.11.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3ea1b59dc06396b0b424740a10a0a63974c725b1c64736ff788a3689d36c02d2", size = 464057 }, + { url = "https://files.pythonhosted.org/packages/5a/a6/789e1f17a1b6f4a38939fbc39d29e1d960d5f89f73d0629a939410171bc0/aiohttp-3.11.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8811f3f098a78ffa16e0ea36dffd577eb031aea797cbdba81be039a4169e242c", size = 455996 }, + { url = "https://files.pythonhosted.org/packages/b7/dd/485061fbfef33165ce7320db36e530cd7116ee1098e9c3774d15a732b3fd/aiohttp-3.11.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7227b87a355ce1f4bf83bfae4399b1f5bb42e0259cb9405824bd03d2f4336a", size = 1682367 }, + { url = "https://files.pythonhosted.org/packages/e9/d7/9ec5b3ea9ae215c311d88b2093e8da17e67b8856673e4166c994e117ee3e/aiohttp-3.11.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d40f9da8cabbf295d3a9dae1295c69975b86d941bc20f0a087f0477fa0a66231", size = 1736989 }, + { url = "https://files.pythonhosted.org/packages/d6/fb/ea94927f7bfe1d86178c9d3e0a8c54f651a0a655214cce930b3c679b8f64/aiohttp-3.11.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffb3dc385f6bb1568aa974fe65da84723210e5d9707e360e9ecb51f59406cd2e", size = 1793265 }, + { url = "https://files.pythonhosted.org/packages/40/7f/6de218084f9b653026bd7063cd8045123a7ba90c25176465f266976d8c82/aiohttp-3.11.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8f5f7515f3552d899c61202d99dcb17d6e3b0de777900405611cd747cecd1b8", size = 1691841 }, + { url = "https://files.pythonhosted.org/packages/77/e2/992f43d87831cbddb6b09c57ab55499332f60ad6fdbf438ff4419c2925fc/aiohttp-3.11.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3499c7ffbfd9c6a3d8d6a2b01c26639da7e43d47c7b4f788016226b1e711caa8", size = 1619317 }, + { url = "https://files.pythonhosted.org/packages/96/74/879b23cdd816db4133325a201287c95bef4ce669acde37f8f1b8669e1755/aiohttp-3.11.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8e2bf8029dbf0810c7bfbc3e594b51c4cc9101fbffb583a3923aea184724203c", size = 1641416 }, + { url = "https://files.pythonhosted.org/packages/30/98/b123f6b15d87c54e58fd7ae3558ff594f898d7f30a90899718f3215ad328/aiohttp-3.11.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b6212a60e5c482ef90f2d788835387070a88d52cf6241d3916733c9176d39eab", size = 1646514 }, + { url = "https://files.pythonhosted.org/packages/d7/38/257fda3dc99d6978ab943141d5165ec74fd4b4164baa15e9c66fa21da86b/aiohttp-3.11.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d119fafe7b634dbfa25a8c597718e69a930e4847f0b88e172744be24515140da", size = 1702095 }, + { url = "https://files.pythonhosted.org/packages/0c/f4/ddab089053f9fb96654df5505c0a69bde093214b3c3454f6bfdb1845f558/aiohttp-3.11.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:6fba278063559acc730abf49845d0e9a9e1ba74f85f0ee6efd5803f08b285853", size = 1734611 }, + { url = "https://files.pythonhosted.org/packages/c3/d6/f30b2bc520c38c8aa4657ed953186e535ae84abe55c08d0f70acd72ff577/aiohttp-3.11.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:92fc484e34b733704ad77210c7957679c5c3877bd1e6b6d74b185e9320cc716e", size = 1694576 }, + { url = "https://files.pythonhosted.org/packages/bc/97/b0a88c3f4c6d0020b34045ee6d954058abc870814f6e310c4c9b74254116/aiohttp-3.11.11-cp312-cp312-win32.whl", hash = "sha256:9f5b3c1ed63c8fa937a920b6c1bec78b74ee09593b3f5b979ab2ae5ef60d7600", size = 411363 }, + { url = "https://files.pythonhosted.org/packages/7f/23/cc36d9c398980acaeeb443100f0216f50a7cfe20c67a9fd0a2f1a5a846de/aiohttp-3.11.11-cp312-cp312-win_amd64.whl", hash = "sha256:1e69966ea6ef0c14ee53ef7a3d68b564cc408121ea56c0caa2dc918c1b2f553d", size = 437666 }, + { url = "https://files.pythonhosted.org/packages/49/d1/d8af164f400bad432b63e1ac857d74a09311a8334b0481f2f64b158b50eb/aiohttp-3.11.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:541d823548ab69d13d23730a06f97460f4238ad2e5ed966aaf850d7c369782d9", size = 697982 }, + { url = "https://files.pythonhosted.org/packages/92/d1/faad3bf9fa4bfd26b95c69fc2e98937d52b1ff44f7e28131855a98d23a17/aiohttp-3.11.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:929f3ed33743a49ab127c58c3e0a827de0664bfcda566108989a14068f820194", size = 460662 }, + { url = "https://files.pythonhosted.org/packages/db/61/0d71cc66d63909dabc4590f74eba71f91873a77ea52424401c2498d47536/aiohttp-3.11.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0882c2820fd0132240edbb4a51eb8ceb6eef8181db9ad5291ab3332e0d71df5f", size = 452950 }, + { url = "https://files.pythonhosted.org/packages/07/db/6d04bc7fd92784900704e16b745484ef45b77bd04e25f58f6febaadf7983/aiohttp-3.11.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b63de12e44935d5aca7ed7ed98a255a11e5cb47f83a9fded7a5e41c40277d104", size = 1665178 }, + { url = "https://files.pythonhosted.org/packages/54/5c/e95ade9ae29f375411884d9fd98e50535bf9fe316c9feb0f30cd2ac8f508/aiohttp-3.11.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa54f8ef31d23c506910c21163f22b124facb573bff73930735cf9fe38bf7dff", size = 1717939 }, + { url = "https://files.pythonhosted.org/packages/6f/1c/1e7d5c5daea9e409ed70f7986001b8c9e3a49a50b28404498d30860edab6/aiohttp-3.11.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a344d5dc18074e3872777b62f5f7d584ae4344cd6006c17ba12103759d407af3", size = 1775125 }, + { url = "https://files.pythonhosted.org/packages/5d/66/890987e44f7d2f33a130e37e01a164168e6aff06fce15217b6eaf14df4f6/aiohttp-3.11.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7fb429ab1aafa1f48578eb315ca45bd46e9c37de11fe45c7f5f4138091e2f1", size = 1677176 }, + { url = "https://files.pythonhosted.org/packages/8f/dc/e2ba57d7a52df6cdf1072fd5fa9c6301a68e1cd67415f189805d3eeb031d/aiohttp-3.11.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c341c7d868750e31961d6d8e60ff040fb9d3d3a46d77fd85e1ab8e76c3e9a5c4", size = 1603192 }, + { url = "https://files.pythonhosted.org/packages/6c/9e/8d08a57de79ca3a358da449405555e668f2c8871a7777ecd2f0e3912c272/aiohttp-3.11.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed9ee95614a71e87f1a70bc81603f6c6760128b140bc4030abe6abaa988f1c3d", size = 1618296 }, + { url = "https://files.pythonhosted.org/packages/56/51/89822e3ec72db352c32e7fc1c690370e24e231837d9abd056490f3a49886/aiohttp-3.11.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:de8d38f1c2810fa2a4f1d995a2e9c70bb8737b18da04ac2afbf3971f65781d87", size = 1616524 }, + { url = "https://files.pythonhosted.org/packages/2c/fa/e2e6d9398f462ffaa095e84717c1732916a57f1814502929ed67dd7568ef/aiohttp-3.11.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a9b7371665d4f00deb8f32208c7c5e652059b0fda41cf6dbcac6114a041f1cc2", size = 1685471 }, + { url = "https://files.pythonhosted.org/packages/ae/5f/6bb976e619ca28a052e2c0ca7b0251ccd893f93d7c24a96abea38e332bf6/aiohttp-3.11.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:620598717fce1b3bd14dd09947ea53e1ad510317c85dda2c9c65b622edc96b12", size = 1715312 }, + { url = "https://files.pythonhosted.org/packages/79/c1/756a7e65aa087c7fac724d6c4c038f2faaa2a42fe56dbc1dd62a33ca7213/aiohttp-3.11.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf8d9bfee991d8acc72d060d53860f356e07a50f0e0d09a8dfedea1c554dd0d5", size = 1672783 }, + { url = "https://files.pythonhosted.org/packages/73/ba/a6190ebb02176c7f75e6308da31f5d49f6477b651a3dcfaaaca865a298e2/aiohttp-3.11.11-cp313-cp313-win32.whl", hash = "sha256:9d73ee3725b7a737ad86c2eac5c57a4a97793d9f442599bea5ec67ac9f4bdc3d", size = 410229 }, + { url = "https://files.pythonhosted.org/packages/b8/62/c9fa5bafe03186a0e4699150a7fed9b1e73240996d0d2f0e5f70f3fdf471/aiohttp-3.11.11-cp313-cp313-win_amd64.whl", hash = "sha256:c7a06301c2fb096bdb0bd25fe2011531c1453b9f2c163c8031600ec73af1cc99", size = 436081 }, ] [[package]] @@ -349,14 +361,14 @@ wheels = [ [[package]] name = "authlib" -version = "1.3.2" +version = "1.4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cryptography" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f3/75/47dbab150ef6f9298e227a40c93c7fed5f3ffb67c9fb62cd49f66285e46e/authlib-1.3.2.tar.gz", hash = "sha256:4b16130117f9eb82aa6eec97f6dd4673c3f960ac0283ccdae2897ee4bc030ba2", size = 147313 } +sdist = { url = "https://files.pythonhosted.org/packages/58/73/0aa3d68b1c3caeac01ae0bad7a3d2a23029c4a3b42c7ccb89d752ed67eb2/authlib-1.4.1.tar.gz", hash = "sha256:30ead9ea4993cdbab821dc6e01e818362f92da290c04c7f6a1940f86507a790d", size = 147376 } wheels = [ - { url = "https://files.pythonhosted.org/packages/df/4c/9aa0416a403d5cc80292cb030bcd2c918cce2755e314d8c1aa18656e1e12/Authlib-1.3.2-py2.py3-none-any.whl", hash = "sha256:ede026a95e9f5cdc2d4364a52103f5405e75aa156357e831ef2bfd0bc5094dfc", size = 225111 }, + { url = "https://files.pythonhosted.org/packages/e8/6a/e83a6c04f8c6014c33d97c135782a55370cf60513f8d9f99f1279c7f9c13/Authlib-1.4.1-py2.py3-none-any.whl", hash = "sha256:edc29c3f6a3e72cd9e9f45fff67fc663a2c364022eb0371c003f22d5405915c1", size = 225610 }, ] [[package]] @@ -974,15 +986,16 @@ sdist = { url = "https://files.pythonhosted.org/packages/7d/7d/60ee3f2b16d9bfdfa [[package]] name = "duckduckgo-search" -version = "6.3.7" +version = "7.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, + { name = "lxml" }, { name = "primp" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6d/b7/e6fb81f7629ce690286179dc3690e6c098ce5ef2157735de43d17485ca64/duckduckgo_search-6.3.7.tar.gz", hash = "sha256:53d84966429a6377647e2a1ea7224b657575c7a4d506729bdb837e4ee12915ed", size = 33430 } +sdist = { url = "https://files.pythonhosted.org/packages/41/9e/6fe558d76a018618dd0f62cf8f082b463d31849867b35fb95fbad97a6cd7/duckduckgo_search-7.3.0.tar.gz", hash = "sha256:52fc6a63055d8fbcadaddd292b11067affb87f9768a311f6f7d157a2bb5c40f6", size = 24052 } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/e6/fef4e3d72be75553268d034ff74433746ced67e4f9731f123979d3503d6c/duckduckgo_search-6.3.7-py3-none-any.whl", hash = "sha256:6a831a27977751e8928222f04c99a5d069ff80e2a7c78b699c9b9ac6cb48c41b", size = 27762 }, + { url = "https://files.pythonhosted.org/packages/ba/c1/dbeb844d303d73acd154f934e21d653a592290643f5e6733b55c566ed905/duckduckgo_search-7.3.0-py3-none-any.whl", hash = "sha256:3a9c696ed98148dbc6af3497ca9062fa6dc480266a33d53779cadd1ae1d90b8a", size = 19825 }, ] [[package]] @@ -1032,19 +1045,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/44/5a/f0b9ad6c0a9017e62d4735daaeb11ba3b6c009d69a26141b258cd37b5588/einops-0.8.0-py3-none-any.whl", hash = "sha256:9572fb63046264a862693b0a87088af3bdc8c068fde03de63453cbbde245465f", size = 43223 }, ] -[[package]] -name = "email-validator" -version = "2.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "dnspython" }, - { name = "idna" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/48/ce/13508a1ec3f8bb981ae4ca79ea40384becc868bfae97fd1c942bb3a001b1/email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7", size = 48967 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/ee/bf0adb559ad3c786f12bcbc9296b3f5675f529199bef03e2df281fa1fadb/email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631", size = 33521 }, -] - [[package]] name = "emoji" version = "2.14.1" @@ -1109,38 +1109,16 @@ wheels = [ [[package]] name = "fastapi" -version = "0.111.0" +version = "0.115.7" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "email-validator" }, - { name = "fastapi-cli" }, - { name = "httpx" }, - { name = "jinja2" }, - { name = "orjson" }, { name = "pydantic" }, - { name = "python-multipart" }, { name = "starlette" }, { name = "typing-extensions" }, - { name = "ujson" }, - { name = "uvicorn", extra = ["standard"] }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0e/1f/f4a99e92c583780787e04b05aa9d8a8db9ec76d091d81545948a006f5b44/fastapi-0.111.0.tar.gz", hash = "sha256:b9db9dd147c91cb8b769f7183535773d8741dd46f9dc6676cd82eab510228cd7", size = 288414 } +sdist = { url = "https://files.pythonhosted.org/packages/a2/f5/3f921e59f189e513adb9aef826e2841672d50a399fead4e69afdeb808ff4/fastapi-0.115.7.tar.gz", hash = "sha256:0f106da6c01d88a6786b3248fb4d7a940d071f6f488488898ad5d354b25ed015", size = 293177 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/33/de41e554e5a187d583906e10d53bfae5fd6c07e98cbf4fe5262bd37e739a/fastapi-0.111.0-py3-none-any.whl", hash = "sha256:97ecbf994be0bcbdadedf88c3150252bed7b2087075ac99735403b1b76cc8fc0", size = 91993 }, -] - -[[package]] -name = "fastapi-cli" -version = "0.0.7" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "rich-toolkit" }, - { name = "typer" }, - { name = "uvicorn", extra = ["standard"] }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fe/73/82a5831fbbf8ed75905bacf5b2d9d3dfd6f04d6968b29fe6f72a5ae9ceb1/fastapi_cli-0.0.7.tar.gz", hash = "sha256:02b3b65956f526412515907a0793c9094abd4bfb5457b389f645b0ea6ba3605e", size = 16753 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/e6/5daefc851b514ce2287d8f5d358ae4341089185f78f3217a69d0ce3a390c/fastapi_cli-0.0.7-py3-none-any.whl", hash = "sha256:d549368ff584b2804336c61f192d86ddea080c11255f375959627911944804f4", size = 10705 }, + { url = "https://files.pythonhosted.org/packages/e6/7f/bbd4dcf0faf61bc68a01939256e2ed02d681e9334c1a3cef24d5f77aba9f/fastapi-0.115.7-py3-none-any.whl", hash = "sha256:eb6a8c8bf7f26009e8147111ff15b5177a0e19bb4a45bc3486ab14804539d21e", size = 94777 }, ] [[package]] @@ -1484,6 +1462,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/be/8a/fe34d2f3f9470a27b01c9e76226965863f153d5fbe276f83608562e49c04/google_auth_httplib2-0.2.0-py2.py3-none-any.whl", hash = "sha256:b65a0a2123300dd71281a7bf6e64d65a0759287df52729bdd1ae2e47dc311a3d", size = 9253 }, ] +[[package]] +name = "google-auth-oauthlib" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-auth" }, + { name = "requests-oauthlib" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cc/0f/1772edb8d75ecf6280f1c7f51cbcebe274e8b17878b382f63738fd96cee5/google_auth_oauthlib-1.2.1.tar.gz", hash = "sha256:afd0cad092a2eaa53cd8e8298557d6de1034c6cb4a740500b5357b648af97263", size = 24970 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/8e/22a28dfbd218033e4eeaf3a0533b2b54852b6530da0c0fe934f0cc494b29/google_auth_oauthlib-1.2.1-py2.py3-none-any.whl", hash = "sha256:2d58a27262d55aa1b87678c3ba7142a080098cbc2024f903c62355deb235d91f", size = 24930 }, +] + [[package]] name = "google-cloud-core" version = "2.4.1" @@ -1725,6 +1716,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d5/34/e8b383f35b77c402d28563d2b8f83159319b509bc5f760b15d60b0abf165/hpack-4.0.0-py3-none-any.whl", hash = "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c", size = 32611 }, ] +[[package]] +name = "html5lib" +version = "1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/b6/b55c3f49042f1df3dcd422b7f224f939892ee94f22abcf503a9b7339eaf2/html5lib-1.1.tar.gz", hash = "sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f", size = 272215 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/dd/a834df6482147d48e225a49515aabc28974ad5a4ca3215c18a882565b028/html5lib-1.1-py2.py3-none-any.whl", hash = "sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d", size = 112173 }, +] + [[package]] name = "httpcore" version = "1.0.7" @@ -2806,7 +2810,7 @@ wheels = [ [[package]] name = "open-webui" -version = "0.5.5" +version = "0.5.7" source = { editable = "." } dependencies = [ { name = "aiocache" }, @@ -2836,6 +2840,9 @@ dependencies = [ { name = "fpdf2" }, { name = "ftfy" }, { name = "gcp-storage-emulator" }, + { name = "google-api-python-client" }, + { name = "google-auth-httplib2" }, + { name = "google-auth-oauthlib" }, { name = "google-cloud-storage" }, { name = "google-generativeai" }, { name = "googleapis-common-protos" }, @@ -2896,13 +2903,13 @@ dependencies = [ requires-dist = [ { name = "aiocache" }, { name = "aiofiles" }, - { name = "aiohttp", specifier = "==3.11.8" }, + { name = "aiohttp", specifier = "==3.11.11" }, { name = "alembic", specifier = "==1.14.0" }, { name = "anthropic" }, { name = "apscheduler", specifier = "==3.10.4" }, { name = "argon2-cffi", specifier = "==23.1.0" }, { name = "async-timeout" }, - { name = "authlib", specifier = "==1.3.2" }, + { name = "authlib", specifier = "==1.4.1" }, { name = "bcrypt", specifier = "==4.2.0" }, { name = "black", specifier = "==24.8.0" }, { name = "boto3", specifier = "==1.35.53" }, @@ -2910,17 +2917,20 @@ requires-dist = [ { name = "colbert-ai", specifier = "==0.2.21" }, { name = "docker", specifier = "~=7.1.0" }, { name = "docx2txt", specifier = "==0.8" }, - { name = "duckduckgo-search", specifier = "~=6.3.5" }, + { name = "duckduckgo-search", specifier = "~=7.3.0" }, { name = "einops", specifier = "==0.8.0" }, { name = "extract-msg" }, { name = "fake-useragent", specifier = "==1.5.1" }, - { name = "fastapi", specifier = "==0.111.0" }, + { name = "fastapi", specifier = "==0.115.7" }, { name = "faster-whisper", specifier = "==1.0.3" }, { name = "flask", specifier = "==3.1.0" }, { name = "flask-cors", specifier = "==5.0.0" }, { name = "fpdf2", specifier = "==2.8.2" }, { name = "ftfy", specifier = "==6.2.3" }, { name = "gcp-storage-emulator", specifier = ">=2024.8.3" }, + { name = "google-api-python-client" }, + { name = "google-auth-httplib2" }, + { name = "google-auth-oauthlib" }, { name = "google-cloud-storage", specifier = "==2.19.0" }, { name = "google-generativeai", specifier = "==0.7.2" }, { name = "googleapis-common-protos", specifier = "==1.63.2" }, @@ -2932,7 +2942,7 @@ requires-dist = [ { name = "moto", extras = ["s3"], specifier = ">=5.0.26" }, { name = "nltk", specifier = "==3.9.1" }, { name = "openai" }, - { name = "opencv-python-headless", specifier = "==4.10.0.84" }, + { name = "opencv-python-headless", specifier = "==4.11.0.86" }, { name = "openpyxl", specifier = "==3.1.5" }, { name = "opensearch-py", specifier = "==2.7.1" }, { name = "pandas", specifier = "==2.2.3" }, @@ -2945,7 +2955,7 @@ requires-dist = [ { name = "pydantic", specifier = "==2.9.2" }, { name = "pydub" }, { name = "pyjwt", extras = ["crypto"], specifier = "==2.10.1" }, - { name = "pymdown-extensions", specifier = "==10.11.2" }, + { name = "pymdown-extensions", specifier = "==10.14.2" }, { name = "pymilvus", specifier = "==2.5.0" }, { name = "pymongo" }, { name = "pymysql", specifier = "==1.1.1" }, @@ -2966,11 +2976,11 @@ requires-dist = [ { name = "requests", specifier = "==2.32.3" }, { name = "sentence-transformers", specifier = "==3.3.1" }, { name = "sentencepiece" }, - { name = "soundfile", specifier = "==0.12.1" }, + { name = "soundfile", specifier = "==0.13.1" }, { name = "sqlalchemy", specifier = "==2.0.32" }, { name = "tiktoken" }, { name = "transformers" }, - { name = "unstructured", specifier = "==0.15.9" }, + { name = "unstructured", specifier = "==0.16.11" }, { name = "uvicorn", extras = ["standard"], specifier = "==0.30.6" }, { name = "validators", specifier = "==0.34.0" }, { name = "xlrd", specifier = "==2.0.1" }, @@ -3015,19 +3025,19 @@ wheels = [ [[package]] name = "opencv-python-headless" -version = "4.10.0.84" +version = "4.11.0.86" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2f/7e/d20f68a5f1487adf19d74378d349932a386b1ece3be9be9915e5986db468/opencv-python-headless-4.10.0.84.tar.gz", hash = "sha256:f2017c6101d7c2ef8d7bc3b414c37ff7f54d64413a1847d89970b6b7069b4e1a", size = 95117755 } +sdist = { url = "https://files.pythonhosted.org/packages/36/2f/5b2b3ba52c864848885ba988f24b7f105052f68da9ab0e693cc7c25b0b30/opencv-python-headless-4.11.0.86.tar.gz", hash = "sha256:996eb282ca4b43ec6a3972414de0e2331f5d9cda2b41091a49739c19fb843798", size = 95177929 } wheels = [ - { url = "https://files.pythonhosted.org/packages/1c/9b/583c8d9259f6fc19413f83fd18dd8e6cbc8eefb0b4dc6da52dd151fe3272/opencv_python_headless-4.10.0.84-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:a4f4bcb07d8f8a7704d9c8564c224c8b064c63f430e95b61ac0bffaa374d330e", size = 54835657 }, - { url = "https://files.pythonhosted.org/packages/c0/7b/b4c67f5dad7a9a61c47f7a39e4050e8a4628bd64b3c3daaeb755d759f928/opencv_python_headless-4.10.0.84-cp37-abi3-macosx_12_0_x86_64.whl", hash = "sha256:5ae454ebac0eb0a0b932e3406370aaf4212e6a3fdb5038cc86c7aea15a6851da", size = 56475470 }, - { url = "https://files.pythonhosted.org/packages/91/61/f838ce2046f3ec3591ea59ea3549085e399525d3b4558c4ed60b55ed88c0/opencv_python_headless-4.10.0.84-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46071015ff9ab40fccd8a163da0ee14ce9846349f06c6c8c0f2870856ffa45db", size = 29329705 }, - { url = "https://files.pythonhosted.org/packages/d1/09/248f86a404567303cdf120e4a301f389b68e3b18e5c0cc428de327da609c/opencv_python_headless-4.10.0.84-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:377d08a7e48a1405b5e84afcbe4798464ce7ee17081c1c23619c8b398ff18295", size = 49858781 }, - { url = "https://files.pythonhosted.org/packages/30/c0/66f88d58500e990a9a0a5c06f98862edf1d0a3a430781218a8c193948438/opencv_python_headless-4.10.0.84-cp37-abi3-win32.whl", hash = "sha256:9092404b65458ed87ce932f613ffbb1106ed2c843577501e5768912360fc50ec", size = 28675298 }, - { url = "https://files.pythonhosted.org/packages/26/d0/22f68eb23eea053a31655960f133c0be9726c6a881547e6e9e7e2a946c4f/opencv_python_headless-4.10.0.84-cp37-abi3-win_amd64.whl", hash = "sha256:afcf28bd1209dd58810d33defb622b325d3cbe49dcd7a43a902982c33e5fad05", size = 38754031 }, + { url = "https://files.pythonhosted.org/packages/dc/53/2c50afa0b1e05ecdb4603818e85f7d174e683d874ef63a6abe3ac92220c8/opencv_python_headless-4.11.0.86-cp37-abi3-macosx_13_0_arm64.whl", hash = "sha256:48128188ade4a7e517237c8e1e11a9cdf5c282761473383e77beb875bb1e61ca", size = 37326460 }, + { url = "https://files.pythonhosted.org/packages/3b/43/68555327df94bb9b59a1fd645f63fafb0762515344d2046698762fc19d58/opencv_python_headless-4.11.0.86-cp37-abi3-macosx_13_0_x86_64.whl", hash = "sha256:a66c1b286a9de872c343ee7c3553b084244299714ebb50fbdcd76f07ebbe6c81", size = 56723330 }, + { url = "https://files.pythonhosted.org/packages/45/be/1438ce43ebe65317344a87e4b150865c5585f4c0db880a34cdae5ac46881/opencv_python_headless-4.11.0.86-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6efabcaa9df731f29e5ea9051776715b1bdd1845d7c9530065c7951d2a2899eb", size = 29487060 }, + { url = "https://files.pythonhosted.org/packages/dd/5c/c139a7876099916879609372bfa513b7f1257f7f1a908b0bdc1c2328241b/opencv_python_headless-4.11.0.86-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e0a27c19dd1f40ddff94976cfe43066fbbe9dfbb2ec1907d66c19caef42a57b", size = 49969856 }, + { url = "https://files.pythonhosted.org/packages/95/dd/ed1191c9dc91abcc9f752b499b7928aacabf10567bb2c2535944d848af18/opencv_python_headless-4.11.0.86-cp37-abi3-win32.whl", hash = "sha256:f447d8acbb0b6f2808da71fddd29c1cdd448d2bc98f72d9bb78a7a898fc9621b", size = 29324425 }, + { url = "https://files.pythonhosted.org/packages/86/8a/69176a64335aed183529207ba8bc3d329c2999d852b4f3818027203f50e6/opencv_python_headless-4.11.0.86-cp37-abi3-win_amd64.whl", hash = "sha256:6c304df9caa7a6a5710b91709dd4786bf20a74d57672b3c31f7033cc638174ca", size = 39402386 }, ] [[package]] @@ -3449,18 +3459,18 @@ wheels = [ [[package]] name = "primp" -version = "0.10.0" +version = "0.11.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/89/53593df582f3bb35ad5e1a96cb00246c8b6f8b7f116253b9542c8d8c44b9/primp-0.10.0.tar.gz", hash = "sha256:93142590a5a1958240ee5b74faaf2f55185ed499ccaabc622d71cb0cc8a47a0b", size = 84282 } +sdist = { url = "https://files.pythonhosted.org/packages/2f/9a/d15ffe51d91fb2702f0bf1a9538ca3b08d61bd43753ba139c7da4d977928/primp-0.11.0.tar.gz", hash = "sha256:8e3f05f1c4990f1340541be5bd81f3b3bd5abd83d7beb1512e6ca1c0b322faeb", size = 90020 } wheels = [ - { url = "https://files.pythonhosted.org/packages/70/ef/ecfbcea6a136ef758ba3f5644dc4d06df506f669e9381d52fa09b0952de7/primp-0.10.0-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:7a91a089bf2962b5b56c8d83d09535eb81cf55b53c09d83208b9e5a715cf2c17", size = 3164015 }, - { url = "https://files.pythonhosted.org/packages/84/15/7fedf1280f04c17fb06095694403d27134758b70bf508948a796ed668f06/primp-0.10.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:0128453cce81552f7aa6ac2bf9b8741b7816cdb2d10536e62c77daaf6483b9af", size = 2929848 }, - { url = "https://files.pythonhosted.org/packages/26/56/dae7ba34f6f41402b1e0a8c17640fa5b44c06012d5d07d69399da2db5cea/primp-0.10.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a959e9a83cff0ae7a85a02cc183e4db636f69ff41dddb7c4e32f997924923417", size = 3251850 }, - { url = "https://files.pythonhosted.org/packages/76/39/20c100140827f0e82e8c3c68284be3292b8345dd5bb7dd5886cd08a2f984/primp-0.10.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:8e711cfa019fa9bdc0cba4d5d596f319c884a4329e505bd73e92eee0b024061a", size = 3214061 }, - { url = "https://files.pythonhosted.org/packages/4b/bc/2ce42b5024931c2178999f526a0d6654285e95c178ed5f1c35e3e16ef9bb/primp-0.10.0-cp38-abi3-manylinux_2_34_armv7l.whl", hash = "sha256:b859336d9a35669b68a29c5d8f050e0dca380452dabf6c9667bb8599f010d164", size = 2978905 }, - { url = "https://files.pythonhosted.org/packages/9b/07/c42bc5772e5f1655139d7a2b72f141f8a1fa9686684af50c7aab3d944840/primp-0.10.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:dc875cc9a733fe3e6344a37f2b5888e0a9605bb37807fc3009f3b03786408f34", size = 3386043 }, - { url = "https://files.pythonhosted.org/packages/f5/9f/2b6c0322e33b8ee88489e5eac8f5e7dfe4a53cf75cc43cd6e712e76597e0/primp-0.10.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a27c5d997c37bf8237963c11e376eaa66e7eccee39164e3e259a1c3767c304d6", size = 3577429 }, - { url = "https://files.pythonhosted.org/packages/70/cc/8dd693b9e2577690e86fb589478e8788df2920859e04743800eb7d02213c/primp-0.10.0-cp38-abi3-win_amd64.whl", hash = "sha256:7fe94c3164c2efffff08f7f54c018ac445112961b3ce4f4f499315ba0a9d1ef3", size = 3116121 }, + { url = "https://files.pythonhosted.org/packages/c7/0f/7c1b7cc81144ddeadd19bf7aaf49858baa2587cdb72c57073ccddc94ca06/primp-0.11.0-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:59f65758dc2b46e5f3512ae1567687fed79c228d4a2b20959671bd1096ba3b49", size = 3176020 }, + { url = "https://files.pythonhosted.org/packages/18/ae/53ce3e10e06fc2a031e18d4bd0e2597e9c33bc7a36bc3211eb0bf4479f5a/primp-0.11.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:37c8507dbacb3db162e62af88a81552b8333fc96957a88d1af39c39180b1221d", size = 2947624 }, + { url = "https://files.pythonhosted.org/packages/c5/a3/5671608fe361de866b54a180a2a5f0c3166f5dfe58e928888ece54690ca3/primp-0.11.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19cfa9cd6ae933d5580ca25403a27f8000c6a8a394a68365ec7264c264135b4d", size = 3271847 }, + { url = "https://files.pythonhosted.org/packages/ae/f8/ed6f63c236dd3054f8b67e39ea50f3c83abe74a3fde0ece7cac4db6e3507/primp-0.11.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ae9325d25dc549fb9e2a32fff44e946eafa6980953b98207df36d2141655f274", size = 3247462 }, + { url = "https://files.pythonhosted.org/packages/f8/fe/78012539e98407f1d97732868704b043b21d7b213a29c67a4cb0bbb9ec2c/primp-0.11.0-cp38-abi3-manylinux_2_34_armv7l.whl", hash = "sha256:9aa35c8f1b84fac1f65b5d22067dea4c85976252e37c2feb9eee3bbc4a1a72ed", size = 3001606 }, + { url = "https://files.pythonhosted.org/packages/31/fb/68420d637713dbd184e59f3a8e30f405f1e1e5f4e8f7340af47677258031/primp-0.11.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2124d403849fc06de36fddc5c483659503fed6b27b73bc7d3671e9a07ecd3713", size = 3406570 }, + { url = "https://files.pythonhosted.org/packages/03/97/acea5b8aff4adc56da6207c38fa0e8b5a87ddca57611c5696e40d24ac3ed/primp-0.11.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:73f52af05fd8ef7fec16e6a824167fc96645d61ae97e5df576d2fd7e2998a67f", size = 3597805 }, + { url = "https://files.pythonhosted.org/packages/0a/17/9adffa9b7802a5c960398ada038440e320e85dfbe1b648df26c8a62919d2/primp-0.11.0-cp38-abi3-win_amd64.whl", hash = "sha256:7281c343f8235438295864b347c09f918aca9616c509e5b9fdb3b01201cda1dc", size = 3135289 }, ] [[package]] @@ -3803,15 +3813,15 @@ crypto = [ [[package]] name = "pymdown-extensions" -version = "10.11.2" +version = "10.14.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f4/71/2730a20e9e3752393d78998347f8b1085ef9c417646ea9befbeef221e3c4/pymdown_extensions-10.11.2.tar.gz", hash = "sha256:bc8847ecc9e784a098efd35e20cba772bc5a1b529dfcef9dc1972db9021a1049", size = 830241 } +sdist = { url = "https://files.pythonhosted.org/packages/aa/7b/de388047c577e43dc45ce35c23b9b349ec3df8c7023c3e3c4d413a850982/pymdown_extensions-10.14.2.tar.gz", hash = "sha256:7a77b8116dc04193f2c01143760a43387bd9dc4aa05efacb7d838885a7791253", size = 846777 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/35/c0edf199257ef0a7d407d29cd51c4e70d1dad4370a5f44deb65a7a5475e2/pymdown_extensions-10.11.2-py3-none-any.whl", hash = "sha256:41cdde0a77290e480cf53892f5c5e50921a7ee3e5cd60ba91bf19837b33badcf", size = 259044 }, + { url = "https://files.pythonhosted.org/packages/e7/a3/61527d80d84e9fd4d97649322e83bd7efde8200fc07fe34469c8c2bd0d91/pymdown_extensions-10.14.2-py3-none-any.whl", hash = "sha256:f45bc5892410e54fd738ab8ccd736098b7ff0cb27fdb4bf24d0a0c6584bc90e1", size = 264459 }, ] [[package]] @@ -4391,20 +4401,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424 }, ] -[[package]] -name = "rich-toolkit" -version = "0.13.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "rich" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5b/8a/71cfbf6bf6257ea785d1f030c22468f763eea1b3e5417620f2ba9abd6dca/rich_toolkit-0.13.2.tar.gz", hash = "sha256:fea92557530de7c28f121cbed572ad93d9e0ddc60c3ca643f1b831f2f56b95d3", size = 72288 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/1b/1c2f43af46456050b27810a7a013af8a7e12bc545a0cdc00eb0df55eb769/rich_toolkit-0.13.2-py3-none-any.whl", hash = "sha256:f3f6c583e5283298a2f7dbd3c65aca18b7f818ad96174113ab5bec0b0e35ed61", size = 13566 }, -] - [[package]] name = "rsa" version = "4.9" @@ -4668,20 +4664,21 @@ wheels = [ [[package]] name = "soundfile" -version = "0.12.1" +version = "0.13.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, + { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6f/96/5ff33900998bad58d5381fd1acfcdac11cbea4f08fc72ac1dc25ffb13f6a/soundfile-0.12.1.tar.gz", hash = "sha256:e8e1017b2cf1dda767aef19d2fd9ee5ebe07e050d430f77a0a7c66ba08b8cdae", size = 43184 } +sdist = { url = "https://files.pythonhosted.org/packages/e1/41/9b873a8c055582859b239be17902a85339bec6a30ad162f98c9b0288a2cc/soundfile-0.13.1.tar.gz", hash = "sha256:b2c68dab1e30297317080a5b43df57e302584c49e2942defdde0acccc53f0e5b", size = 46156 } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/bc/cd845c2dbb4d257c744cd58a5bcdd9f6d235ca317e7e22e49564ec88dcd9/soundfile-0.12.1-py2.py3-none-any.whl", hash = "sha256:828a79c2e75abab5359f780c81dccd4953c45a2c4cd4f05ba3e233ddf984b882", size = 24030 }, - { url = "https://files.pythonhosted.org/packages/c8/73/059c84343be6509b480013bf1eeb11b96c5f9eb48deff8f83638011f6b2c/soundfile-0.12.1-py2.py3-none-macosx_10_9_x86_64.whl", hash = "sha256:d922be1563ce17a69582a352a86f28ed8c9f6a8bc951df63476ffc310c064bfa", size = 1213305 }, - { url = "https://files.pythonhosted.org/packages/71/87/31d2b9ed58975cec081858c01afaa3c43718eb0f62b5698a876d94739ad0/soundfile-0.12.1-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:bceaab5c4febb11ea0554566784bcf4bc2e3977b53946dda2b12804b4fe524a8", size = 1075977 }, - { url = "https://files.pythonhosted.org/packages/ad/bd/0602167a213d9184fc688b1086dc6d374b7ae8c33eccf169f9b50ce6568c/soundfile-0.12.1-py2.py3-none-manylinux_2_17_x86_64.whl", hash = "sha256:2dc3685bed7187c072a46ab4ffddd38cef7de9ae5eb05c03df2ad569cf4dacbc", size = 1257765 }, - { url = "https://files.pythonhosted.org/packages/c1/07/7591f4efd29e65071c3a61b53725036ea8f73366a4920a481ebddaf8d0ca/soundfile-0.12.1-py2.py3-none-manylinux_2_31_x86_64.whl", hash = "sha256:074247b771a181859d2bc1f98b5ebf6d5153d2c397b86ee9e29ba602a8dfe2a6", size = 1174746 }, - { url = "https://files.pythonhosted.org/packages/03/0f/49941ed8a2d94e5b36ea94346fb1d2b22e847fede902e05be4c96f26be7d/soundfile-0.12.1-py2.py3-none-win32.whl", hash = "sha256:59dfd88c79b48f441bbf6994142a19ab1de3b9bb7c12863402c2bc621e49091a", size = 888234 }, - { url = "https://files.pythonhosted.org/packages/50/ff/26a4ee48d0b66625a4e4028a055b9f25bc9d7c7b2d17d21a45137621a50d/soundfile-0.12.1-py2.py3-none-win_amd64.whl", hash = "sha256:0d86924c00b62552b650ddd28af426e3ff2d4dc2e9047dae5b3d8452e0a49a77", size = 1009109 }, + { url = "https://files.pythonhosted.org/packages/64/28/e2a36573ccbcf3d57c00626a21fe51989380636e821b341d36ccca0c1c3a/soundfile-0.13.1-py2.py3-none-any.whl", hash = "sha256:a23c717560da2cf4c7b5ae1142514e0fd82d6bbd9dfc93a50423447142f2c445", size = 25751 }, + { url = "https://files.pythonhosted.org/packages/ea/ab/73e97a5b3cc46bba7ff8650a1504348fa1863a6f9d57d7001c6b67c5f20e/soundfile-0.13.1-py2.py3-none-macosx_10_9_x86_64.whl", hash = "sha256:82dc664d19831933fe59adad199bf3945ad06d84bc111a5b4c0d3089a5b9ec33", size = 1142250 }, + { url = "https://files.pythonhosted.org/packages/a0/e5/58fd1a8d7b26fc113af244f966ee3aecf03cb9293cb935daaddc1e455e18/soundfile-0.13.1-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:743f12c12c4054921e15736c6be09ac26b3b3d603aef6fd69f9dde68748f2593", size = 1101406 }, + { url = "https://files.pythonhosted.org/packages/58/ae/c0e4a53d77cf6e9a04179535766b3321b0b9ced5f70522e4caf9329f0046/soundfile-0.13.1-py2.py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:9c9e855f5a4d06ce4213f31918653ab7de0c5a8d8107cd2427e44b42df547deb", size = 1235729 }, + { url = "https://files.pythonhosted.org/packages/57/5e/70bdd9579b35003a489fc850b5047beeda26328053ebadc1fb60f320f7db/soundfile-0.13.1-py2.py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:03267c4e493315294834a0870f31dbb3b28a95561b80b134f0bd3cf2d5f0e618", size = 1313646 }, + { url = "https://files.pythonhosted.org/packages/fe/df/8c11dc4dfceda14e3003bb81a0d0edcaaf0796dd7b4f826ea3e532146bba/soundfile-0.13.1-py2.py3-none-win32.whl", hash = "sha256:c734564fab7c5ddf8e9be5bf70bab68042cd17e9c214c06e365e20d64f9a69d5", size = 899881 }, + { url = "https://files.pythonhosted.org/packages/14/e9/6b761de83277f2f02ded7e7ea6f07828ec78e4b229b80e4ca55dd205b9dc/soundfile-0.13.1-py2.py3-none-win_amd64.whl", hash = "sha256:1e70a05a0626524a69e9f0f4dd2ec174b4e9567f4d8b6c11d38b5c289be36ee9", size = 1019162 }, ] [[package]] @@ -4724,14 +4721,14 @@ wheels = [ [[package]] name = "starlette" -version = "0.37.2" +version = "0.45.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/61/b5/6bceb93ff20bd7ca36e6f7c540581abb18f53130fabb30ba526e26fd819b/starlette-0.37.2.tar.gz", hash = "sha256:9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823", size = 2843736 } +sdist = { url = "https://files.pythonhosted.org/packages/ff/fb/2984a686808b89a6781526129a4b51266f678b2d2b97ab2d325e56116df8/starlette-0.45.3.tar.gz", hash = "sha256:2cbcba2a75806f8a41c722141486f37c28e30a0921c5f6fe4346cb0dcee1302f", size = 2574076 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/18/31fa32ed6c68ba66220204ef0be798c349d0a20c1901f9d4a794e08c76d8/starlette-0.37.2-py3-none-any.whl", hash = "sha256:6fe59f29268538e5d0d182f2791a479a0c64638e6935d1c6989e63fb2699c6ee", size = 71908 }, + { url = "https://files.pythonhosted.org/packages/d9/61/f2b52e107b1fc8944b33ef56bf6ac4ebbe16d91b94d2b87ce013bf63fb84/starlette-0.45.3-py3-none-any.whl", hash = "sha256:dfb6d332576f136ec740296c7e8bb8c8a7125044e7c6da30744718880cdd059d", size = 71507 }, ] [[package]] @@ -4746,15 +4743,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b2/fe/81695a1aa331a842b582453b605175f419fe8540355886031328089d840a/sympy-1.13.1-py3-none-any.whl", hash = "sha256:db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8", size = 6189177 }, ] -[[package]] -name = "tabulate" -version = "0.9.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252 }, -] - [[package]] name = "tenacity" version = "9.0.0" @@ -5009,7 +4997,7 @@ wheels = [ [[package]] name = "unstructured" -version = "0.15.9" +version = "0.16.11" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "backoff" }, @@ -5018,6 +5006,7 @@ dependencies = [ { name = "dataclasses-json" }, { name = "emoji" }, { name = "filetype" }, + { name = "html5lib" }, { name = "langdetect" }, { name = "lxml" }, { name = "nltk" }, @@ -5028,15 +5017,14 @@ dependencies = [ { name = "python-oxmsg" }, { name = "rapidfuzz" }, { name = "requests" }, - { name = "tabulate" }, { name = "tqdm" }, { name = "typing-extensions" }, { name = "unstructured-client" }, { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/74/db/be587e728e2edf684a6c2ead46d05e02951f78b2949c571fed78266941eb/unstructured-0.15.9.tar.gz", hash = "sha256:de26d0e38bac4aa3ae2950f175d0c53a5ccae5c45806b67f55a4af8dea4c407a", size = 1858477 } +sdist = { url = "https://files.pythonhosted.org/packages/08/c3/5bd80074a63c972f0f9adac5276955f6cbcceb71ac05ae72cc524ad93813/unstructured-0.16.11.tar.gz", hash = "sha256:33ebf68aae11ce33c8a96335296557b5abd8ba96eaba3e5a1554c0b9eee40bb5", size = 1664314 } wheels = [ - { url = "https://files.pythonhosted.org/packages/58/7b/93126eed91753d65d0c07e9f4c80bd715b6b6003f139483024ae00749aa2/unstructured-0.15.9-py3-none-any.whl", hash = "sha256:ddbb043461cfb9efa1d48a18e62e3b43ff4e0cec25fbf0f28bf345589c1af4d2", size = 2120717 }, + { url = "https://files.pythonhosted.org/packages/59/67/71d1e61e8127dd9ab66117d3c5ebfc6f87c1d00bf13ff3bcc837feed6e09/unstructured-0.16.11-py3-none-any.whl", hash = "sha256:a92d5bc2c2b7bb23369641fb7a7f0daba1775639199306ce4cd83ca564a03763", size = 1748042 }, ] [[package]] @@ -5196,6 +5184,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 }, ] +[[package]] +name = "webencodings" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774 }, +] + [[package]] name = "websocket-client" version = "1.8.0" From d6b88c7ef747a0f25eff8c1645cb47a8438f68ee Mon Sep 17 00:00:00 2001 From: rossm Date: Tue, 4 Feb 2025 10:43:19 -0500 Subject: [PATCH 21/69] fixing french typo --- src/lib/i18n/locales/fr-CA/translation.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/i18n/locales/fr-CA/translation.json b/src/lib/i18n/locales/fr-CA/translation.json index 051780d71d..7cc1b10b10 100644 --- a/src/lib/i18n/locales/fr-CA/translation.json +++ b/src/lib/i18n/locales/fr-CA/translation.json @@ -887,7 +887,7 @@ "Subtitle (e.g. about the Roman Empire)": "Sous-titres (par ex. sur l'Empire romain)", "Success": "Réussite", "Successfully updated.": "Mise à jour réussie.", - "Suggested": "Sugéré", + "Suggested": "Suggéré", "Support": "", "Support this plugin:": "", "Sync directory": "", From 2bb6b49f116093acf63b842862386015f7e0e1f9 Mon Sep 17 00:00:00 2001 From: "M.Abdulrahman Alnaseer" <20760062+abdalrohman@users.noreply.github.com> Date: Tue, 4 Feb 2025 21:13:05 +0300 Subject: [PATCH 22/69] feat: implement Exa search engine integration --- backend/open_webui/config.py | 5 ++ backend/open_webui/main.py | 2 + backend/open_webui/retrieval/web/exa.py | 74 +++++++++++++++++++ backend/open_webui/routers/retrieval.py | 14 ++++ .../admin/Settings/WebSearch.svelte | 14 +++- 5 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 backend/open_webui/retrieval/web/exa.py diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index 7cbfda6ae3..a7d5c8d531 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -1741,6 +1741,11 @@ BING_SEARCH_V7_SUBSCRIPTION_KEY = PersistentConfig( os.environ.get("BING_SEARCH_V7_SUBSCRIPTION_KEY", ""), ) +EXA_API_KEY = PersistentConfig( + "EXA_API_KEY", + "rag.web.search.exa_api_key", + os.getenv("EXA_API_KEY", ""), +) RAG_WEB_SEARCH_RESULT_COUNT = PersistentConfig( "RAG_WEB_SEARCH_RESULT_COUNT", diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index a4d63a6d7c..2cdebfd4e5 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -177,6 +177,7 @@ from open_webui.config import ( BING_SEARCH_V7_ENDPOINT, BING_SEARCH_V7_SUBSCRIPTION_KEY, BRAVE_SEARCH_API_KEY, + EXA_API_KEY, KAGI_SEARCH_API_KEY, MOJEEK_SEARCH_API_KEY, GOOGLE_PSE_API_KEY, @@ -523,6 +524,7 @@ app.state.config.SEARCHAPI_ENGINE = SEARCHAPI_ENGINE app.state.config.JINA_API_KEY = JINA_API_KEY app.state.config.BING_SEARCH_V7_ENDPOINT = BING_SEARCH_V7_ENDPOINT app.state.config.BING_SEARCH_V7_SUBSCRIPTION_KEY = BING_SEARCH_V7_SUBSCRIPTION_KEY +app.state.config.EXA_API_KEY = EXA_API_KEY app.state.config.RAG_WEB_SEARCH_RESULT_COUNT = RAG_WEB_SEARCH_RESULT_COUNT app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS = RAG_WEB_SEARCH_CONCURRENT_REQUESTS diff --git a/backend/open_webui/retrieval/web/exa.py b/backend/open_webui/retrieval/web/exa.py new file mode 100644 index 0000000000..3dbcc472e6 --- /dev/null +++ b/backend/open_webui/retrieval/web/exa.py @@ -0,0 +1,74 @@ +import logging +from dataclasses import dataclass +from typing import Optional + +import requests +from open_webui.env import SRC_LOG_LEVELS +from open_webui.retrieval.web.main import SearchResult + +log = logging.getLogger(__name__) +log.setLevel(SRC_LOG_LEVELS["RAG"]) + +EXA_API_BASE = "https://api.exa.ai" + + +@dataclass +class ExaResult: + url: str + title: str + text: str + + +def search_exa( + api_key: str, + query: str, + count: int, + filter_list: Optional[list[str]] = None, +) -> list[SearchResult]: + """Search using Exa Search API and return the results as a list of SearchResult objects. + + Args: + api_key (str): A Exa Search API key + query (str): The query to search for + count (int): Number of results to return + filter_list (Optional[list[str]]): List of domains to filter results by + """ + log.info(f"Searching with Exa for query: {query}") + + headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"} + + payload = { + "query": query, + "numResults": count or 5, + "includeDomains": filter_list, + "contents": {"text": True, "highlights": True}, + "type": "auto", # Use the auto search type (keyword or neural) + } + + try: + response = requests.post(f"{EXA_API_BASE}/search", headers=headers, json=payload) + response.raise_for_status() + data = response.json() + + results = [] + for result in data["results"]: + results.append( + ExaResult( + url=result["url"], + title=result["title"], + text=result["text"], + ) + ) + + log.info(f"Found {len(results)} results") + return [ + SearchResult( + link=result.url, + title=result.title, + snippet=result.text, + ) + for result in results + ] + except Exception as e: + log.error(f"Error searching Exa: {e}") + return [] diff --git a/backend/open_webui/routers/retrieval.py b/backend/open_webui/routers/retrieval.py index 2cffd9ead4..35cea62376 100644 --- a/backend/open_webui/routers/retrieval.py +++ b/backend/open_webui/routers/retrieval.py @@ -55,6 +55,7 @@ from open_webui.retrieval.web.serply import search_serply from open_webui.retrieval.web.serpstack import search_serpstack from open_webui.retrieval.web.tavily import search_tavily from open_webui.retrieval.web.bing import search_bing +from open_webui.retrieval.web.exa import search_exa from open_webui.retrieval.utils import ( @@ -388,6 +389,7 @@ async def get_rag_config(request: Request, user=Depends(get_admin_user)): "jina_api_key": request.app.state.config.JINA_API_KEY, "bing_search_v7_endpoint": request.app.state.config.BING_SEARCH_V7_ENDPOINT, "bing_search_v7_subscription_key": request.app.state.config.BING_SEARCH_V7_SUBSCRIPTION_KEY, + "exa_api_key": request.app.state.config.EXA_API_KEY, "result_count": request.app.state.config.RAG_WEB_SEARCH_RESULT_COUNT, "concurrent_requests": request.app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS, }, @@ -436,6 +438,7 @@ class WebSearchConfig(BaseModel): jina_api_key: Optional[str] = None bing_search_v7_endpoint: Optional[str] = None bing_search_v7_subscription_key: Optional[str] = None + exa_api_key: Optional[str] = None result_count: Optional[int] = None concurrent_requests: Optional[int] = None @@ -542,6 +545,8 @@ async def update_rag_config( form_data.web.search.bing_search_v7_subscription_key ) + request.app.state.config.EXA_API_KEY = form_data.web.search.exa_api_key + request.app.state.config.RAG_WEB_SEARCH_RESULT_COUNT = ( form_data.web.search.result_count ) @@ -591,6 +596,7 @@ async def update_rag_config( "jina_api_key": request.app.state.config.JINA_API_KEY, "bing_search_v7_endpoint": request.app.state.config.BING_SEARCH_V7_ENDPOINT, "bing_search_v7_subscription_key": request.app.state.config.BING_SEARCH_V7_SUBSCRIPTION_KEY, + "exa_api_key": request.app.state.config.EXA_API_KEY, "result_count": request.app.state.config.RAG_WEB_SEARCH_RESULT_COUNT, "concurrent_requests": request.app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS, }, @@ -1099,6 +1105,7 @@ def search_web(request: Request, engine: str, query: str) -> list[SearchResult]: - SERPER_API_KEY - SERPLY_API_KEY - TAVILY_API_KEY + - EXA_API_KEY - SEARCHAPI_API_KEY + SEARCHAPI_ENGINE (by default `google`) Args: query (str): The query to search for @@ -1233,6 +1240,13 @@ def search_web(request: Request, engine: str, query: str) -> list[SearchResult]: request.app.state.config.RAG_WEB_SEARCH_RESULT_COUNT, request.app.state.config.RAG_WEB_SEARCH_DOMAIN_FILTER_LIST, ) + elif engine == "exa": + return search_exa( + request.app.state.config.EXA_API_KEY, + query, + request.app.state.config.RAG_WEB_SEARCH_RESULT_COUNT, + request.app.state.config.RAG_WEB_SEARCH_DOMAIN_FILTER_LIST, + ) else: raise Exception("No search engine API key found in environment variables") diff --git a/src/lib/components/admin/Settings/WebSearch.svelte b/src/lib/components/admin/Settings/WebSearch.svelte index 58eb09da35..b2accbf1d7 100644 --- a/src/lib/components/admin/Settings/WebSearch.svelte +++ b/src/lib/components/admin/Settings/WebSearch.svelte @@ -25,7 +25,8 @@ 'duckduckgo', 'tavily', 'jina', - 'bing' + 'bing', + 'exa' ]; let youtubeLanguage = 'en'; @@ -261,6 +262,17 @@ bind:value={webConfig.search.jina_api_key} />
+ {:else if webConfig.search.engine === 'exa'} +
+
+ {$i18n.t('Exa API Key')} +
+ + +
{:else if webConfig.search.engine === 'bing'}
From 2b0c5f322f04ab0570705f3d3a02f47c7e458149 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 4 Feb 2025 14:41:42 -0800 Subject: [PATCH 23/69] fix: suggestions --- src/lib/components/chat/Suggestions.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/chat/Suggestions.svelte b/src/lib/components/chat/Suggestions.svelte index d1f53a8117..9d321563ef 100644 --- a/src/lib/components/chat/Suggestions.svelte +++ b/src/lib/components/chat/Suggestions.svelte @@ -100,7 +100,7 @@ > {prompt.content}
-
{i18n.t('Prompt')}
+
{$i18n.t('Prompt')}
{/if}
From 266899acc0b3c079e8c0612fe8e5010a8cf1459e Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 4 Feb 2025 14:45:47 -0800 Subject: [PATCH 24/69] refac --- src/lib/components/chat/Suggestions.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/components/chat/Suggestions.svelte b/src/lib/components/chat/Suggestions.svelte index 9d321563ef..b43decd889 100644 --- a/src/lib/components/chat/Suggestions.svelte +++ b/src/lib/components/chat/Suggestions.svelte @@ -53,10 +53,10 @@ } }; - onMount(() => { + $: if (suggestionPrompts) { sortedPrompts = [...(suggestionPrompts ?? [])].sort(() => Math.random() - 0.5); getFilteredPrompts(inputValue); - }); + }
From 9c0a783991077d460b526dc071841ae3b26c1f83 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 4 Feb 2025 17:29:10 -0800 Subject: [PATCH 25/69] refac: pyodide --- src/lib/workers/pyodide.worker.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/lib/workers/pyodide.worker.ts b/src/lib/workers/pyodide.worker.ts index 1eb426ea3f..e906e7762a 100644 --- a/src/lib/workers/pyodide.worker.ts +++ b/src/lib/workers/pyodide.worker.ts @@ -40,6 +40,23 @@ async function loadPyodideAndPackages(packages: string[] = []) { packages: ['micropip'] }); + let mountDir = '/mnt'; + self.pyodide.FS.mkdirTree(mountDir); + // self.pyodide.FS.mount(self.pyodide.FS.filesystems.IDBFS, {}, mountDir); + + // // Load persisted files from IndexedDB (Initial Sync) + // await new Promise((resolve, reject) => { + // self.pyodide.FS.syncfs(true, (err) => { + // if (err) { + // console.error('Error syncing from IndexedDB:', err); + // reject(err); + // } else { + // console.log('Successfully loaded from IndexedDB.'); + // resolve(); + // } + // }); + // }); + const micropip = self.pyodide.pyimport('micropip'); // await micropip.set_index_urls('https://pypi.org/pypi/{package_name}/json'); @@ -66,6 +83,19 @@ self.onmessage = async (event) => { self.result = processResult(self.result); console.log('Python result:', self.result); + + // Persist any changes to IndexedDB + // await new Promise((resolve, reject) => { + // self.pyodide.FS.syncfs(false, (err) => { + // if (err) { + // console.error('Error syncing to IndexedDB:', err); + // reject(err); + // } else { + // console.log('Successfully synced to IndexedDB.'); + // resolve(); + // } + // }); + // }); } catch (error) { self.stderr = error.toString(); } From 6ee924924ed0144f6453de68697067543085d50f Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 4 Feb 2025 18:33:22 -0800 Subject: [PATCH 26/69] refac: code interpreter --- backend/open_webui/config.py | 4 +- backend/open_webui/utils/middleware.py | 165 +++++++++++------- .../components/chat/Messages/CodeBlock.svelte | 47 ++++- src/lib/workers/pyodide.worker.ts | 29 +++ 4 files changed, 176 insertions(+), 69 deletions(-) diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index 7e2d095541..11481e465c 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -1335,8 +1335,10 @@ DEFAULT_CODE_INTERPRETER_PROMPT = """ - When coding, **always aim to print meaningful outputs** (e.g., results, tables, summaries, or visuals) to better interpret and verify the findings. Avoid relying on implicit outputs; prioritize explicit and clear print statements so the results are effectively communicated to the user. - After obtaining the printed output, **always provide a concise analysis, interpretation, or next steps to help the user understand the findings or refine the outcome further.** - If the results are unclear, unexpected, or require validation, refine the code and execute it again as needed. Always aim to deliver meaningful insights from the results, iterating if necessary. + - If a link is provided for an image, audio, or any file, include it in the response exactly as given to ensure the user has access to the original resource. - All responses should be communicated in the chat's primary language, ensuring seamless understanding. If the chat is multilingual, default to English for clarity. - + - **If a link to an image, audio, or any file is provided in markdown format, explicitly display it as part of the response to ensure the user can access it easily.** + Ensure that the tools are effectively utilized to achieve the highest-quality analysis for the user.""" diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index de3fea2b9a..8cdd821963 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1,6 +1,8 @@ import time import logging import sys +import os +import base64 import asyncio from aiocache import cached @@ -69,6 +71,7 @@ from open_webui.utils.plugin import load_function_module_by_id from open_webui.tasks import create_task from open_webui.config import ( + CACHE_DIR, DEFAULT_TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE, DEFAULT_CODE_INTERPRETER_PROMPT, ) @@ -1241,7 +1244,9 @@ async def process_chat_response( # We might want to disable this by default DETECT_REASONING = True - DETECT_CODE_INTERPRETER = True + DETECT_CODE_INTERPRETER = metadata.get("features", {}).get( + "code_interpreter", False + ) reasoning_tags = ["think", "reason", "reasoning", "thought", "Thought"] code_interpreter_tags = ["code_interpreter"] @@ -1386,74 +1391,108 @@ async def process_chat_response( await stream_body_handler(response) - MAX_RETRIES = 5 - retries = 0 + if DETECT_CODE_INTERPRETER: + MAX_RETRIES = 5 + retries = 0 - while ( - content_blocks[-1]["type"] == "code_interpreter" - and retries < MAX_RETRIES - ): - retries += 1 - log.debug(f"Attempt count: {retries}") + while ( + content_blocks[-1]["type"] == "code_interpreter" + and retries < MAX_RETRIES + ): + retries += 1 + log.debug(f"Attempt count: {retries}") - output = "" - try: - if content_blocks[-1]["attributes"].get("type") == "code": - output = await event_caller( - { - "type": "execute:python", - "data": { - "id": str(uuid4()), - "code": content_blocks[-1]["content"], - }, - } - ) - except Exception as e: - output = str(e) - - content_blocks[-1]["output"] = output - content_blocks.append( - { - "type": "text", - "content": "", - } - ) - - await event_emitter( - { - "type": "chat:completion", - "data": { - "content": serialize_content_blocks(content_blocks), - }, - } - ) - - try: - res = await generate_chat_completion( - request, - { - "model": model_id, - "stream": True, - "messages": [ - *form_data["messages"], + output = "" + try: + if content_blocks[-1]["attributes"].get("type") == "code": + output = await event_caller( { - "role": "assistant", - "content": serialize_content_blocks( - content_blocks, raw=True - ), - }, - ], - }, - user, + "type": "execute:python", + "data": { + "id": str(uuid4()), + "code": content_blocks[-1]["content"], + }, + } + ) + + if isinstance(output, dict): + stdout = output.get("stdout", "") + + if stdout: + stdoutLines = stdout.split("\n") + for idx, line in enumerate(stdoutLines): + if "data:image/png;base64" in line: + id = str(uuid4()) + + # ensure the path exists + os.makedirs( + os.path.join(CACHE_DIR, "images"), + exist_ok=True, + ) + + image_path = os.path.join( + CACHE_DIR, + f"images/{id}.png", + ) + + with open(image_path, "wb") as f: + f.write( + base64.b64decode( + line.split(",")[1] + ) + ) + + stdoutLines[idx] = ( + f"![Output Image {idx}](/cache/images/{id}.png)" + ) + + output["stdout"] = "\n".join(stdoutLines) + except Exception as e: + output = str(e) + + content_blocks[-1]["output"] = output + content_blocks.append( + { + "type": "text", + "content": "", + } ) - if isinstance(res, StreamingResponse): - await stream_body_handler(res) - else: + await event_emitter( + { + "type": "chat:completion", + "data": { + "content": serialize_content_blocks(content_blocks), + }, + } + ) + + try: + res = await generate_chat_completion( + request, + { + "model": model_id, + "stream": True, + "messages": [ + *form_data["messages"], + { + "role": "assistant", + "content": serialize_content_blocks( + content_blocks, raw=True + ), + }, + ], + }, + user, + ) + + if isinstance(res, StreamingResponse): + await stream_body_handler(res) + else: + break + except Exception as e: + log.debug(e) break - except Exception as e: - log.debug(e) - break title = Chats.get_chat_title_by_id(metadata["chat_id"]) data = { diff --git a/src/lib/components/chat/Messages/CodeBlock.svelte b/src/lib/components/chat/Messages/CodeBlock.svelte index 37a84ba1e0..95b1ece4d4 100644 --- a/src/lib/components/chat/Messages/CodeBlock.svelte +++ b/src/lib/components/chat/Messages/CodeBlock.svelte @@ -50,6 +50,7 @@ let stdout = null; let stderr = null; let result = null; + let files = null; let copied = false; let saved = false; @@ -110,7 +111,7 @@ }; const executePython = async (code) => { - if (!code.includes('input') && !code.includes('matplotlib')) { + if (!code.includes('input')) { executePythonAsWorker(code); } else { result = null; @@ -211,7 +212,8 @@ __builtins__.input = input`); code.includes('re') ? 'regex' : null, code.includes('seaborn') ? 'seaborn' : null, code.includes('sympy') ? 'sympy' : null, - code.includes('tiktoken') ? 'tiktoken' : null + code.includes('tiktoken') ? 'tiktoken' : null, + code.includes('matplotlib') ? 'matplotlib' : null ].filter(Boolean); console.log(packages); @@ -238,7 +240,31 @@ __builtins__.input = input`); console.log(id, data); - data['stdout'] && (stdout = data['stdout']); + if (data['stdout']) { + stdout = data['stdout']; + const stdoutLines = stdout.split('\n'); + + for (const [idx, line] of stdoutLines.entries()) { + if (line.startsWith('data:image/png;base64')) { + if (files) { + files.push({ + type: 'image/png', + data: line + }); + } else { + files = [ + { + type: 'image/png', + data: line + } + ]; + } + + stdout = stdout.replace(`${line}\n`, ``); + } + } + } + data['stderr'] && (stderr = data['stderr']); data['result'] && (result = data['result']); @@ -430,10 +456,21 @@ __builtins__.input = input`);
{stdout || stderr}
{/if} - {#if result} + {#if result || files}
RESULT
-
{`${JSON.stringify(result)}`}
+ {#if result} +
{`${JSON.stringify(result)}`}
+ {/if} + {#if files} +
+ {#each files as file} + {#if file.type.startsWith('image')} + Output + {/if} + {/each} +
+ {/if}
{/if} {/if} diff --git a/src/lib/workers/pyodide.worker.ts b/src/lib/workers/pyodide.worker.ts index e906e7762a..09fb0e1f34 100644 --- a/src/lib/workers/pyodide.worker.ts +++ b/src/lib/workers/pyodide.worker.ts @@ -77,6 +77,35 @@ self.onmessage = async (event) => { await loadPyodideAndPackages(self.packages); try { + // check if matplotlib is imported in the code + if (code.includes('matplotlib')) { + // Override plt.show() to return base64 image + await self.pyodide.runPythonAsync(`import base64 +import os +from io import BytesIO + +# before importing matplotlib +# to avoid the wasm backend (which needs js.document', not available in worker) +os.environ["MPLBACKEND"] = "AGG" + +import matplotlib.pyplot + +_old_show = matplotlib.pyplot.show +assert _old_show, "matplotlib.pyplot.show" + +def show(*, block=None): + buf = BytesIO() + matplotlib.pyplot.savefig(buf, format="png") + buf.seek(0) + # encode to a base64 str + img_str = base64.b64encode(buf.read()).decode('utf-8') + matplotlib.pyplot.clf() + buf.close() + print(f"data:image/png;base64,{img_str}") + +matplotlib.pyplot.show = show`); + } + self.result = await self.pyodide.runPythonAsync(code); // Safely process and recursively serialize the result From fba25c6cec3ee7b82c0093520574c2c04ed88fc5 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 4 Feb 2025 18:36:22 -0800 Subject: [PATCH 27/69] refac --- backend/open_webui/config.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index 11481e465c..e74c54cf9b 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -1337,8 +1337,8 @@ DEFAULT_CODE_INTERPRETER_PROMPT = """ - If the results are unclear, unexpected, or require validation, refine the code and execute it again as needed. Always aim to deliver meaningful insights from the results, iterating if necessary. - If a link is provided for an image, audio, or any file, include it in the response exactly as given to ensure the user has access to the original resource. - All responses should be communicated in the chat's primary language, ensuring seamless understanding. If the chat is multilingual, default to English for clarity. - - **If a link to an image, audio, or any file is provided in markdown format, explicitly display it as part of the response to ensure the user can access it easily.** - + - **If a link to an image, audio, or any file is provided in markdown format, explicitly display it as part of the response to ensure the user can access it easily, do NOT change the link.** + Ensure that the tools are effectively utilized to achieve the highest-quality analysis for the user.""" From 533b62f062e2edfd159a6323d42c24f47bd926f2 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 4 Feb 2025 18:41:53 -0800 Subject: [PATCH 28/69] refac: deprecate non web worker pyodide --- .../components/chat/Messages/CodeBlock.svelte | 83 +------------------ 1 file changed, 1 insertion(+), 82 deletions(-) diff --git a/src/lib/components/chat/Messages/CodeBlock.svelte b/src/lib/components/chat/Messages/CodeBlock.svelte index 95b1ece4d4..02715f31f9 100644 --- a/src/lib/components/chat/Messages/CodeBlock.svelte +++ b/src/lib/components/chat/Messages/CodeBlock.svelte @@ -111,88 +111,7 @@ }; const executePython = async (code) => { - if (!code.includes('input')) { - executePythonAsWorker(code); - } else { - result = null; - stdout = null; - stderr = null; - - executing = true; - - document.pyodideMplTarget = document.getElementById(`plt-canvas-${id}`); - - let pyodide = await loadPyodide({ - indexURL: '/pyodide/', - stdout: (text) => { - console.log('Python output:', text); - - if (stdout) { - stdout += `${text}\n`; - } else { - stdout = `${text}\n`; - } - }, - stderr: (text) => { - console.log('An error occurred:', text); - if (stderr) { - stderr += `${text}\n`; - } else { - stderr = `${text}\n`; - } - }, - packages: ['micropip'] - }); - - try { - const micropip = pyodide.pyimport('micropip'); - - // await micropip.set_index_urls('https://pypi.org/pypi/{package_name}/json'); - - let packages = [ - code.includes('requests') ? 'requests' : null, - code.includes('bs4') ? 'beautifulsoup4' : null, - code.includes('numpy') ? 'numpy' : null, - code.includes('pandas') ? 'pandas' : null, - code.includes('matplotlib') ? 'matplotlib' : null, - code.includes('sklearn') ? 'scikit-learn' : null, - code.includes('scipy') ? 'scipy' : null, - code.includes('re') ? 'regex' : null, - code.includes('seaborn') ? 'seaborn' : null, - code.includes('sympy') ? 'sympy' : null, - code.includes('tiktoken') ? 'tiktoken' : null - ].filter(Boolean); - - console.log(packages); - await micropip.install(packages); - - result = await pyodide.runPythonAsync(`from js import prompt -def input(p): - return prompt(p) -__builtins__.input = input`); - - result = await pyodide.runPython(code); - - if (!result) { - result = '[NO OUTPUT]'; - } - - console.log(result); - console.log(stdout); - console.log(stderr); - - const pltCanvasElement = document.getElementById(`plt-canvas-${id}`); - - if (pltCanvasElement?.innerHTML !== '') { - pltCanvasElement.classList.add('pt-4'); - } - } catch (error) { - console.error('Error:', error); - stderr = error; - } - - executing = false; - } + executePythonAsWorker(code); }; const executePythonAsWorker = async (code) => { From ec9be0d20d0ff3a1210a1da6da65f41d8c269e53 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 4 Feb 2025 19:14:59 -0800 Subject: [PATCH 29/69] feat: native tool calling frontend --- backend/open_webui/main.py | 8 +++++ backend/open_webui/utils/middleware.py | 17 ++++++----- .../Settings/Advanced/AdvancedParams.svelte | 30 +++++++++++++++++++ .../components/chat/Settings/General.svelte | 1 + 4 files changed, 49 insertions(+), 7 deletions(-) diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index 0b453d2c0e..265cb10c54 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -861,6 +861,7 @@ async def chat_completion( if model_id not in request.app.state.MODELS: raise Exception("Model not found") model = request.app.state.MODELS[model_id] + model_info = Models.get_model_by_id(model_id) # Check if user has access to the model if not BYPASS_MODEL_ACCESS_CONTROL and user.role == "user": @@ -878,6 +879,13 @@ async def chat_completion( "files": form_data.get("files", None), "features": form_data.get("features", None), "variables": form_data.get("variables", None), + "model": model_info, + **( + {"function_calling": "native"} + if form_data.get("params", {}).get("function_calling") == "native" + or model_info.params.model_dump().get("function_calling") == "native" + else {} + ), } form_data["metadata"] = metadata diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 8cdd821963..81989a654c 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -702,6 +702,7 @@ def apply_params_to_form_data(form_data, model): async def process_chat_payload(request, form_data, metadata, user, model): + form_data = apply_params_to_form_data(form_data, model) log.debug(f"form_data: {form_data}") @@ -808,13 +809,15 @@ async def process_chat_payload(request, form_data, metadata, user, model): } form_data["metadata"] = metadata - try: - form_data, flags = await chat_completion_tools_handler( - request, form_data, user, models, extra_params - ) - sources.extend(flags.get("sources", [])) - except Exception as e: - log.exception(e) + if not form_data["metadata"].get("function_calling") == "native": + # If the function calling is not native, then call the tools function calling handler + try: + form_data, flags = await chat_completion_tools_handler( + request, form_data, user, models, extra_params + ) + sources.extend(flags.get("sources", [])) + except Exception as e: + log.exception(e) try: form_data, flags = await chat_completion_files_handler(request, form_data, user) diff --git a/src/lib/components/chat/Settings/Advanced/AdvancedParams.svelte b/src/lib/components/chat/Settings/Advanced/AdvancedParams.svelte index a56ccab33c..0ab38adf4e 100644 --- a/src/lib/components/chat/Settings/Advanced/AdvancedParams.svelte +++ b/src/lib/components/chat/Settings/Advanced/AdvancedParams.svelte @@ -12,6 +12,7 @@ export let params = { // Advanced stream_response: null, // Set stream responses for this model individually + function_calling: null, seed: null, stop: null, temperature: null, @@ -81,6 +82,35 @@
+
+ +
+
+ {$i18n.t('Function Calling')} +
+ +
+
+
+
Date: Tue, 4 Feb 2025 19:22:08 -0800 Subject: [PATCH 30/69] refac: ollama tool calling support Co-Authored-By: smonux <85928277+smonux@users.noreply.github.com> --- backend/open_webui/routers/ollama.py | 2 ++ backend/open_webui/utils/tools.py | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/backend/open_webui/routers/ollama.py b/backend/open_webui/routers/ollama.py index 780fc6f50d..10367b0206 100644 --- a/backend/open_webui/routers/ollama.py +++ b/backend/open_webui/routers/ollama.py @@ -939,6 +939,7 @@ async def generate_completion( class ChatMessage(BaseModel): role: str content: str + tool_calls: Optional[list[dict]] = None images: Optional[list[str]] = None @@ -950,6 +951,7 @@ class GenerateChatCompletionForm(BaseModel): template: Optional[str] = None stream: Optional[bool] = True keep_alive: Optional[Union[int, str]] = None + tools: Optional[list[dict]] = None async def get_ollama_url(request: Request, model: str, url_idx: Optional[int] = None): diff --git a/backend/open_webui/utils/tools.py b/backend/open_webui/utils/tools.py index b6e13011d7..d83772acd5 100644 --- a/backend/open_webui/utils/tools.py +++ b/backend/open_webui/utils/tools.py @@ -73,6 +73,13 @@ def get_tools( # convert to function that takes only model params and inserts custom params original_func = getattr(module, function_name) callable = apply_extra_params_to_tool_function(original_func, extra_params) + + if callable.__doc__ and callable.__doc__.strip() != "": + s = re.split(":(param|return)", callable.__doc__, 1) + spec["description"] = s[0] + else: + spec["description"] = function_name + # TODO: This needs to be a pydantic model tool_dict = { "toolkit_id": tool_id, From a4ea2e0996356e19e5dca7582f7585d2ec3e7fe5 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 4 Feb 2025 20:33:02 -0800 Subject: [PATCH 31/69] fix: multi response message --- src/lib/components/chat/Messages/Message.svelte | 1 + src/lib/components/chat/Messages/MultiResponseMessages.svelte | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/lib/components/chat/Messages/Message.svelte b/src/lib/components/chat/Messages/Message.svelte index c15e7c4ec7..9a2b7155cd 100644 --- a/src/lib/components/chat/Messages/Message.svelte +++ b/src/lib/components/chat/Messages/Message.svelte @@ -96,6 +96,7 @@ {rateMessage} {actionMessage} {submitMessage} + {deleteMessage} {continueResponse} {regenerateResponse} {mergeResponses} diff --git a/src/lib/components/chat/Messages/MultiResponseMessages.svelte b/src/lib/components/chat/Messages/MultiResponseMessages.svelte index a17c441a0f..59716a04e3 100644 --- a/src/lib/components/chat/Messages/MultiResponseMessages.svelte +++ b/src/lib/components/chat/Messages/MultiResponseMessages.svelte @@ -34,6 +34,8 @@ export let actionMessage: Function; export let submitMessage: Function; + export let deleteMessage: Function; + export let continueResponse: Function; export let regenerateResponse: Function; export let mergeResponses: Function; @@ -228,6 +230,7 @@ {editMessage} {saveMessage} {rateMessage} + {deleteMessage} {actionMessage} {submitMessage} {continueResponse} From 0a5b421ac1ecb947751910f69455712a964179e5 Mon Sep 17 00:00:00 2001 From: KarlLee830 <61072264+KarlLee830@users.noreply.github.com> Date: Wed, 5 Feb 2025 12:53:06 +0800 Subject: [PATCH 32/69] i18n: Update Chinese translation --- src/lib/i18n/locales/zh-CN/translation.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index 4657f4f39e..a01aa28380 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -65,8 +65,8 @@ "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "top_p的替代方法,目标是在质量和多样性之间取得平衡。参数p表示一个token相对于最有可能的token所需的最低概率。比如,当p=0.05且最有可能的token概率为0.9时,概率低于0.045的logits会被排除。(默认值:0.0)", "Amazing": "很棒", "an assistant": "AI模型", - "Analyzed": "", - "Analyzing...": "", + "Analyzed": "已分析", + "Analyzing...": "正在分析...", "and": "和", "and {{COUNT}} more": "还有 {{COUNT}} 个", "and create a new shared link.": "并创建一个新的分享链接。", @@ -171,11 +171,11 @@ "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "写入剪贴板时被拒绝。请检查浏览器设置,授予必要权限。", "Clone": "复制", "Clone Chat": "克隆聊天", - "Clone of {{TITLE}}": "", + "Clone of {{TITLE}}": "{{TITLE}} 的副本", "Close": "关闭", "Code execution": "代码执行", "Code formatted successfully": "代码格式化成功", - "Code Interpreter": "", + "Code Interpreter": "代码解释器", "Collection": "文件集", "Color": "颜色", "ComfyUI": "ComfyUI", @@ -401,7 +401,7 @@ "Example: ou=users,dc=foo,dc=example": "例如:ou=users,dc=foo,dc=example", "Example: sAMAccountName or uid or userPrincipalName": "例如:sAMAccountName 或 uid 或 userPrincipalName", "Exclude": "排除", - "Execute code for analysis": "", + "Execute code for analysis": "执行代码进行分析", "Experimental": "实验性", "Explore the cosmos": "探索宇宙", "Export": "导出", @@ -468,7 +468,7 @@ "Functions imported successfully": "函数导入成功", "General": "通用", "General Settings": "通用设置", - "Generate an image": "", + "Generate an image": "生成图像", "Generate Image": "生成图像", "Generating search query": "生成搜索查询", "Get started": "开始使用", @@ -719,7 +719,7 @@ "Please enter a prompt": "请输出一个 prompt", "Please fill in all fields.": "请填写所有字段。", "Please select a model first.": "请先选择一个模型。", - "Please select a model.": "", + "Please select a model.": "请选择一个模型。", "Please select a reason": "请选择原因", "Port": "端口", "Positive attitude": "积极的态度", @@ -803,7 +803,7 @@ "Search options": "搜索选项", "Search Prompts": "搜索提示词", "Search Result Count": "搜索结果数量", - "Search the internet": "", + "Search the internet": "联网搜索", "Search Tools": "搜索工具", "SearchApi API Key": "SearchApi API 密钥", "SearchApi Engine": "SearchApi 引擎", @@ -973,7 +973,7 @@ "Tools": "工具", "Tools Access": "访问工具", "Tools are a function calling system with arbitrary code execution": "工具是一个具有任意代码执行能力的函数调用系统", - "Tools Function Calling Prompt": "", + "Tools Function Calling Prompt": "工具函数调用提示词", "Tools have a function calling system that allows arbitrary code execution": "注意:工具有权执行任意代码", "Tools have a function calling system that allows arbitrary code execution.": "注意:工具有权执行任意代码。", "Top K": "Top K", @@ -1073,7 +1073,7 @@ "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 do not have permission to access this feature.": "你没有访问此功能的权限。", - "You do not have permission to upload files": "", + "You do not have permission to upload files": "你没有上传文件的权限", "You do not have permission to upload files.": "你没有上传文件的权限。", "You have no archived conversations.": "没有已归档的对话。", "You have shared this chat": "此对话已经分享过", From 2e61ea7cc93dd6a5c4b3bcab20c8f455b344939d Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 4 Feb 2025 20:56:13 -0800 Subject: [PATCH 33/69] refac: chat --- src/lib/components/chat/Chat.svelte | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index ebd882dfc2..2dbae155d7 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -1317,13 +1317,13 @@ }; const sendPrompt = async ( - history, + _history, prompt: string, parentId: string, { modelId = null, modelIdx = null, newChat = false } = {} ) => { let _chatId = JSON.parse(JSON.stringify($chatId)); - const _history = JSON.parse(JSON.stringify(history)); + _history = JSON.parse(JSON.stringify(_history)); const responseMessageIds: Record = {}; // If modelId is provided, use it, else use selected model @@ -1373,13 +1373,13 @@ // Create new chat if newChat is true and first user message if (newChat && _history.messages[_history.currentId].parentId === null) { _chatId = await initChatHandler(_history); - } else { - await saveChatHandler(_chatId, _history); } + await tick(); + _history = JSON.parse(JSON.stringify(history)); // Save chat after all messages have been created - await saveChatHandler(_chatId, history); + await saveChatHandler(_chatId, _history); await Promise.all( selectedModelIds.map(async (modelId, _modelIdx) => { @@ -1387,7 +1387,7 @@ const model = $models.filter((m) => m.id === modelId).at(0); if (model) { - const messages = createMessagesList(history, parentId); + const messages = createMessagesList(_history, parentId); // If there are image files, check if model is vision capable const hasImages = messages.some((message) => message.files?.some((file) => file.type === 'image') @@ -1403,7 +1403,7 @@ let responseMessageId = responseMessageIds[`${modelId}-${modelIdx ? modelIdx : _modelIdx}`]; - let responseMessage = history.messages[responseMessageId]; + let responseMessage = _history.messages[responseMessageId]; let userContext = null; if ($settings?.memory ?? false) { @@ -1432,7 +1432,7 @@ const chatEventEmitter = await getChatEventEmitter(model.id, _chatId); scrollToBottom(); - await sendPromptSocket(history, model, responseMessageId, _chatId); + await sendPromptSocket(_history, model, responseMessageId, _chatId); if (chatEventEmitter) clearInterval(chatEventEmitter); } else { @@ -1445,9 +1445,9 @@ chats.set(await getChatList(localStorage.token, $currentChatPage)); }; - const sendPromptSocket = async (history, model, responseMessageId, _chatId) => { - const responseMessage = history.messages[responseMessageId]; - const userMessage = history.messages[responseMessage.parentId]; + const sendPromptSocket = async (_history, model, responseMessageId, _chatId) => { + const responseMessage = _history.messages[responseMessageId]; + const userMessage = _history.messages[responseMessage.parentId]; let files = JSON.parse(JSON.stringify(chatFiles)); files.push( @@ -1495,7 +1495,7 @@ }` } : undefined, - ...createMessagesList(history, responseMessageId).map((message) => ({ + ...createMessagesList(_history, responseMessageId).map((message) => ({ ...message, content: removeDetails(message.content, ['reasoning', 'code_interpreter']) })) @@ -1589,12 +1589,15 @@ }, `${WEBUI_BASE_URL}/api` ).catch((error) => { - console.log(error); + toast.error(`${error}`); + responseMessage.error = { content: error }; responseMessage.done = true; + history.messages[responseMessageId] = responseMessage; + history.currentId = responseMessageId; return null; }); From e7da506add41b0c9f6a63462c6a317a8a0b139a9 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 4 Feb 2025 21:01:53 -0800 Subject: [PATCH 34/69] refac: middleware --- backend/open_webui/main.py | 4 +- backend/open_webui/utils/middleware.py | 91 +++++++++++++++----------- src/lib/apis/openai/index.ts | 2 +- 3 files changed, 58 insertions(+), 39 deletions(-) diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index 265cb10c54..1707c8299e 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -889,9 +889,10 @@ async def chat_completion( } form_data["metadata"] = metadata - form_data, events = await process_chat_payload( + form_data, metadata, events = await process_chat_payload( request, form_data, metadata, user, model ) + except Exception as e: raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, @@ -900,6 +901,7 @@ async def chat_completion( try: response = await chat_completion_handler(request, form_data, user) + return await process_chat_response( request, response, form_data, user, events, metadata, tasks ) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 81989a654c..3f14a683ee 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -183,7 +183,7 @@ async def chat_completion_filter_functions_handler(request, body, model, extra_p async def chat_completion_tools_handler( - request: Request, body: dict, user: UserModel, models, extra_params: dict + request: Request, body: dict, user: UserModel, models, tools ) -> tuple[dict, dict]: async def get_content_from_response(response) -> Optional[str]: content = None @@ -218,35 +218,15 @@ async def chat_completion_tools_handler( "metadata": {"task": str(TASKS.FUNCTION_CALLING)}, } - # If tool_ids field is present, call the functions - metadata = body.get("metadata", {}) - - tool_ids = metadata.get("tool_ids", None) - log.debug(f"{tool_ids=}") - if not tool_ids: - return body, {} - - skip_files = False - sources = [] - task_model_id = get_task_model_id( body["model"], request.app.state.config.TASK_MODEL, request.app.state.config.TASK_MODEL_EXTERNAL, models, ) - tools = get_tools( - request, - tool_ids, - user, - { - **extra_params, - "__model__": models[task_model_id], - "__messages__": body["messages"], - "__files__": metadata.get("files", []), - }, - ) - log.info(f"{tools=}") + + skip_files = False + sources = [] specs = [tool["spec"] for tool in tools.values()] tools_specs = json.dumps(specs) @@ -281,6 +261,8 @@ async def chat_completion_tools_handler( result = json.loads(content) async def tool_call_handler(tool_call): + nonlocal skip_files + log.debug(f"{tool_call=}") tool_function_name = tool_call.get("name", None) @@ -725,6 +707,12 @@ async def process_chat_payload(request, form_data, metadata, user, model): # Initialize events to store additional event to be sent to the client # Initialize contexts and citation models = request.app.state.MODELS + task_model_id = get_task_model_id( + form_data["model"], + request.app.state.config.TASK_MODEL, + request.app.state.config.TASK_MODEL_EXTERNAL, + models, + ) events = [] sources = [] @@ -809,15 +797,41 @@ async def process_chat_payload(request, form_data, metadata, user, model): } form_data["metadata"] = metadata - if not form_data["metadata"].get("function_calling") == "native": - # If the function calling is not native, then call the tools function calling handler - try: - form_data, flags = await chat_completion_tools_handler( - request, form_data, user, models, extra_params - ) - sources.extend(flags.get("sources", [])) - except Exception as e: - log.exception(e) + tool_ids = metadata.get("tool_ids", None) + log.debug(f"{tool_ids=}") + + if tool_ids: + # If tool_ids field is present, then get the tools + tools = get_tools( + request, + tool_ids, + user, + { + **extra_params, + "__model__": models[task_model_id], + "__messages__": form_data["messages"], + "__files__": metadata.get("files", []), + }, + ) + log.info(f"{tools=}") + + if metadata.get("function_calling") == "native": + # If the function calling is native, then call the tools function calling handler + metadata["tools"] = tools + form_data["tools"] = [ + {"type": "function", "function": tool.get("spec", {})} + for tool in tools.values() + ] + else: + # If the function calling is not native, then call the tools function calling handler + try: + form_data, flags = await chat_completion_tools_handler( + request, form_data, user, models, tools + ) + sources.extend(flags.get("sources", [])) + + except Exception as e: + log.exception(e) try: form_data, flags = await chat_completion_files_handler(request, form_data, user) @@ -833,11 +847,11 @@ async def process_chat_payload(request, form_data, metadata, user, model): if "document" in source: for doc_idx, doc_context in enumerate(source["document"]): - metadata = source.get("metadata") + doc_metadata = source.get("metadata") doc_source_id = None - if metadata: - doc_source_id = metadata[doc_idx].get("source", source_id) + if doc_metadata: + doc_source_id = doc_metadata[doc_idx].get("source", source_id) if source_id: context_string += f"{doc_source_id if doc_source_id is not None else source_id}{doc_context}\n" @@ -894,12 +908,15 @@ async def process_chat_payload(request, form_data, metadata, user, model): } ) - return form_data, events + return form_data, metadata, events async def process_chat_response( request, response, form_data, user, events, metadata, tasks ): + + print("metadata", metadata) + async def background_tasks_handler(): message_map = Chats.get_messages_by_chat_id(metadata["chat_id"]) message = message_map.get(metadata["message_id"]) if message_map else None diff --git a/src/lib/apis/openai/index.ts b/src/lib/apis/openai/index.ts index 5ddfbe9355..a801bcdbbf 100644 --- a/src/lib/apis/openai/index.ts +++ b/src/lib/apis/openai/index.ts @@ -322,7 +322,7 @@ export const generateOpenAIChatCompletion = async ( return res.json(); }) .catch((err) => { - error = `${err?.detail ?? 'Network Problem'}`; + error = `${err?.detail ?? err}`; return null; }); From f88a80ac4772398eef6941477ad6c4e69d2b5e37 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 4 Feb 2025 21:02:11 -0800 Subject: [PATCH 35/69] wip: pyodide kernel --- src/lib/pyodide/pyodideKernel.ts | 81 ++++++++++++++++ src/lib/pyodide/pyodideKernel.worker.ts | 123 ++++++++++++++++++++++++ 2 files changed, 204 insertions(+) create mode 100644 src/lib/pyodide/pyodideKernel.ts create mode 100644 src/lib/pyodide/pyodideKernel.worker.ts diff --git a/src/lib/pyodide/pyodideKernel.ts b/src/lib/pyodide/pyodideKernel.ts new file mode 100644 index 0000000000..bd3eaeb77f --- /dev/null +++ b/src/lib/pyodide/pyodideKernel.ts @@ -0,0 +1,81 @@ +import PyodideWorker from '$lib/pyodide/pyodideKernel.worker?worker'; + +export type CellState = { + id: string; + status: 'idle' | 'running' | 'completed' | 'error'; + result: any; + stdout: string; + stderr: string; +}; + +export class PyodideKernel { + private worker: Worker; + private listeners: Map void>; + + constructor() { + this.worker = new PyodideWorker(); + this.listeners = new Map(); + + // Listen to messages from the worker + this.worker.onmessage = (event) => { + const { type, id, ...data } = event.data; + + if ((type === 'stdout' || type === 'stderr') && this.listeners.has(id)) { + this.listeners.get(id)?.({ type, id, ...data }); + } else if (type === 'result' && this.listeners.has(id)) { + this.listeners.get(id)?.({ type, id, ...data }); + // Remove the listener once the result is delivered + this.listeners.delete(id); + } else if (type === 'kernelState') { + this.listeners.forEach((listener) => listener({ type, ...data })); + } + }; + + // Initialize the worker + this.worker.postMessage({ type: 'initialize' }); + } + + async execute(id: string, code: string): Promise { + return new Promise((resolve, reject) => { + // Set up the listener for streaming and execution result + const state: CellState = { + id, + status: 'running', + result: null, + stdout: '', + stderr: '' + }; + + this.listeners.set(id, (data) => { + if (data.type === 'stdout') { + state.stdout += data.message; + } else if (data.type === 'stderr') { + state.stderr += data.message; + } else if (data.type === 'result') { + // Final result + const { state: finalState } = data; + resolve(finalState); + } + }); + + // Send execute request to the worker + this.worker.postMessage({ type: 'execute', id, code }); + }); + } + + async getState() { + return new Promise>((resolve) => { + this.worker.postMessage({ type: 'getState' }); + this.listeners.set('kernelState', (data) => { + if (data.type === 'kernelState') { + resolve(data.state); + } + }); + }); + } + + terminate() { + this.worker.postMessage({ type: 'terminate' }); + this.worker.terminate(); + } +} diff --git a/src/lib/pyodide/pyodideKernel.worker.ts b/src/lib/pyodide/pyodideKernel.worker.ts new file mode 100644 index 0000000000..4f1eea6da0 --- /dev/null +++ b/src/lib/pyodide/pyodideKernel.worker.ts @@ -0,0 +1,123 @@ +import { loadPyodide, type PyodideInterface } from 'pyodide'; + +declare global { + interface Window { + stdout: string | null; + stderr: string | null; + pyodide: PyodideInterface; + cells: Record; + indexURL: string; + } +} + +type CellState = { + id: string; + status: 'idle' | 'running' | 'completed' | 'error'; + result: any; + stdout: string; + stderr: string; +}; + +const initializePyodide = async () => { + // Ensure Pyodide is loaded once and cached in the worker's global scope + if (!self.pyodide) { + self.indexURL = '/pyodide/'; + self.stdout = ''; + self.stderr = ''; + self.cells = {}; + + self.pyodide = await loadPyodide({ + indexURL: self.indexURL + }); + } +}; + +const executeCode = async (id: string, code: string) => { + if (!self.pyodide) { + await initializePyodide(); + } + + // Update the cell state to "running" + self.cells[id] = { + id, + status: 'running', + result: null, + stdout: '', + stderr: '' + }; + + // Redirect stdout/stderr to stream updates + self.pyodide.setStdout({ + batched: (msg: string) => { + self.cells[id].stdout += msg; + self.postMessage({ type: 'stdout', id, message: msg }); + } + }); + self.pyodide.setStderr({ + batched: (msg: string) => { + self.cells[id].stderr += msg; + self.postMessage({ type: 'stderr', id, message: msg }); + } + }); + + try { + // Dynamically load required packages based on imports in the Python code + await self.pyodide.loadPackagesFromImports(code, { + messageCallback: (msg: string) => { + self.postMessage({ type: 'stdout', id, package: true, message: `[package] ${msg}` }); + }, + errorCallback: (msg: string) => { + self.postMessage({ type: 'stderr', id, package: true, message: `[package] ${msg}` }); + } + }); + + // Execute the Python code + const result = await self.pyodide.runPythonAsync(code); + self.cells[id].result = result; + self.cells[id].status = 'completed'; + } catch (error) { + self.cells[id].status = 'error'; + self.cells[id].stderr += `\n${error.toString()}`; + } finally { + // Notify parent thread when execution completes + self.postMessage({ + type: 'result', + id, + state: self.cells[id] + }); + } +}; + +// Handle messages from the main thread +self.onmessage = async (event) => { + const { type, id, code, ...args } = event.data; + + switch (type) { + case 'initialize': + await initializePyodide(); + self.postMessage({ type: 'initialized' }); + break; + + case 'execute': + if (id && code) { + await executeCode(id, code); + } + break; + + case 'getState': + self.postMessage({ + type: 'kernelState', + state: self.cells + }); + break; + + case 'terminate': + // Explicitly clear the worker for cleanup + for (const key in self.cells) delete self.cells[key]; + self.close(); + break; + + default: + console.error(`Unknown message type: ${type}`); + } +}; From 8d520eeecde8b67ec57466ce5d24f28cb7370eaa Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 4 Feb 2025 21:08:26 -0800 Subject: [PATCH 36/69] fix: ollama native tool calling --- backend/open_webui/utils/payload.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/backend/open_webui/utils/payload.py b/backend/open_webui/utils/payload.py index 2eb4622c2b..86f67c41df 100644 --- a/backend/open_webui/utils/payload.py +++ b/backend/open_webui/utils/payload.py @@ -154,6 +154,9 @@ def convert_payload_openai_to_ollama(openai_payload: dict) -> dict: ) ollama_payload["stream"] = openai_payload.get("stream", False) + if "tools" in openai_payload: + ollama_payload["tools"] = openai_payload["tools"] + if "format" in openai_payload: ollama_payload["format"] = openai_payload["format"] From c5a9cfacf1db0e602d20b405abbac4738196c47a Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 4 Feb 2025 21:20:03 -0800 Subject: [PATCH 37/69] refac --- backend/open_webui/utils/middleware.py | 7 ++++--- backend/open_webui/utils/tools.py | 6 ++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 3f14a683ee..3b3762f31f 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -914,9 +914,6 @@ async def process_chat_payload(request, form_data, metadata, user, model): async def process_chat_response( request, response, form_data, user, events, metadata, tasks ): - - print("metadata", metadata) - async def background_tasks_handler(): message_map = Chats.get_messages_by_chat_id(metadata["chat_id"]) message = message_map.get(metadata["message_id"]) if message_map else None @@ -1129,6 +1126,9 @@ async def process_chat_response( for block in content_blocks: if block["type"] == "text": content = f"{content}{block['content'].strip()}\n" + elif block["type"] == "tool": + pass + elif block["type"] == "reasoning": reasoning_display_content = "\n".join( (f"> {line}" if not line.startswith(">") else line) @@ -1310,6 +1310,7 @@ async def process_chat_response( try: data = json.loads(data) + print(data) if "selected_model_id" in data: model_id = data["selected_model_id"] diff --git a/backend/open_webui/utils/tools.py b/backend/open_webui/utils/tools.py index d83772acd5..c44c30402d 100644 --- a/backend/open_webui/utils/tools.py +++ b/backend/open_webui/utils/tools.py @@ -61,6 +61,12 @@ def get_tools( ) for spec in tools.specs: + # TODO: Fix hack for OpenAI API + # Some times breaks OpenAI but others don't. Leaving the comment + for val in spec.get("parameters", {}).get("properties", {}).values(): + if val["type"] == "str": + val["type"] = "string" + # Remove internal parameters spec["parameters"]["properties"] = { key: val From 7766a08b701af31494f7c8797ea67d2766062e3a Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 4 Feb 2025 21:42:49 -0800 Subject: [PATCH 38/69] refac: ollama tool calls --- backend/open_webui/utils/misc.py | 19 ++++++++++++++----- backend/open_webui/utils/response.py | 20 +++++++++++++++++++- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/backend/open_webui/utils/misc.py b/backend/open_webui/utils/misc.py index 0487595a1e..c3655bf073 100644 --- a/backend/open_webui/utils/misc.py +++ b/backend/open_webui/utils/misc.py @@ -179,15 +179,24 @@ def openai_chat_message_template(model: str): def openai_chat_chunk_message_template( - model: str, message: Optional[str] = None, usage: Optional[dict] = None + model: str, + content: Optional[str] = None, + tool_calls: Optional[list[dict]] = None, + usage: Optional[dict] = None, ) -> dict: template = openai_chat_message_template(model) template["object"] = "chat.completion.chunk" - if message: - template["choices"][0]["delta"] = {"content": message} - else: + + template["choices"][0]["delta"] = {} + + if content: + template["choices"][0]["delta"]["content"] = content + + if tool_calls: + template["choices"][0]["delta"]["tool_calls"] = tool_calls + + if not content and not tool_calls: template["choices"][0]["finish_reason"] = "stop" - template["choices"][0]["delta"] = {} if usage: template["usage"] = usage diff --git a/backend/open_webui/utils/response.py b/backend/open_webui/utils/response.py index f461f7cc23..b16805bf35 100644 --- a/backend/open_webui/utils/response.py +++ b/backend/open_webui/utils/response.py @@ -1,4 +1,5 @@ import json +from uuid import uuid4 from open_webui.utils.misc import ( openai_chat_chunk_message_template, openai_chat_completion_message_template, @@ -60,6 +61,23 @@ async def convert_streaming_response_ollama_to_openai(ollama_streaming_response) model = data.get("model", "ollama") message_content = data.get("message", {}).get("content", "") + tool_calls = data.get("message", {}).get("tool_calls", None) + openai_tool_calls = None + + if tool_calls: + openai_tool_calls = [] + for tool_call in tool_calls: + openai_tool_call = { + "index": tool_call.get("index", 0), + "id": tool_call.get("id", f"call_{str(uuid4())}"), + "type": "function", + "function": { + "name": tool_call.get("function", {}).get("name", ""), + "arguments": f"{tool_call.get('function', {}).get('arguments', {})}", + }, + } + openai_tool_calls.append(openai_tool_call) + done = data.get("done", False) usage = None @@ -105,7 +123,7 @@ async def convert_streaming_response_ollama_to_openai(ollama_streaming_response) } data = openai_chat_chunk_message_template( - model, message_content if not done else None, usage + model, message_content if not done else None, openai_tool_calls, usage ) line = f"data: {json.dumps(data)}\n\n" From 314b674f322098e347e1534317125cfa92e81861 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 4 Feb 2025 23:05:14 -0800 Subject: [PATCH 39/69] feat: native tool calling support --- backend/open_webui/utils/middleware.py | 178 ++++++++++++++++++++++++- backend/open_webui/utils/misc.py | 13 ++ 2 files changed, 185 insertions(+), 6 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 3b3762f31f..c68f3a8705 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -57,6 +57,7 @@ from open_webui.utils.task import ( tools_function_calling_generation_template, ) from open_webui.utils.misc import ( + deep_update, get_message_list, add_or_update_system_message, add_or_update_user_message, @@ -1126,8 +1127,18 @@ async def process_chat_response( for block in content_blocks: if block["type"] == "text": content = f"{content}{block['content'].strip()}\n" - elif block["type"] == "tool": - pass + elif block["type"] == "tool_calls": + attributes = block.get("attributes", {}) + + block_content = block.get("content", []) + results = block.get("results", []) + + if results: + if not raw: + content = f'{content}\n
\nTool Executed\n```json\n{block_content}\n```\n```json\n{results}\n```\n
\n' + else: + if not raw: + content = f'{content}\n
\nTool Executing...\n```json\n{block_content}\n```\n
\n' elif block["type"] == "reasoning": reasoning_display_content = "\n".join( @@ -1254,6 +1265,7 @@ async def process_chat_response( metadata["chat_id"], metadata["message_id"] ) + tool_calls = [] content = message.get("content", "") if message else "" content_blocks = [ { @@ -1293,6 +1305,8 @@ async def process_chat_response( nonlocal content nonlocal content_blocks + response_tool_calls = [] + async for line in response.body_iterator: line = line.decode("utf-8") if isinstance(line, bytes) else line data = line @@ -1326,7 +1340,42 @@ async def process_chat_response( if not choices: continue - value = choices[0].get("delta", {}).get("content") + delta = choices[0].get("delta", {}) + delta_tool_calls = delta.get("tool_calls", None) + + if delta_tool_calls: + for delta_tool_call in delta_tool_calls: + tool_call_index = delta_tool_call.get("index") + + if tool_call_index is not None: + if ( + len(response_tool_calls) + <= tool_call_index + ): + response_tool_calls.append( + delta_tool_call + ) + else: + delta_name = delta_tool_call.get( + "function", {} + ).get("name") + delta_arguments = delta_tool_call.get( + "function", {} + ).get("arguments") + + if delta_name: + response_tool_calls[ + tool_call_index + ]["function"]["name"] += delta_name + + if delta_arguments: + response_tool_calls[ + tool_call_index + ]["function"][ + "arguments" + ] += delta_arguments + + value = delta.get("content") if value: content = f"{content}{value}" @@ -1398,6 +1447,29 @@ async def process_chat_response( if not content_blocks[-1]["content"]: content_blocks.pop() + if response_tool_calls: + tool_calls.append(response_tool_calls) + + if response.background: + await response.background() + + await stream_body_handler(response) + + MAX_TOOL_CALL_RETRIES = 5 + tool_call_retries = 0 + + while len(tool_calls) > 0 and tool_call_retries < MAX_TOOL_CALL_RETRIES: + tool_call_retries += 1 + + response_tool_calls = tool_calls.pop(0) + + content_blocks.append( + { + "type": "tool_calls", + "content": response_tool_calls, + } + ) + await event_emitter( { "type": "chat:completion", @@ -1407,10 +1479,103 @@ async def process_chat_response( } ) - if response.background: - await response.background() + tools = metadata.get("tools", {}) - await stream_body_handler(response) + results = [] + for tool_call in response_tool_calls: + tool_call_id = tool_call.get("id", "") + tool_name = tool_call.get("function", {}).get("name", "") + + tool_function_params = {} + try: + tool_function_params = json.loads( + tool_call.get("function", {}).get("arguments", "{}") + ) + except Exception as e: + log.debug(e) + + tool_result = None + + if tool_name in tools: + tool = tools[tool_name] + spec = tool.get("spec", {}) + + try: + required_params = spec.get("parameters", {}).get( + "required", [] + ) + tool_function = tool["callable"] + tool_function_params = { + k: v + for k, v in tool_function_params.items() + if k in required_params + } + tool_result = await tool_function( + **tool_function_params + ) + except Exception as e: + tool_result = str(e) + + results.append( + { + "tool_call_id": tool_call_id, + "content": tool_result, + } + ) + + content_blocks[-1]["results"] = results + + content_blocks.append( + { + "type": "text", + "content": "", + } + ) + + await event_emitter( + { + "type": "chat:completion", + "data": { + "content": serialize_content_blocks(content_blocks), + }, + } + ) + + try: + res = await generate_chat_completion( + request, + { + "model": model_id, + "stream": True, + "messages": [ + *form_data["messages"], + { + "role": "assistant", + "content": serialize_content_blocks( + content_blocks, raw=True + ), + "tool_calls": response_tool_calls, + }, + *[ + { + "role": "tool", + "tool_call_id": result["tool_call_id"], + "content": result["content"], + } + for result in results + ], + ], + }, + user, + ) + + if isinstance(res, StreamingResponse): + await stream_body_handler(res) + else: + break + except Exception as e: + log.debug(e) + break if DETECT_CODE_INTERPRETER: MAX_RETRIES = 5 @@ -1472,6 +1637,7 @@ async def process_chat_response( output = str(e) content_blocks[-1]["output"] = output + content_blocks.append( { "type": "text", diff --git a/backend/open_webui/utils/misc.py b/backend/open_webui/utils/misc.py index c3655bf073..b073939219 100644 --- a/backend/open_webui/utils/misc.py +++ b/backend/open_webui/utils/misc.py @@ -7,6 +7,18 @@ from pathlib import Path from typing import Callable, Optional +import collections.abc + + +def deep_update(d, u): + for k, v in u.items(): + if isinstance(v, collections.abc.Mapping): + d[k] = deep_update(d.get(k, {}), v) + else: + d[k] = v + return d + + def get_message_list(messages, message_id): """ Reconstructs a list of messages in order up to the specified message_id. @@ -187,6 +199,7 @@ def openai_chat_chunk_message_template( template = openai_chat_message_template(model) template["object"] = "chat.completion.chunk" + template["choices"][0]["index"] = 0 template["choices"][0]["delta"] = {} if content: From e349e26cd893e59303689ed4f7c5fd4ebe2dcb21 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 4 Feb 2025 23:20:09 -0800 Subject: [PATCH 40/69] refac --- backend/open_webui/utils/middleware.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index c68f3a8705..ec112a3e58 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1134,11 +1134,27 @@ async def process_chat_response( results = block.get("results", []) if results: + + result_display_content = "" + + for result in results: + tool_call_id = result.get("tool_call_id", "") + tool_name = "" + + for tool_call in block_content: + if tool_call.get("id", "") == tool_call_id: + tool_name = tool_call.get("function", {}).get( + "name", "" + ) + break + + result_display_content = f"{result_display_content}\n> {tool_name}: {result.get('content', '')}" + if not raw: - content = f'{content}\n
\nTool Executed\n```json\n{block_content}\n```\n```json\n{results}\n```\n
\n' + content = f'{content}\n
\nTool Executed\n{result_display_content}\n
\n' else: if not raw: - content = f'{content}\n
\nTool Executing...\n```json\n{block_content}\n```\n
\n' + content = f'{content}\n
\nTool Executing...\n
\n' elif block["type"] == "reasoning": reasoning_display_content = "\n".join( From 9624493b55dca92cc814815830099d70a4e79f26 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 4 Feb 2025 23:44:51 -0800 Subject: [PATCH 41/69] refac --- backend/open_webui/main.py | 6 +++++- scripts/prepare-pyodide.js | 3 ++- src/lib/components/chat/Messages/CodeBlock.svelte | 3 ++- src/routes/+layout.svelte | 3 ++- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index 1707c8299e..863f58dea5 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -883,7 +883,11 @@ async def chat_completion( **( {"function_calling": "native"} if form_data.get("params", {}).get("function_calling") == "native" - or model_info.params.model_dump().get("function_calling") == "native" + or ( + model_info + and model_info.params.model_dump().get("function_calling") + == "native" + ) else {} ), } diff --git a/scripts/prepare-pyodide.js b/scripts/prepare-pyodide.js index ccc21b4526..71f2a2cb29 100644 --- a/scripts/prepare-pyodide.js +++ b/scripts/prepare-pyodide.js @@ -11,7 +11,8 @@ const packages = [ 'regex', 'sympy', 'tiktoken', - 'seaborn' + 'seaborn', + 'pytz' ]; import { loadPyodide } from 'pyodide'; diff --git a/src/lib/components/chat/Messages/CodeBlock.svelte b/src/lib/components/chat/Messages/CodeBlock.svelte index 02715f31f9..f4efaba734 100644 --- a/src/lib/components/chat/Messages/CodeBlock.svelte +++ b/src/lib/components/chat/Messages/CodeBlock.svelte @@ -132,7 +132,8 @@ code.includes('seaborn') ? 'seaborn' : null, code.includes('sympy') ? 'sympy' : null, code.includes('tiktoken') ? 'tiktoken' : null, - code.includes('matplotlib') ? 'matplotlib' : null + code.includes('matplotlib') ? 'matplotlib' : null, + code.includes('pytz') ? 'pytz' : null ].filter(Boolean); console.log(packages); diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index b3d793ff6b..76323f772f 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -118,7 +118,8 @@ code.includes('re') ? 'regex' : null, code.includes('seaborn') ? 'seaborn' : null, code.includes('sympy') ? 'sympy' : null, - code.includes('tiktoken') ? 'tiktoken' : null + code.includes('tiktoken') ? 'tiktoken' : null, + code.includes('pytz') ? 'pytz' : null ].filter(Boolean); const pyodideWorker = new PyodideWorker(); From 2b0af33274d39d0ddaa927666bd119b4472d4a96 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 4 Feb 2025 23:48:01 -0800 Subject: [PATCH 42/69] refac --- backend/open_webui/utils/middleware.py | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index ec112a3e58..f806802803 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1340,7 +1340,6 @@ async def process_chat_response( try: data = json.loads(data) - print(data) if "selected_model_id" in data: model_id = data["selected_model_id"] From c778345e84fad1827f38a298d515ce5a42772fff Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 5 Feb 2025 00:01:24 -0800 Subject: [PATCH 43/69] refac --- backend/open_webui/utils/middleware.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index f806802803..0dedbfa4b3 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -12,6 +12,7 @@ import json import html import inspect import re +import ast from uuid import uuid4 from concurrent.futures import ThreadPoolExecutor @@ -1498,12 +1499,14 @@ async def process_chat_response( results = [] for tool_call in response_tool_calls: + print("\n\n" + str(tool_call) + "\n\n") tool_call_id = tool_call.get("id", "") tool_name = tool_call.get("function", {}).get("name", "") tool_function_params = {} try: - tool_function_params = json.loads( + # json.loads cannot be used because some models do not produce valid JSON + tool_function_params = ast.literal_eval( tool_call.get("function", {}).get("arguments", "{}") ) except Exception as e: From e41a2682f5f6bb033af29b189826b525299ab2b2 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 5 Feb 2025 00:07:45 -0800 Subject: [PATCH 44/69] chore: format --- backend/open_webui/retrieval/utils.py | 33 ++++++++++++----- backend/open_webui/retrieval/web/exa.py | 4 +- backend/open_webui/routers/files.py | 2 +- backend/open_webui/routers/knowledge.py | 4 +- backend/open_webui/routers/memories.py | 4 +- backend/open_webui/routers/retrieval.py | 39 +++++++++++++------- backend/open_webui/utils/middleware.py | 4 +- src/lib/i18n/locales/ar-BH/translation.json | 6 +++ src/lib/i18n/locales/bg-BG/translation.json | 6 +++ src/lib/i18n/locales/bn-BD/translation.json | 6 +++ src/lib/i18n/locales/ca-ES/translation.json | 6 +++ src/lib/i18n/locales/ceb-PH/translation.json | 6 +++ src/lib/i18n/locales/cs-CZ/translation.json | 6 +++ src/lib/i18n/locales/da-DK/translation.json | 6 +++ src/lib/i18n/locales/de-DE/translation.json | 6 +++ src/lib/i18n/locales/dg-DG/translation.json | 6 +++ src/lib/i18n/locales/el-GR/translation.json | 6 +++ src/lib/i18n/locales/en-GB/translation.json | 6 +++ src/lib/i18n/locales/en-US/translation.json | 6 +++ src/lib/i18n/locales/es-ES/translation.json | 6 +++ src/lib/i18n/locales/eu-ES/translation.json | 6 +++ src/lib/i18n/locales/fa-IR/translation.json | 6 +++ src/lib/i18n/locales/fi-FI/translation.json | 6 +++ src/lib/i18n/locales/fr-CA/translation.json | 6 +++ src/lib/i18n/locales/fr-FR/translation.json | 6 +++ src/lib/i18n/locales/he-IL/translation.json | 6 +++ src/lib/i18n/locales/hi-IN/translation.json | 6 +++ src/lib/i18n/locales/hr-HR/translation.json | 6 +++ src/lib/i18n/locales/hu-HU/translation.json | 6 +++ src/lib/i18n/locales/id-ID/translation.json | 6 +++ src/lib/i18n/locales/ie-GA/translation.json | 6 +++ src/lib/i18n/locales/it-IT/translation.json | 6 +++ src/lib/i18n/locales/ja-JP/translation.json | 6 +++ src/lib/i18n/locales/ka-GE/translation.json | 6 +++ src/lib/i18n/locales/ko-KR/translation.json | 6 +++ src/lib/i18n/locales/lt-LT/translation.json | 6 +++ src/lib/i18n/locales/ms-MY/translation.json | 6 +++ src/lib/i18n/locales/nb-NO/translation.json | 6 +++ src/lib/i18n/locales/nl-NL/translation.json | 6 +++ src/lib/i18n/locales/pa-IN/translation.json | 6 +++ src/lib/i18n/locales/pl-PL/translation.json | 6 +++ src/lib/i18n/locales/pt-BR/translation.json | 6 +++ src/lib/i18n/locales/pt-PT/translation.json | 6 +++ src/lib/i18n/locales/ro-RO/translation.json | 6 +++ src/lib/i18n/locales/ru-RU/translation.json | 6 +++ src/lib/i18n/locales/sk-SK/translation.json | 6 +++ src/lib/i18n/locales/sr-RS/translation.json | 6 +++ src/lib/i18n/locales/sv-SE/translation.json | 6 +++ src/lib/i18n/locales/th-TH/translation.json | 6 +++ src/lib/i18n/locales/tk-TW/translation.json | 6 +++ src/lib/i18n/locales/tr-TR/translation.json | 6 +++ src/lib/i18n/locales/uk-UA/translation.json | 6 +++ src/lib/i18n/locales/ur-PK/translation.json | 6 +++ src/lib/i18n/locales/vi-VN/translation.json | 6 +++ src/lib/i18n/locales/zh-CN/translation.json | 6 +++ src/lib/i18n/locales/zh-TW/translation.json | 6 +++ 56 files changed, 355 insertions(+), 29 deletions(-) diff --git a/backend/open_webui/retrieval/utils.py b/backend/open_webui/retrieval/utils.py index 790f8b9ec5..b7da20ad5f 100644 --- a/backend/open_webui/retrieval/utils.py +++ b/backend/open_webui/retrieval/utils.py @@ -17,7 +17,11 @@ from open_webui.retrieval.vector.connector import VECTOR_DB_CLIENT from open_webui.utils.misc import get_last_user_message from open_webui.models.users import UserModel -from open_webui.env import SRC_LOG_LEVELS, OFFLINE_MODE, ENABLE_FORWARD_USER_INFO_HEADERS +from open_webui.env import ( + SRC_LOG_LEVELS, + OFFLINE_MODE, + ENABLE_FORWARD_USER_INFO_HEADERS, +) log = logging.getLogger(__name__) log.setLevel(SRC_LOG_LEVELS["RAG"]) @@ -62,10 +66,7 @@ class VectorSearchRetriever(BaseRetriever): def query_doc( - collection_name: str, - query_embedding: list[float], - k: int, - user: UserModel=None + collection_name: str, query_embedding: list[float], k: int, user: UserModel = None ): try: result = VECTOR_DB_CLIENT.search( @@ -258,7 +259,7 @@ def get_embedding_function( embedding_function, url, key, - embedding_batch_size + embedding_batch_size, ): if embedding_engine == "": return lambda query, user=None: embedding_function.encode(query).tolist() @@ -269,14 +270,16 @@ def get_embedding_function( text=query, url=url, key=key, - user=user + user=user, ) def generate_multiple(query, user, func): if isinstance(query, list): embeddings = [] for i in range(0, len(query), embedding_batch_size): - embeddings.extend(func(query[i : i + embedding_batch_size], user=user)) + embeddings.extend( + func(query[i : i + embedding_batch_size], user=user) + ) return embeddings else: return func(query, user) @@ -428,7 +431,11 @@ def get_model_path(model: str, update_model: bool = False): def generate_openai_batch_embeddings( - model: str, texts: list[str], url: str = "https://api.openai.com/v1", key: str = "", user: UserModel = None + model: str, + texts: list[str], + url: str = "https://api.openai.com/v1", + key: str = "", + user: UserModel = None, ) -> Optional[list[list[float]]]: try: r = requests.post( @@ -506,7 +513,13 @@ def generate_embeddings(engine: str, model: str, text: Union[str, list[str]], ** ) else: embeddings = generate_ollama_batch_embeddings( - **{"model": model, "texts": [text], "url": url, "key": key, "user": user} + **{ + "model": model, + "texts": [text], + "url": url, + "key": key, + "user": user, + } ) return embeddings[0] if isinstance(text, str) else embeddings elif engine == "openai": diff --git a/backend/open_webui/retrieval/web/exa.py b/backend/open_webui/retrieval/web/exa.py index 3dbcc472e6..927adef413 100644 --- a/backend/open_webui/retrieval/web/exa.py +++ b/backend/open_webui/retrieval/web/exa.py @@ -46,7 +46,9 @@ def search_exa( } try: - response = requests.post(f"{EXA_API_BASE}/search", headers=headers, json=payload) + response = requests.post( + f"{EXA_API_BASE}/search", headers=headers, json=payload + ) response.raise_for_status() data = response.json() diff --git a/backend/open_webui/routers/files.py b/backend/open_webui/routers/files.py index 1ab76fac1c..7160c2e86e 100644 --- a/backend/open_webui/routers/files.py +++ b/backend/open_webui/routers/files.py @@ -195,7 +195,7 @@ async def update_file_data_content_by_id( process_file( request, ProcessFileForm(file_id=id, content=form_data.content), - user=user + user=user, ) file = Files.get_file_by_id(id=id) except Exception as e: diff --git a/backend/open_webui/routers/knowledge.py b/backend/open_webui/routers/knowledge.py index 41061f6e33..0ba6191a2a 100644 --- a/backend/open_webui/routers/knowledge.py +++ b/backend/open_webui/routers/knowledge.py @@ -291,7 +291,7 @@ def add_file_to_knowledge_by_id( process_file( request, ProcessFileForm(file_id=form_data.file_id, collection_name=id), - user=user + user=user, ) except Exception as e: log.debug(e) @@ -376,7 +376,7 @@ def update_file_from_knowledge_by_id( process_file( request, ProcessFileForm(file_id=form_data.file_id, collection_name=id), - user=user + user=user, ) except Exception as e: raise HTTPException( diff --git a/backend/open_webui/routers/memories.py b/backend/open_webui/routers/memories.py index 8ffc67cc00..c55a6a9cc9 100644 --- a/backend/open_webui/routers/memories.py +++ b/backend/open_webui/routers/memories.py @@ -160,7 +160,9 @@ async def update_memory_by_id( { "id": memory.id, "text": memory.content, - "vector": request.app.state.EMBEDDING_FUNCTION(memory.content, user), + "vector": request.app.state.EMBEDDING_FUNCTION( + memory.content, user + ), "metadata": { "created_at": memory.created_at, "updated_at": memory.updated_at, diff --git a/backend/open_webui/routers/retrieval.py b/backend/open_webui/routers/retrieval.py index 0b87a4adb0..77f04a4be5 100644 --- a/backend/open_webui/routers/retrieval.py +++ b/backend/open_webui/routers/retrieval.py @@ -666,7 +666,7 @@ def save_docs_to_vector_db( overwrite: bool = False, split: bool = True, add: bool = False, - user = None, + user=None, ) -> bool: def _get_docs_info(docs: list[Document]) -> str: docs_info = set() @@ -782,8 +782,7 @@ def save_docs_to_vector_db( ) embeddings = embedding_function( - list(map(lambda x: x.replace("\n", " "), texts)), - user = user + list(map(lambda x: x.replace("\n", " "), texts)), user=user ) items = [ @@ -941,7 +940,7 @@ def process_file( "hash": hash, }, add=(True if form_data.collection_name else False), - user=user + user=user, ) if result: @@ -1032,7 +1031,9 @@ def process_youtube_video( content = " ".join([doc.page_content for doc in docs]) log.debug(f"text_content: {content}") - save_docs_to_vector_db(request, docs, collection_name, overwrite=True, user=user) + save_docs_to_vector_db( + request, docs, collection_name, overwrite=True, user=user + ) return { "status": True, @@ -1073,7 +1074,9 @@ def process_web( content = " ".join([doc.page_content for doc in docs]) log.debug(f"text_content: {content}") - save_docs_to_vector_db(request, docs, collection_name, overwrite=True, user=user) + save_docs_to_vector_db( + request, docs, collection_name, overwrite=True, user=user + ) return { "status": True, @@ -1289,7 +1292,9 @@ def process_web_search( requests_per_second=request.app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS, ) docs = loader.load() - save_docs_to_vector_db(request, docs, collection_name, overwrite=True, user=user) + save_docs_to_vector_db( + request, docs, collection_name, overwrite=True, user=user + ) return { "status": True, @@ -1323,7 +1328,9 @@ def query_doc_handler( return query_doc_with_hybrid_search( collection_name=form_data.collection_name, query=form_data.query, - embedding_function=lambda query: request.app.state.EMBEDDING_FUNCTION(query, user=user), + embedding_function=lambda query: request.app.state.EMBEDDING_FUNCTION( + query, user=user + ), k=form_data.k if form_data.k else request.app.state.config.TOP_K, reranking_function=request.app.state.rf, r=( @@ -1331,14 +1338,16 @@ def query_doc_handler( if form_data.r else request.app.state.config.RELEVANCE_THRESHOLD ), - user=user + user=user, ) else: return query_doc( collection_name=form_data.collection_name, - query_embedding=request.app.state.EMBEDDING_FUNCTION(form_data.query, user=user), + query_embedding=request.app.state.EMBEDDING_FUNCTION( + form_data.query, user=user + ), k=form_data.k if form_data.k else request.app.state.config.TOP_K, - user=user + user=user, ) except Exception as e: log.exception(e) @@ -1367,7 +1376,9 @@ def query_collection_handler( return query_collection_with_hybrid_search( collection_names=form_data.collection_names, queries=[form_data.query], - embedding_function=lambda query: request.app.state.EMBEDDING_FUNCTION(query, user=user), + embedding_function=lambda query: request.app.state.EMBEDDING_FUNCTION( + query, user=user + ), k=form_data.k if form_data.k else request.app.state.config.TOP_K, reranking_function=request.app.state.rf, r=( @@ -1380,7 +1391,9 @@ def query_collection_handler( return query_collection( collection_names=form_data.collection_names, queries=[form_data.query], - embedding_function=lambda query: request.app.state.EMBEDDING_FUNCTION(query,user=user), + embedding_function=lambda query: request.app.state.EMBEDDING_FUNCTION( + query, user=user + ), k=form_data.k if form_data.k else request.app.state.config.TOP_K, ) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index e356fd1185..19487116a5 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -634,7 +634,9 @@ async def chat_completion_files_handler( lambda: get_sources_from_files( files=files, queries=queries, - embedding_function=lambda query: request.app.state.EMBEDDING_FUNCTION(query,user=user), + embedding_function=lambda query: request.app.state.EMBEDDING_FUNCTION( + query, user=user + ), k=request.app.state.config.TOP_K, reranking_function=request.app.state.rf, r=request.app.state.config.RELEVANCE_THRESHOLD, diff --git a/src/lib/i18n/locales/ar-BH/translation.json b/src/lib/i18n/locales/ar-BH/translation.json index 5dc688866f..43d9d36d56 100644 --- a/src/lib/i18n/locales/ar-BH/translation.json +++ b/src/lib/i18n/locales/ar-BH/translation.json @@ -237,6 +237,7 @@ "Default": "الإفتراضي", "Default (Open AI)": "", "Default (SentenceTransformers)": "(SentenceTransformers) الإفتراضي", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "النموذج الافتراضي", "Default model updated": "الإفتراضي تحديث الموديل", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "أدخل الChunk Overlap", "Enter Chunk Size": "أدخل Chunk الحجم", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "أدخل عنوان URL ل Github Raw", "Enter Google PSE API Key": "أدخل مفتاح واجهة برمجة تطبيقات PSE من Google", "Enter Google PSE Engine Id": "أدخل معرف محرك PSE من Google", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "عقوبة التردد", "Function": "", + "Function Calling": "", "Function created successfully": "", "Function deleted successfully": "", "Function Description": "", @@ -625,6 +629,7 @@ "More": "المزيد", "Name": "الأسم", "Name your knowledge base": "", + "Native": "", "New Chat": "دردشة جديدة", "New Folder": "", "New Password": "كلمة المرور الجديدة", @@ -728,6 +733,7 @@ "Previous 30 days": "أخر 30 يوم", "Previous 7 days": "أخر 7 أيام", "Profile Image": "صورة الملف الشخصي", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "موجه (على سبيل المثال: أخبرني بحقيقة ممتعة عن الإمبراطورية الرومانية)", "Prompt Content": "محتوى عاجل", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/bg-BG/translation.json b/src/lib/i18n/locales/bg-BG/translation.json index a98b5c7346..2a4e5e5ccd 100644 --- a/src/lib/i18n/locales/bg-BG/translation.json +++ b/src/lib/i18n/locales/bg-BG/translation.json @@ -237,6 +237,7 @@ "Default": "По подразбиране", "Default (Open AI)": "", "Default (SentenceTransformers)": "По подразбиране (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Модел по подразбиране", "Default model updated": "Моделът по подразбиране е обновен", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Въведете Chunk Overlap", "Enter Chunk Size": "Въведете Chunk Size", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "Въведете URL адреса на Github Raw", "Enter Google PSE API Key": "Въведете Google PSE API ключ", "Enter Google PSE Engine Id": "Въведете идентификатор на двигателя на Google PSE", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "Наказание за честота", "Function": "", + "Function Calling": "", "Function created successfully": "", "Function deleted successfully": "", "Function Description": "", @@ -625,6 +629,7 @@ "More": "Повече", "Name": "Име", "Name your knowledge base": "", + "Native": "", "New Chat": "Нов чат", "New Folder": "", "New Password": "Нова парола", @@ -728,6 +733,7 @@ "Previous 30 days": "Предыдущите 30 дни", "Previous 7 days": "Предыдущите 7 дни", "Profile Image": "Профилна снимка", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Промпт (напр. Обмисли ме забавна факт за Римската империя)", "Prompt Content": "Съдържание на промпта", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/bn-BD/translation.json b/src/lib/i18n/locales/bn-BD/translation.json index 440e82b89d..101f883cce 100644 --- a/src/lib/i18n/locales/bn-BD/translation.json +++ b/src/lib/i18n/locales/bn-BD/translation.json @@ -237,6 +237,7 @@ "Default": "ডিফল্ট", "Default (Open AI)": "", "Default (SentenceTransformers)": "ডিফল্ট (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "ডিফল্ট মডেল", "Default model updated": "ডিফল্ট মডেল আপডেট হয়েছে", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "চাঙ্ক ওভারল্যাপ লিখুন", "Enter Chunk Size": "চাংক সাইজ লিখুন", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "গিটহাব কাঁচা URL লিখুন", "Enter Google PSE API Key": "গুগল পিএসই এপিআই কী লিখুন", "Enter Google PSE Engine Id": "গুগল পিএসই ইঞ্জিন আইডি লিখুন", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "ফ্রিকোয়েন্সি পেনাল্টি", "Function": "", + "Function Calling": "", "Function created successfully": "", "Function deleted successfully": "", "Function Description": "", @@ -625,6 +629,7 @@ "More": "আরো", "Name": "নাম", "Name your knowledge base": "", + "Native": "", "New Chat": "নতুন চ্যাট", "New Folder": "", "New Password": "নতুন পাসওয়ার্ড", @@ -728,6 +733,7 @@ "Previous 30 days": "পূর্ব ৩০ দিন", "Previous 7 days": "পূর্ব ৭ দিন", "Profile Image": "প্রোফাইল ইমেজ", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "প্রম্প্ট (উদাহরণস্বরূপ, আমি রোমান ইমপার্টের সম্পর্কে একটি উপস্থিতি জানতে বল)", "Prompt Content": "প্রম্পট কন্টেন্ট", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/ca-ES/translation.json b/src/lib/i18n/locales/ca-ES/translation.json index e273cabe03..597b9d49b0 100644 --- a/src/lib/i18n/locales/ca-ES/translation.json +++ b/src/lib/i18n/locales/ca-ES/translation.json @@ -237,6 +237,7 @@ "Default": "Per defecte", "Default (Open AI)": "Per defecte (Open AI)", "Default (SentenceTransformers)": "Per defecte (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Model per defecte", "Default model updated": "Model per defecte actualitzat", "Default Models": "Models per defecte", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Introdueix la mida de solapament de blocs", "Enter Chunk Size": "Introdueix la mida del bloc", "Enter description": "Introdueix la descripció", + "Enter Exa API Key": "", "Enter Github Raw URL": "Introdueix l'URL en brut de Github", "Enter Google PSE API Key": "Introdueix la clau API de Google PSE", "Enter Google PSE Engine Id": "Introdueix l'identificador del motor PSE de Google", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "Error en accedir a Google Drive: {{error}}", "Error uploading file: {{error}}": "Error en pujar l'arxiu: {{error}}", "Evaluations": "Avaluacions", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Exemple: (&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "Exemple: TOTS", "Example: mail": "Exemple: mail", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "Formata les teves variables utilitzant claudàtors així:", "Frequency Penalty": "Penalització per freqüència", "Function": "Funció", + "Function Calling": "", "Function created successfully": "La funció s'ha creat correctament", "Function deleted successfully": "La funció s'ha eliminat correctament", "Function Description": "Descripció de la funció", @@ -625,6 +629,7 @@ "More": "Més", "Name": "Nom", "Name your knowledge base": "Anomena la teva base de coneixement", + "Native": "", "New Chat": "Nou xat", "New Folder": "Nova carpeta", "New Password": "Nova contrasenya", @@ -728,6 +733,7 @@ "Previous 30 days": "30 dies anteriors", "Previous 7 days": "7 dies anteriors", "Profile Image": "Imatge de perfil", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Indicació (p.ex. Digues-me quelcom divertit sobre l'Imperi Romà)", "Prompt Content": "Contingut de la indicació", "Prompt created successfully": "Indicació creada correctament", diff --git a/src/lib/i18n/locales/ceb-PH/translation.json b/src/lib/i18n/locales/ceb-PH/translation.json index 905e150a1d..fcda24a482 100644 --- a/src/lib/i18n/locales/ceb-PH/translation.json +++ b/src/lib/i18n/locales/ceb-PH/translation.json @@ -237,6 +237,7 @@ "Default": "Pinaagi sa default", "Default (Open AI)": "", "Default (SentenceTransformers)": "", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "", "Default model updated": "Gi-update nga default template", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Pagsulod sa block overlap", "Enter Chunk Size": "Isulod ang block size", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "", "Enter Google PSE API Key": "", "Enter Google PSE Engine Id": "", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "", "Function": "", + "Function Calling": "", "Function created successfully": "", "Function deleted successfully": "", "Function Description": "", @@ -625,6 +629,7 @@ "More": "", "Name": "Ngalan", "Name your knowledge base": "", + "Native": "", "New Chat": "Bag-ong diskusyon", "New Folder": "", "New Password": "Bag-ong Password", @@ -728,6 +733,7 @@ "Previous 30 days": "", "Previous 7 days": "", "Profile Image": "", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "", "Prompt Content": "Ang sulod sa prompt", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/cs-CZ/translation.json b/src/lib/i18n/locales/cs-CZ/translation.json index da189e4fde..fe8b91a17a 100644 --- a/src/lib/i18n/locales/cs-CZ/translation.json +++ b/src/lib/i18n/locales/cs-CZ/translation.json @@ -237,6 +237,7 @@ "Default": "Výchozí hodnoty nebo nastavení.", "Default (Open AI)": "Výchozí (Open AI)", "Default (SentenceTransformers)": "Výchozí (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Výchozí model", "Default model updated": "Výchozí model aktualizován.", "Default Models": "Výchozí modely", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Zadejte překryv části", "Enter Chunk Size": "Zadejte velikost bloku", "Enter description": "Zadejte popis", + "Enter Exa API Key": "", "Enter Github Raw URL": "Zadejte URL adresu Github Raw", "Enter Google PSE API Key": "Zadejte klíč rozhraní API Google PSE", "Enter Google PSE Engine Id": "Zadejte ID vyhledávacího mechanismu Google PSE", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "Hodnocení", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "Formátujte své proměnné pomocí závorek takto:", "Frequency Penalty": "Penalizace frekvence", "Function": "Funkce", + "Function Calling": "", "Function created successfully": "Funkce byla úspěšně vytvořena.", "Function deleted successfully": "Funkce byla úspěšně odstraněna", "Function Description": "", @@ -625,6 +629,7 @@ "More": "Více", "Name": "Jméno", "Name your knowledge base": "", + "Native": "", "New Chat": "Nový chat", "New Folder": "", "New Password": "Nové heslo", @@ -728,6 +733,7 @@ "Previous 30 days": "Předchozích 30 dnů", "Previous 7 days": "Předchozích 7 dní", "Profile Image": "Profilový obrázek", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (např. Řekni mi zábavný fakt o Římské říši)", "Prompt Content": "Obsah promptu", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/da-DK/translation.json b/src/lib/i18n/locales/da-DK/translation.json index 64802a1328..56944f011f 100644 --- a/src/lib/i18n/locales/da-DK/translation.json +++ b/src/lib/i18n/locales/da-DK/translation.json @@ -237,6 +237,7 @@ "Default": "Standard", "Default (Open AI)": "Standard (Open AI)", "Default (SentenceTransformers)": "Standard (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Standard model", "Default model updated": "Standard model opdateret", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Indtast overlapning af tekststykker", "Enter Chunk Size": "Indtast størrelse af tekststykker", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "Indtast Github Raw URL", "Enter Google PSE API Key": "Indtast Google PSE API-nøgle", "Enter Google PSE Engine Id": "Indtast Google PSE Engine ID", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "Hyppighedsstraf", "Function": "", + "Function Calling": "", "Function created successfully": "Funktion oprettet.", "Function deleted successfully": "Funktion slettet.", "Function Description": "", @@ -625,6 +629,7 @@ "More": "Mere", "Name": "Navn", "Name your knowledge base": "", + "Native": "", "New Chat": "Ny chat", "New Folder": "", "New Password": "Ny adgangskode", @@ -728,6 +733,7 @@ "Previous 30 days": "Seneste 30 dage", "Previous 7 days": "Seneste 7 dage", "Profile Image": "Profilbillede", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (f.eks. Fortæl mig en sjov kendsgerning om Romerriget)", "Prompt Content": "Promptindhold", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/de-DE/translation.json b/src/lib/i18n/locales/de-DE/translation.json index 9e5f1cc3dc..d16a0ed15b 100644 --- a/src/lib/i18n/locales/de-DE/translation.json +++ b/src/lib/i18n/locales/de-DE/translation.json @@ -237,6 +237,7 @@ "Default": "Standard", "Default (Open AI)": "Standard (Open AI)", "Default (SentenceTransformers)": "Standard (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Standardmodell", "Default model updated": "Standardmodell aktualisiert", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Geben Sie die Blocküberlappung ein", "Enter Chunk Size": "Geben Sie die Blockgröße ein", "Enter description": "Geben Sie eine Beschreibung ein", + "Enter Exa API Key": "", "Enter Github Raw URL": "Geben Sie die Github Raw-URL ein", "Enter Google PSE API Key": "Geben Sie den Google PSE-API-Schlüssel ein", "Enter Google PSE Engine Id": "Geben Sie die Google PSE-Engine-ID ein", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "Evaluationen", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Beispiel: (&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "Beispiel: ALL", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "Formatieren Sie Ihre Variablen mit Klammern, wie hier:", "Frequency Penalty": "Frequenzstrafe", "Function": "Funktion", + "Function Calling": "", "Function created successfully": "Funktion erfolgreich erstellt", "Function deleted successfully": "Funktion erfolgreich gelöscht", "Function Description": "Funktionsbeschreibung", @@ -625,6 +629,7 @@ "More": "Mehr", "Name": "Name", "Name your knowledge base": "Benennen Sie Ihren Wissensspeicher", + "Native": "", "New Chat": "Neue Unterhaltung", "New Folder": "", "New Password": "Neues Passwort", @@ -728,6 +733,7 @@ "Previous 30 days": "Vorherige 30 Tage", "Previous 7 days": "Vorherige 7 Tage", "Profile Image": "Profilbild", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (z. B. \"Erzähle mir eine interessante Tatsache über das Römische Reich\")", "Prompt Content": "Prompt-Inhalt", "Prompt created successfully": "Prompt erfolgreich erstellt", diff --git a/src/lib/i18n/locales/dg-DG/translation.json b/src/lib/i18n/locales/dg-DG/translation.json index a309146ee1..93946217ce 100644 --- a/src/lib/i18n/locales/dg-DG/translation.json +++ b/src/lib/i18n/locales/dg-DG/translation.json @@ -237,6 +237,7 @@ "Default": "Default", "Default (Open AI)": "", "Default (SentenceTransformers)": "", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "", "Default model updated": "Default model much updated", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Enter Overlap of Chunks", "Enter Chunk Size": "Enter Size of Chunk", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "", "Enter Google PSE API Key": "", "Enter Google PSE Engine Id": "", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "", "Function": "", + "Function Calling": "", "Function created successfully": "", "Function deleted successfully": "", "Function Description": "", @@ -625,6 +629,7 @@ "More": "", "Name": "Name", "Name your knowledge base": "", + "Native": "", "New Chat": "New Bark", "New Folder": "", "New Password": "New Barkword", @@ -728,6 +733,7 @@ "Previous 30 days": "", "Previous 7 days": "", "Profile Image": "", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "", "Prompt Content": "Prompt Content", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/el-GR/translation.json b/src/lib/i18n/locales/el-GR/translation.json index 1302c644bb..e496d49f79 100644 --- a/src/lib/i18n/locales/el-GR/translation.json +++ b/src/lib/i18n/locales/el-GR/translation.json @@ -237,6 +237,7 @@ "Default": "Προεπιλογή", "Default (Open AI)": "Προεπιλογή (Open AI)", "Default (SentenceTransformers)": "Προεπιλογή (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Προεπιλεγμένο Μοντέλο", "Default model updated": "Το προεπιλεγμένο μοντέλο ενημερώθηκε", "Default Models": "Προεπιλεγμένα Μοντέλα", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Εισάγετε την Επικάλυψη Τμημάτων", "Enter Chunk Size": "Εισάγετε το Μέγεθος Τμημάτων", "Enter description": "Εισάγετε την περιγραφή", + "Enter Exa API Key": "", "Enter Github Raw URL": "Εισάγετε το Github Raw URL", "Enter Google PSE API Key": "Εισάγετε το Κλειδί API Google PSE", "Enter Google PSE Engine Id": "Εισάγετε το Αναγνωριστικό Μηχανής Google PSE", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "Αξιολογήσεις", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Παράδειγμα: (&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "Παράδειγμα: ALL", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "Μορφοποιήστε τις μεταβλητές σας χρησιμοποιώντας αγκύλες όπως αυτό:", "Frequency Penalty": "Ποινή Συχνότητας", "Function": "Λειτουργία", + "Function Calling": "", "Function created successfully": "Η λειτουργία δημιουργήθηκε με επιτυχία", "Function deleted successfully": "Η λειτουργία διαγράφηκε με επιτυχία", "Function Description": "Περιγραφή Λειτουργίας", @@ -625,6 +629,7 @@ "More": "Περισσότερα", "Name": "Όνομα", "Name your knowledge base": "Ονομάστε τη βάση γνώσης σας", + "Native": "", "New Chat": "Νέα Συνομιλία", "New Folder": "", "New Password": "Νέος Κωδικός", @@ -728,6 +733,7 @@ "Previous 30 days": "Προηγούμενες 30 ημέρες", "Previous 7 days": "Προηγούμενες 7 ημέρες", "Profile Image": "Εικόνα Προφίλ", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Προτροπή (π.χ. Πες μου ένα διασκεδαστικό γεγονός για την Ρωμαϊκή Αυτοκρατορία)", "Prompt Content": "Περιεχόμενο Προτροπής", "Prompt created successfully": "Η προτροπή δημιουργήθηκε με επιτυχία", diff --git a/src/lib/i18n/locales/en-GB/translation.json b/src/lib/i18n/locales/en-GB/translation.json index d1b7382094..1a9bfc556e 100644 --- a/src/lib/i18n/locales/en-GB/translation.json +++ b/src/lib/i18n/locales/en-GB/translation.json @@ -237,6 +237,7 @@ "Default": "", "Default (Open AI)": "", "Default (SentenceTransformers)": "", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "", "Default model updated": "", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "", "Enter Chunk Size": "", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "", "Enter Google PSE API Key": "", "Enter Google PSE Engine Id": "", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "", "Function": "", + "Function Calling": "", "Function created successfully": "", "Function deleted successfully": "", "Function Description": "", @@ -625,6 +629,7 @@ "More": "", "Name": "", "Name your knowledge base": "", + "Native": "", "New Chat": "", "New Folder": "", "New Password": "", @@ -728,6 +733,7 @@ "Previous 30 days": "", "Previous 7 days": "", "Profile Image": "", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "", "Prompt Content": "", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/en-US/translation.json b/src/lib/i18n/locales/en-US/translation.json index d1b7382094..1a9bfc556e 100644 --- a/src/lib/i18n/locales/en-US/translation.json +++ b/src/lib/i18n/locales/en-US/translation.json @@ -237,6 +237,7 @@ "Default": "", "Default (Open AI)": "", "Default (SentenceTransformers)": "", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "", "Default model updated": "", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "", "Enter Chunk Size": "", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "", "Enter Google PSE API Key": "", "Enter Google PSE Engine Id": "", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "", "Function": "", + "Function Calling": "", "Function created successfully": "", "Function deleted successfully": "", "Function Description": "", @@ -625,6 +629,7 @@ "More": "", "Name": "", "Name your knowledge base": "", + "Native": "", "New Chat": "", "New Folder": "", "New Password": "", @@ -728,6 +733,7 @@ "Previous 30 days": "", "Previous 7 days": "", "Profile Image": "", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "", "Prompt Content": "", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index 9b42ed4e22..b0fb82af2f 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -237,6 +237,7 @@ "Default": "Por defecto", "Default (Open AI)": "Predeterminado (Open AI)", "Default (SentenceTransformers)": "Predeterminado (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Modelo predeterminado", "Default model updated": "El modelo por defecto ha sido actualizado", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Ingresar superposición de fragmentos", "Enter Chunk Size": "Ingrese el tamaño del fragmento", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "Ingresa la URL sin procesar de Github", "Enter Google PSE API Key": "Ingrese la clave API de Google PSE", "Enter Google PSE Engine Id": "Introduzca el ID del motor PSE de Google", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "Penalización de frecuencia", "Function": "", + "Function Calling": "", "Function created successfully": "Función creada exitosamente", "Function deleted successfully": "Función borrada exitosamente", "Function Description": "", @@ -625,6 +629,7 @@ "More": "Más", "Name": "Nombre", "Name your knowledge base": "", + "Native": "", "New Chat": "Nuevo Chat", "New Folder": "", "New Password": "Nueva Contraseña", @@ -728,6 +733,7 @@ "Previous 30 days": "Últimos 30 días", "Previous 7 days": "Últimos 7 días", "Profile Image": "Imagen de perfil", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (por ejemplo, cuéntame una cosa divertida sobre el Imperio Romano)", "Prompt Content": "Contenido del Prompt", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/eu-ES/translation.json b/src/lib/i18n/locales/eu-ES/translation.json index 038cf63116..0f708e4741 100644 --- a/src/lib/i18n/locales/eu-ES/translation.json +++ b/src/lib/i18n/locales/eu-ES/translation.json @@ -237,6 +237,7 @@ "Default": "Lehenetsia", "Default (Open AI)": "Lehenetsia (Open AI)", "Default (SentenceTransformers)": "Lehenetsia (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Eredu Lehenetsia", "Default model updated": "Eredu lehenetsia eguneratu da", "Default Models": "Eredu Lehenetsiak", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Sartu Zatien Gainjartzea (chunk overlap)", "Enter Chunk Size": "Sartu Zati Tamaina", "Enter description": "Sartu deskribapena", + "Enter Exa API Key": "", "Enter Github Raw URL": "Sartu Github Raw URLa", "Enter Google PSE API Key": "Sartu Google PSE API Gakoa", "Enter Google PSE Engine Id": "Sartu Google PSE Motor IDa", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "Ebaluazioak", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Adibidea: (&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "Adibidea: GUZTIAK", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "Formateatu zure aldagaiak kortxeteak erabiliz honela:", "Frequency Penalty": "Maiztasun Zigorra", "Function": "Funtzioa", + "Function Calling": "", "Function created successfully": "Funtzioa ongi sortu da", "Function deleted successfully": "Funtzioa ongi ezabatu da", "Function Description": "Funtzioaren Deskribapena", @@ -625,6 +629,7 @@ "More": "Gehiago", "Name": "Izena", "Name your knowledge base": "Izendatu zure ezagutza-basea", + "Native": "", "New Chat": "Txat berria", "New Folder": "", "New Password": "Pasahitz berria", @@ -728,6 +733,7 @@ "Previous 30 days": "Aurreko 30 egunak", "Previous 7 days": "Aurreko 7 egunak", "Profile Image": "Profil irudia", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt-a (adib. Kontatu datu dibertigarri bat Erromatar Inperioari buruz)", "Prompt Content": "Prompt edukia", "Prompt created successfully": "Prompt-a ongi sortu da", diff --git a/src/lib/i18n/locales/fa-IR/translation.json b/src/lib/i18n/locales/fa-IR/translation.json index ba5a9a425f..7ddc34f253 100644 --- a/src/lib/i18n/locales/fa-IR/translation.json +++ b/src/lib/i18n/locales/fa-IR/translation.json @@ -237,6 +237,7 @@ "Default": "پیشفرض", "Default (Open AI)": "", "Default (SentenceTransformers)": "پیشفرض (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "مدل پیشفرض", "Default model updated": "مدل پیشفرض به\u200cروزرسانی شد", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "مقدار Chunk Overlap را وارد کنید", "Enter Chunk Size": "مقدار Chunk Size را وارد کنید", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "ادرس Github Raw را وارد کنید", "Enter Google PSE API Key": "کلید API گوگل PSE را وارد کنید", "Enter Google PSE Engine Id": "شناسه موتور PSE گوگل را وارد کنید", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "مجازات فرکانس", "Function": "", + "Function Calling": "", "Function created successfully": "", "Function deleted successfully": "", "Function Description": "", @@ -625,6 +629,7 @@ "More": "بیشتر", "Name": "نام", "Name your knowledge base": "", + "Native": "", "New Chat": "گپ جدید", "New Folder": "", "New Password": "رمز عبور جدید", @@ -728,6 +733,7 @@ "Previous 30 days": "30 روز قبل", "Previous 7 days": "7 روز قبل", "Profile Image": "تصویر پروفایل", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "پیشنهاد (برای مثال: به من بگوید چیزی که برای من یک کاربرد داره درباره ایران)", "Prompt Content": "محتویات پرامپت", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/fi-FI/translation.json b/src/lib/i18n/locales/fi-FI/translation.json index 6f713970a0..ae0f56ec4a 100644 --- a/src/lib/i18n/locales/fi-FI/translation.json +++ b/src/lib/i18n/locales/fi-FI/translation.json @@ -237,6 +237,7 @@ "Default": "Oletus", "Default (Open AI)": "Oletus (Open AI)", "Default (SentenceTransformers)": "Oletus (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Oletusmalli", "Default model updated": "Oletusmalli päivitetty", "Default Models": "Oletusmallit", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Syötä osien päällekkäisyys", "Enter Chunk Size": "Syötä osien koko", "Enter description": "Kirjoita kuvaus", + "Enter Exa API Key": "", "Enter Github Raw URL": "Kirjoita Github Raw -URL-osoite", "Enter Google PSE API Key": "Kirjoita Google PSE API -avain", "Enter Google PSE Engine Id": "Kirjoita Google PSE -moottorin tunnus", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "Arvioinnit", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Esimerkki: (&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "Esimerkki: KAIKKI", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "Muotoile muuttujasi hakasulkeilla tällä tavalla:", "Frequency Penalty": "Taajuussakko", "Function": "Toiminto", + "Function Calling": "", "Function created successfully": "Toiminto luotu onnistuneesti", "Function deleted successfully": "Toiminto poistettu onnistuneesti", "Function Description": "Toiminnon kuvaus", @@ -625,6 +629,7 @@ "More": "Lisää", "Name": "Nimi", "Name your knowledge base": "Anna tietokannalle nimi", + "Native": "", "New Chat": "Uusi keskustelu", "New Folder": "", "New Password": "Uusi salasana", @@ -728,6 +733,7 @@ "Previous 30 days": "Edelliset 30 päivää", "Previous 7 days": "Edelliset 7 päivää", "Profile Image": "Profiilikuva", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Kehote (esim. Kerro hauska fakta Rooman valtakunnasta)", "Prompt Content": "Kehotteen sisältö", "Prompt created successfully": "Kehote luotu onnistuneesti", diff --git a/src/lib/i18n/locales/fr-CA/translation.json b/src/lib/i18n/locales/fr-CA/translation.json index c85d56821f..bb488cb61b 100644 --- a/src/lib/i18n/locales/fr-CA/translation.json +++ b/src/lib/i18n/locales/fr-CA/translation.json @@ -237,6 +237,7 @@ "Default": "Par défaut", "Default (Open AI)": "", "Default (SentenceTransformers)": "Par défaut (Sentence Transformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Modèle standard", "Default model updated": "Modèle par défaut mis à jour", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Entrez le chevauchement de chunk", "Enter Chunk Size": "Entrez la taille de bloc", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "Entrez l'URL brute de GitHub", "Enter Google PSE API Key": "Entrez la clé API Google PSE", "Enter Google PSE Engine Id": "Entrez l'identifiant du moteur Google PSE", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "Pénalité de fréquence", "Function": "", + "Function Calling": "", "Function created successfully": "La fonction a été créée avec succès", "Function deleted successfully": "Fonction supprimée avec succès", "Function Description": "", @@ -625,6 +629,7 @@ "More": "Plus de", "Name": "Nom", "Name your knowledge base": "", + "Native": "", "New Chat": "Nouvelle conversation", "New Folder": "", "New Password": "Nouveau mot de passe", @@ -728,6 +733,7 @@ "Previous 30 days": "30 derniers jours", "Previous 7 days": "7 derniers jours", "Profile Image": "Image de profil", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (par ex. Dites-moi un fait amusant à propos de l'Empire romain)", "Prompt Content": "Contenu du prompt", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/fr-FR/translation.json b/src/lib/i18n/locales/fr-FR/translation.json index 070ecd92be..8080973237 100644 --- a/src/lib/i18n/locales/fr-FR/translation.json +++ b/src/lib/i18n/locales/fr-FR/translation.json @@ -237,6 +237,7 @@ "Default": "Par défaut", "Default (Open AI)": "Par défaut (OpenAI)", "Default (SentenceTransformers)": "Par défaut (Sentence Transformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Modèle standard", "Default model updated": "Modèle par défaut mis à jour", "Default Models": "Modèles par défaut", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Entrez le chevauchement des chunks", "Enter Chunk Size": "Entrez la taille des chunks", "Enter description": "Entrez la description", + "Enter Exa API Key": "", "Enter Github Raw URL": "Entrez l'URL brute de GitHub", "Enter Google PSE API Key": "Entrez la clé API Google PSE", "Enter Google PSE Engine Id": "Entrez l'identifiant du moteur Google PSE", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "Erreur d'accès à Google Drive : {{error}}", "Error uploading file: {{error}}": "Erreur de téléversement du fichier : {{error}}", "Evaluations": "Évaluations", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Exemple: (&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "Exemple: TOUS", "Example: mail": "Exemple: mail", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "Formatez vos variables en utilisant des parenthèses comme ceci :", "Frequency Penalty": "Pénalité de fréquence", "Function": "Fonction", + "Function Calling": "", "Function created successfully": "La fonction a été créée avec succès", "Function deleted successfully": "Fonction supprimée avec succès", "Function Description": "Description de la fonction", @@ -625,6 +629,7 @@ "More": "Plus", "Name": "Nom d'utilisateur", "Name your knowledge base": "Nommez votre base de connaissances", + "Native": "", "New Chat": "Nouvelle conversation", "New Folder": "Nouveau dossier", "New Password": "Nouveau mot de passe", @@ -728,6 +733,7 @@ "Previous 30 days": "30 derniers jours", "Previous 7 days": "7 derniers jours", "Profile Image": "Image de profil", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (par ex. Dites-moi un fait amusant à propos de l'Empire romain)", "Prompt Content": "Contenu du prompt", "Prompt created successfully": "Prompt créé avec succès", diff --git a/src/lib/i18n/locales/he-IL/translation.json b/src/lib/i18n/locales/he-IL/translation.json index 51548d0b6b..f7395c0d16 100644 --- a/src/lib/i18n/locales/he-IL/translation.json +++ b/src/lib/i18n/locales/he-IL/translation.json @@ -237,6 +237,7 @@ "Default": "ברירת מחדל", "Default (Open AI)": "", "Default (SentenceTransformers)": "ברירת מחדל (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "מודל ברירת מחדל", "Default model updated": "המודל המוגדר כברירת מחדל עודכן", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "הזן חפיפת נתונים", "Enter Chunk Size": "הזן גודל נתונים", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "הזן כתובת URL של Github Raw", "Enter Google PSE API Key": "הזן מפתח API של Google PSE", "Enter Google PSE Engine Id": "הזן את מזהה מנוע PSE של Google", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "עונש תדירות", "Function": "", + "Function Calling": "", "Function created successfully": "", "Function deleted successfully": "", "Function Description": "", @@ -625,6 +629,7 @@ "More": "עוד", "Name": "שם", "Name your knowledge base": "", + "Native": "", "New Chat": "צ'אט חדש", "New Folder": "", "New Password": "סיסמה חדשה", @@ -728,6 +733,7 @@ "Previous 30 days": "30 הימים הקודמים", "Previous 7 days": "7 הימים הקודמים", "Profile Image": "תמונת פרופיל", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "פקודה (למשל, ספר לי עובדה מעניינת על האימפריה הרומית)", "Prompt Content": "תוכן הפקודה", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/hi-IN/translation.json b/src/lib/i18n/locales/hi-IN/translation.json index 9caff66c9f..83d02340ee 100644 --- a/src/lib/i18n/locales/hi-IN/translation.json +++ b/src/lib/i18n/locales/hi-IN/translation.json @@ -237,6 +237,7 @@ "Default": "डिफ़ॉल्ट", "Default (Open AI)": "", "Default (SentenceTransformers)": "डिफ़ॉल्ट (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "डिफ़ॉल्ट मॉडल", "Default model updated": "डिफ़ॉल्ट मॉडल अपडेट किया गया", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "चंक ओवरलैप दर्ज करें", "Enter Chunk Size": "खंड आकार दर्ज करें", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "Github Raw URL दर्ज करें", "Enter Google PSE API Key": "Google PSE API कुंजी दर्ज करें", "Enter Google PSE Engine Id": "Google PSE इंजन आईडी दर्ज करें", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "फ्रीक्वेंसी पेनल्टी", "Function": "", + "Function Calling": "", "Function created successfully": "", "Function deleted successfully": "", "Function Description": "", @@ -625,6 +629,7 @@ "More": "और..", "Name": "नाम", "Name your knowledge base": "", + "Native": "", "New Chat": "नई चैट", "New Folder": "", "New Password": "नया पासवर्ड", @@ -728,6 +733,7 @@ "Previous 30 days": "पिछले 30 दिन", "Previous 7 days": "पिछले 7 दिन", "Profile Image": "प्रोफ़ाइल छवि", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "प्रॉम्प्ट (उदाहरण के लिए मुझे रोमन साम्राज्य के बारे में एक मजेदार तथ्य बताएं)", "Prompt Content": "प्रॉम्प्ट सामग्री", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/hr-HR/translation.json b/src/lib/i18n/locales/hr-HR/translation.json index 84cb0f62aa..6f77cd5827 100644 --- a/src/lib/i18n/locales/hr-HR/translation.json +++ b/src/lib/i18n/locales/hr-HR/translation.json @@ -237,6 +237,7 @@ "Default": "Zadano", "Default (Open AI)": "", "Default (SentenceTransformers)": "Zadano (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Zadani model", "Default model updated": "Zadani model ažuriran", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Unesite preklapanje dijelova", "Enter Chunk Size": "Unesite veličinu dijela", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "Unesite Github sirovi URL", "Enter Google PSE API Key": "Unesite Google PSE API ključ", "Enter Google PSE Engine Id": "Unesite ID Google PSE motora", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "Kazna za učestalost", "Function": "", + "Function Calling": "", "Function created successfully": "", "Function deleted successfully": "", "Function Description": "", @@ -625,6 +629,7 @@ "More": "Više", "Name": "Ime", "Name your knowledge base": "", + "Native": "", "New Chat": "Novi razgovor", "New Folder": "", "New Password": "Nova lozinka", @@ -728,6 +733,7 @@ "Previous 30 days": "Prethodnih 30 dana", "Previous 7 days": "Prethodnih 7 dana", "Profile Image": "Profilna slika", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (npr. Reci mi zanimljivost o Rimskom carstvu)", "Prompt Content": "Sadržaj prompta", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/hu-HU/translation.json b/src/lib/i18n/locales/hu-HU/translation.json index b83254a5f8..cce139789d 100644 --- a/src/lib/i18n/locales/hu-HU/translation.json +++ b/src/lib/i18n/locales/hu-HU/translation.json @@ -237,6 +237,7 @@ "Default": "Alapértelmezett", "Default (Open AI)": "Alapértelmezett (Open AI)", "Default (SentenceTransformers)": "Alapértelmezett (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Alapértelmezett modell", "Default model updated": "Alapértelmezett modell frissítve", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Add meg a darab átfedést", "Enter Chunk Size": "Add meg a darab méretet", "Enter description": "Add meg a leírást", + "Enter Exa API Key": "", "Enter Github Raw URL": "Add meg a Github Raw URL-t", "Enter Google PSE API Key": "Add meg a Google PSE API kulcsot", "Enter Google PSE Engine Id": "Add meg a Google PSE motor azonosítót", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "Értékelések", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "Formázd a változóidat zárójelekkel így:", "Frequency Penalty": "Gyakorisági büntetés", "Function": "Funkció", + "Function Calling": "", "Function created successfully": "Funkció sikeresen létrehozva", "Function deleted successfully": "Funkció sikeresen törölve", "Function Description": "", @@ -625,6 +629,7 @@ "More": "Több", "Name": "Név", "Name your knowledge base": "", + "Native": "", "New Chat": "Új beszélgetés", "New Folder": "", "New Password": "Új jelszó", @@ -728,6 +733,7 @@ "Previous 30 days": "Előző 30 nap", "Previous 7 days": "Előző 7 nap", "Profile Image": "Profilkép", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (pl. Mondj egy érdekes tényt a Római Birodalomról)", "Prompt Content": "Prompt tartalom", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/id-ID/translation.json b/src/lib/i18n/locales/id-ID/translation.json index 39eb3058e2..be42cf9f47 100644 --- a/src/lib/i18n/locales/id-ID/translation.json +++ b/src/lib/i18n/locales/id-ID/translation.json @@ -237,6 +237,7 @@ "Default": "Default", "Default (Open AI)": "", "Default (SentenceTransformers)": "Default (Pengubah Kalimat)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Model Default", "Default model updated": "Model default diperbarui", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Masukkan Tumpang Tindih Chunk", "Enter Chunk Size": "Masukkan Ukuran Potongan", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "Masukkan URL Mentah Github", "Enter Google PSE API Key": "Masukkan Kunci API Google PSE", "Enter Google PSE Engine Id": "Masukkan Id Mesin Google PSE", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "Penalti Frekuensi", "Function": "", + "Function Calling": "", "Function created successfully": "Fungsi berhasil dibuat", "Function deleted successfully": "Fungsi berhasil dihapus", "Function Description": "", @@ -625,6 +629,7 @@ "More": "Lainnya", "Name": "Nama", "Name your knowledge base": "", + "Native": "", "New Chat": "Obrolan Baru", "New Folder": "", "New Password": "Kata Sandi Baru", @@ -728,6 +733,7 @@ "Previous 30 days": "30 hari sebelumnya", "Previous 7 days": "7 hari sebelumnya", "Profile Image": "Gambar Profil", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Permintaan (mis. Ceritakan sebuah fakta menarik tentang Kekaisaran Romawi)", "Prompt Content": "Konten yang Diminta", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/ie-GA/translation.json b/src/lib/i18n/locales/ie-GA/translation.json index a5a0a29775..1a518bdbbc 100644 --- a/src/lib/i18n/locales/ie-GA/translation.json +++ b/src/lib/i18n/locales/ie-GA/translation.json @@ -237,6 +237,7 @@ "Default": "Réamhshocraithe", "Default (Open AI)": "Réamhshocraithe (Oscail AI)", "Default (SentenceTransformers)": "Réamhshocraithe (SentenceTransFormers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Múnla Réamhshocraithe", "Default model updated": "Nuashonraíodh an múnla réamhshocraithe", "Default Models": "Múnlaí Réamhshocraithe", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Cuir isteach Chunk Forluí", "Enter Chunk Size": "Cuir isteach Méid an Chunc", "Enter description": "Tarraing", + "Enter Exa API Key": "", "Enter Github Raw URL": "Cuir isteach URL Github Raw", "Enter Google PSE API Key": "Cuir isteach Eochair API Google PSE", "Enter Google PSE Engine Id": "Cuir isteach ID Inneall Google PSE", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "Earráid agus tú ag rochtain Google Drive: {{error}}", "Error uploading file: {{error}}": "Earráid agus comhad á uaslódáil: {{error}}", "Evaluations": "Meastóireachtaí", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Sampla: (&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "Sampla: GACH", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "Formáidigh na hathróga ag baint úsáide as lúibíní mar seo:", "Frequency Penalty": "Pionós Minicíochta", "Function": "Feidhm", + "Function Calling": "", "Function created successfully": "Cruthaíodh feidhm go rathúil", "Function deleted successfully": "Feidhm scriosta go rathúil", "Function Description": "Cur síos ar Fheidhm", @@ -625,6 +629,7 @@ "More": "Tuilleadh", "Name": "Ainm", "Name your knowledge base": "Cuir ainm ar do bhunachar eolais", + "Native": "", "New Chat": "Comhrá Nua", "New Folder": "Fillteán Nua", "New Password": "Pasfhocal Nua", @@ -728,6 +733,7 @@ "Previous 30 days": "30 lá roimhe seo", "Previous 7 days": "7 lá roimhe seo", "Profile Image": "Íomhá Próifíl", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Leid (m.sh. inis dom fíric spraíúil faoin Impireacht Rómhánach)", "Prompt Content": "Ábhar Leid", "Prompt created successfully": "Leid cruthaithe go rathúil", diff --git a/src/lib/i18n/locales/it-IT/translation.json b/src/lib/i18n/locales/it-IT/translation.json index 3b87b0b765..294a6b5a97 100644 --- a/src/lib/i18n/locales/it-IT/translation.json +++ b/src/lib/i18n/locales/it-IT/translation.json @@ -237,6 +237,7 @@ "Default": "Predefinito", "Default (Open AI)": "", "Default (SentenceTransformers)": "Predefinito (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Modello di default", "Default model updated": "Modello predefinito aggiornato", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Inserisci la sovrapposizione chunk", "Enter Chunk Size": "Inserisci la dimensione chunk", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "Immettere l'URL grezzo di Github", "Enter Google PSE API Key": "Inserisci la chiave API PSE di Google", "Enter Google PSE Engine Id": "Inserisci l'ID motore PSE di Google", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "Penalità di frequenza", "Function": "", + "Function Calling": "", "Function created successfully": "", "Function deleted successfully": "", "Function Description": "", @@ -625,6 +629,7 @@ "More": "Altro", "Name": "Nome", "Name your knowledge base": "", + "Native": "", "New Chat": "Nuova chat", "New Folder": "", "New Password": "Nuova password", @@ -728,6 +733,7 @@ "Previous 30 days": "Ultimi 30 giorni", "Previous 7 days": "Ultimi 7 giorni", "Profile Image": "Immagine del profilo", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (ad esempio Dimmi un fatto divertente sull'Impero Romano)", "Prompt Content": "Contenuto del prompt", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/ja-JP/translation.json b/src/lib/i18n/locales/ja-JP/translation.json index cfdea0a7ff..dde55b4e7c 100644 --- a/src/lib/i18n/locales/ja-JP/translation.json +++ b/src/lib/i18n/locales/ja-JP/translation.json @@ -237,6 +237,7 @@ "Default": "デフォルト", "Default (Open AI)": "デフォルト(OpenAI)", "Default (SentenceTransformers)": "デフォルト (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "デフォルトモデル", "Default model updated": "デフォルトモデルが更新されました", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "チャンクオーバーラップを入力してください", "Enter Chunk Size": "チャンクサイズを入力してください", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "Github Raw URLを入力", "Enter Google PSE API Key": "Google PSE APIキーの入力", "Enter Google PSE Engine Id": "Google PSE エンジン ID を入力します。", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "頻度ペナルティ", "Function": "", + "Function Calling": "", "Function created successfully": "Functionの作成が成功しました。", "Function deleted successfully": "Functionの削除が成功しました。", "Function Description": "", @@ -625,6 +629,7 @@ "More": "もっと見る", "Name": "名前", "Name your knowledge base": "", + "Native": "", "New Chat": "新しいチャット", "New Folder": "", "New Password": "新しいパスワード", @@ -728,6 +733,7 @@ "Previous 30 days": "前の30日間", "Previous 7 days": "前の7日間", "Profile Image": "プロフィール画像", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "プロンプト(例:ローマ帝国についての楽しい事を教えてください)", "Prompt Content": "プロンプトの内容", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/ka-GE/translation.json b/src/lib/i18n/locales/ka-GE/translation.json index aef3734b68..1c494e60e8 100644 --- a/src/lib/i18n/locales/ka-GE/translation.json +++ b/src/lib/i18n/locales/ka-GE/translation.json @@ -237,6 +237,7 @@ "Default": "დეფოლტი", "Default (Open AI)": "", "Default (SentenceTransformers)": "დეფოლტ (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "ნაგულისხმები მოდელი", "Default model updated": "დეფოლტ მოდელი განახლებულია", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "შეიყვანეთ ნაწილის გადახურვა", "Enter Chunk Size": "შეიყვანე ბლოკის ზომა", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "შეიყვანეთ Github Raw URL", "Enter Google PSE API Key": "შეიყვანეთ Google PSE API გასაღები", "Enter Google PSE Engine Id": "შეიყვანეთ Google PSE ძრავის ID", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "სიხშირის ჯარიმა", "Function": "", + "Function Calling": "", "Function created successfully": "", "Function deleted successfully": "", "Function Description": "", @@ -625,6 +629,7 @@ "More": "ვრცლად", "Name": "სახელი", "Name your knowledge base": "", + "Native": "", "New Chat": "ახალი მიმოწერა", "New Folder": "", "New Password": "ახალი პაროლი", @@ -728,6 +733,7 @@ "Previous 30 days": "უკან 30 დღე", "Previous 7 days": "უკან 7 დღე", "Profile Image": "პროფილის სურათი", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (მაგ. მითხარი სახალისო ფაქტი რომის იმპერიის შესახებ)", "Prompt Content": "მოთხოვნის შინაარსი", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/ko-KR/translation.json b/src/lib/i18n/locales/ko-KR/translation.json index 424b81bd60..e7355d3ce8 100644 --- a/src/lib/i18n/locales/ko-KR/translation.json +++ b/src/lib/i18n/locales/ko-KR/translation.json @@ -237,6 +237,7 @@ "Default": "기본값", "Default (Open AI)": "기본값 (Open AI)", "Default (SentenceTransformers)": "기본값 (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "기본 모델", "Default model updated": "기본 모델이 업데이트되었습니다.", "Default Models": "기본 모델", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "청크 오버랩 입력", "Enter Chunk Size": "청크 크기 입력", "Enter description": "설명 입력", + "Enter Exa API Key": "", "Enter Github Raw URL": "Github Raw URL 입력", "Enter Google PSE API Key": "Google PSE API 키 입력", "Enter Google PSE Engine Id": "Google PSE 엔진 ID 입력", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "평가", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "변수를 다음과 같이 괄호를 사용하여 생성하세요", "Frequency Penalty": "빈도 페널티", "Function": "함수", + "Function Calling": "", "Function created successfully": "성공적으로 함수가 생성되었습니다", "Function deleted successfully": "성공적으로 함수가 삭제되었습니다", "Function Description": "", @@ -625,6 +629,7 @@ "More": "더보기", "Name": "이름", "Name your knowledge base": "지식 기반 이름을 지정하세요", + "Native": "", "New Chat": "새 채팅", "New Folder": "", "New Password": "새 비밀번호", @@ -728,6 +733,7 @@ "Previous 30 days": "이전 30일", "Previous 7 days": "이전 7일", "Profile Image": "프로필 이미지", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "프롬프트 (예: 로마 황제에 대해 재미있는 사실을 알려주세요)", "Prompt Content": "프롬프트 내용", "Prompt created successfully": "성공적으로 프롬프트를 생성했습니다", diff --git a/src/lib/i18n/locales/lt-LT/translation.json b/src/lib/i18n/locales/lt-LT/translation.json index 5253d4d12a..495124fa35 100644 --- a/src/lib/i18n/locales/lt-LT/translation.json +++ b/src/lib/i18n/locales/lt-LT/translation.json @@ -237,6 +237,7 @@ "Default": "Numatytasis", "Default (Open AI)": "", "Default (SentenceTransformers)": "Numatytasis (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Numatytasis modelis", "Default model updated": "Numatytasis modelis atnaujintas", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Įveskite blokų persidengimą", "Enter Chunk Size": "Įveskite blokų dydį", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "Įveskite GitHub Raw nuorodą", "Enter Google PSE API Key": "Įveskite Google PSE API raktą", "Enter Google PSE Engine Id": "Įveskite Google PSE variklio ID", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "Dažnumo bauda", "Function": "", + "Function Calling": "", "Function created successfully": "Funkcija sukurta sėkmingai", "Function deleted successfully": "Funkcija ištrinta sėkmingai", "Function Description": "", @@ -625,6 +629,7 @@ "More": "Daugiau", "Name": "Pavadinimas", "Name your knowledge base": "", + "Native": "", "New Chat": "Naujas pokalbis", "New Folder": "", "New Password": "Naujas slaptažodis", @@ -728,6 +733,7 @@ "Previous 30 days": "Paskutinės 30 dienų", "Previous 7 days": "Paskutinės 7 dienos", "Profile Image": "Profilio nuotrauka", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Užklausa (pvz. supaprastink šį laišką)", "Prompt Content": "Užklausos turinys", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/ms-MY/translation.json b/src/lib/i18n/locales/ms-MY/translation.json index 34fa1b0a7d..cd06965d6b 100644 --- a/src/lib/i18n/locales/ms-MY/translation.json +++ b/src/lib/i18n/locales/ms-MY/translation.json @@ -237,6 +237,7 @@ "Default": "Lalai", "Default (Open AI)": "", "Default (SentenceTransformers)": "Lalai (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Model Lalai", "Default model updated": "Model lalai dikemas kini", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Masukkan Tindihan 'Chunk'", "Enter Chunk Size": "Masukkan Saiz 'Chunk'", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "Masukkan URL 'Github Raw'", "Enter Google PSE API Key": "Masukkan kunci API Google PSE", "Enter Google PSE Engine Id": "Masukkan Id Enjin Google PSE", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "Penalti Kekerapan", "Function": "", + "Function Calling": "", "Function created successfully": "Fungsi berjaya dibuat", "Function deleted successfully": "Fungsi berjaya dipadamkan", "Function Description": "", @@ -625,6 +629,7 @@ "More": "Lagi", "Name": "Nama", "Name your knowledge base": "", + "Native": "", "New Chat": "Perbualan Baru", "New Folder": "", "New Password": "Kata Laluan Baru", @@ -728,6 +733,7 @@ "Previous 30 days": "30 hari sebelumnya", "Previous 7 days": "7 hari sebelumnya", "Profile Image": "Imej Profail", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Gesaan (cth Beritahu saya fakta yang menyeronokkan tentang Kesultanan Melaka)", "Prompt Content": "Kandungan Gesaan", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/nb-NO/translation.json b/src/lib/i18n/locales/nb-NO/translation.json index 7732981e58..f34e7416ee 100644 --- a/src/lib/i18n/locales/nb-NO/translation.json +++ b/src/lib/i18n/locales/nb-NO/translation.json @@ -237,6 +237,7 @@ "Default": "Standard", "Default (Open AI)": "Standard (Open AI)", "Default (SentenceTransformers)": "Standard (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Standard modell", "Default model updated": "Standard modell oppdatert", "Default Models": "Standard modeller", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Angi Chunk-overlapp", "Enter Chunk Size": "Angi Chunk-størrelse", "Enter description": "Angi beskrivelse", + "Enter Exa API Key": "", "Enter Github Raw URL": "Angi Github Raw-URL", "Enter Google PSE API Key": "Angi API-nøkkel for Google PSE", "Enter Google PSE Engine Id": "Angi motor-ID for Google PSE", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "Vurderinger", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Eksempel: (&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "Eksempel: ALL", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "Formatér variablene dine med klammer som disse:", "Frequency Penalty": "Frekvensstraff", "Function": "Funksjon", + "Function Calling": "", "Function created successfully": "Funksjonen er opprettet", "Function deleted successfully": "Funksjonen er slettet", "Function Description": "Beskrivelse av funksjon", @@ -625,6 +629,7 @@ "More": "Mer", "Name": "Navn", "Name your knowledge base": "Gi kunnskapsbasen et navn", + "Native": "", "New Chat": "Ny chat", "New Folder": "", "New Password": "Nytt passord", @@ -728,6 +733,7 @@ "Previous 30 days": "Siste 30 dager", "Previous 7 days": "Siste 7 dager", "Profile Image": "Profilbilde", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Ledetekst (f.eks. Fortell meg noe morsomt om romerriket)", "Prompt Content": "Ledetekstinnhold", "Prompt created successfully": "Ledetekst opprettet", diff --git a/src/lib/i18n/locales/nl-NL/translation.json b/src/lib/i18n/locales/nl-NL/translation.json index 88154fa0fd..3972d25173 100644 --- a/src/lib/i18n/locales/nl-NL/translation.json +++ b/src/lib/i18n/locales/nl-NL/translation.json @@ -237,6 +237,7 @@ "Default": "Standaard", "Default (Open AI)": "Standaard (Open AI)", "Default (SentenceTransformers)": "Standaard (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Standaardmodel", "Default model updated": "Standaardmodel bijgewerkt", "Default Models": "Standaardmodellen", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Voeg Chunk Overlap toe", "Enter Chunk Size": "Voeg Chunk Size toe", "Enter description": "Voer beschrijving in", + "Enter Exa API Key": "", "Enter Github Raw URL": "Voer de Github Raw-URL in", "Enter Google PSE API Key": "Voer de Google PSE API-sleutel in", "Enter Google PSE Engine Id": "Voer Google PSE Engine-ID in", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "Beoordelingen", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Voorbeeld: (&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "Voorbeeld: ALL", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "Formateer je variabelen met haken zoals dit:", "Frequency Penalty": "Frequentiestraf", "Function": "Functie", + "Function Calling": "", "Function created successfully": "Functie succesvol aangemaakt", "Function deleted successfully": "Functie succesvol verwijderd", "Function Description": "Functiebeschrijving", @@ -625,6 +629,7 @@ "More": "Meer", "Name": "Naam", "Name your knowledge base": "Geef je kennisbasis een naam", + "Native": "", "New Chat": "Nieuwe Chat", "New Folder": "", "New Password": "Nieuw Wachtwoord", @@ -728,6 +733,7 @@ "Previous 30 days": "Afgelopen 30 dagen", "Previous 7 days": "Afgelopen 7 dagen", "Profile Image": "Profielafbeelding", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (bv. Vertel me een leuke gebeurtenis over het Romeinse Rijk)", "Prompt Content": "Promptinhoud", "Prompt created successfully": "Prompt succesvol aangemaakt", diff --git a/src/lib/i18n/locales/pa-IN/translation.json b/src/lib/i18n/locales/pa-IN/translation.json index aa7696c69a..802fc41966 100644 --- a/src/lib/i18n/locales/pa-IN/translation.json +++ b/src/lib/i18n/locales/pa-IN/translation.json @@ -237,6 +237,7 @@ "Default": "ਮੂਲ", "Default (Open AI)": "", "Default (SentenceTransformers)": "ਮੂਲ (ਸੈਂਟੈਂਸਟ੍ਰਾਂਸਫਾਰਮਰਸ)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "ਡਿਫਾਲਟ ਮਾਡਲ", "Default model updated": "ਮੂਲ ਮਾਡਲ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "ਚੰਕ ਓਵਰਲੈਪ ਦਰਜ ਕਰੋ", "Enter Chunk Size": "ਚੰਕ ਆਕਾਰ ਦਰਜ ਕਰੋ", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "Github ਕੱਚਾ URL ਦਾਖਲ ਕਰੋ", "Enter Google PSE API Key": "Google PSE API ਕੁੰਜੀ ਦਾਖਲ ਕਰੋ", "Enter Google PSE Engine Id": "Google PSE ਇੰਜਣ ID ਦਾਖਲ ਕਰੋ", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "ਬਾਰੰਬਾਰਤਾ ਜੁਰਮਾਨਾ", "Function": "", + "Function Calling": "", "Function created successfully": "", "Function deleted successfully": "", "Function Description": "", @@ -625,6 +629,7 @@ "More": "ਹੋਰ", "Name": "ਨਾਮ", "Name your knowledge base": "", + "Native": "", "New Chat": "ਨਵੀਂ ਗੱਲਬਾਤ", "New Folder": "", "New Password": "ਨਵਾਂ ਪਾਸਵਰਡ", @@ -728,6 +733,7 @@ "Previous 30 days": "ਪਿਛਲੇ 30 ਦਿਨ", "Previous 7 days": "ਪਿਛਲੇ 7 ਦਿਨ", "Profile Image": "ਪ੍ਰੋਫਾਈਲ ਚਿੱਤਰ", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "ਪ੍ਰੰਪਟ (ਉਦਾਹਰਣ ਲਈ ਮੈਨੂੰ ਰੋਮਨ ਸਾਮਰਾਜ ਬਾਰੇ ਇੱਕ ਮਜ਼ੇਦਾਰ ਤੱਥ ਦੱਸੋ)", "Prompt Content": "ਪ੍ਰੰਪਟ ਸਮੱਗਰੀ", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/pl-PL/translation.json b/src/lib/i18n/locales/pl-PL/translation.json index 5e2d5a58ae..4e6c74f47c 100644 --- a/src/lib/i18n/locales/pl-PL/translation.json +++ b/src/lib/i18n/locales/pl-PL/translation.json @@ -237,6 +237,7 @@ "Default": "Domyślny", "Default (Open AI)": "", "Default (SentenceTransformers)": "Domyślny (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Model domyślny", "Default model updated": "Domyślny model zaktualizowany", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Wprowadź zakchodzenie bloku", "Enter Chunk Size": "Wprowadź rozmiar bloku", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "Wprowadź nieprzetworzony adres URL usługi Github", "Enter Google PSE API Key": "Wprowadź klucz API Google PSE", "Enter Google PSE Engine Id": "Wprowadź identyfikator aparatu Google PSE", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "Kara za częstotliwość", "Function": "", + "Function Calling": "", "Function created successfully": "", "Function deleted successfully": "", "Function Description": "", @@ -625,6 +629,7 @@ "More": "Więcej", "Name": "Nazwa", "Name your knowledge base": "", + "Native": "", "New Chat": "Nowy czat", "New Folder": "", "New Password": "Nowe hasło", @@ -728,6 +733,7 @@ "Previous 30 days": "Poprzednie 30 dni", "Previous 7 days": "Poprzednie 7 dni", "Profile Image": "Obrazek profilowy", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (np. powiedz mi zabawny fakt o Imperium Rzymskim", "Prompt Content": "Zawartość prompta", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/pt-BR/translation.json b/src/lib/i18n/locales/pt-BR/translation.json index dfb1ae78fa..95251978e5 100644 --- a/src/lib/i18n/locales/pt-BR/translation.json +++ b/src/lib/i18n/locales/pt-BR/translation.json @@ -237,6 +237,7 @@ "Default": "Padrão", "Default (Open AI)": "Padrão (Open AI)", "Default (SentenceTransformers)": "Padrão (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Modelo Padrão", "Default model updated": "Modelo padrão atualizado", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Digite a Sobreposição de Chunk", "Enter Chunk Size": "Digite o Tamanho do Chunk", "Enter description": "Digite a descrição", + "Enter Exa API Key": "", "Enter Github Raw URL": "Digite a URL bruta do Github", "Enter Google PSE API Key": "Digite a Chave API do Google PSE", "Enter Google PSE Engine Id": "Digite o ID do Motor do Google PSE", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "Avaliações", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Exemplo: (&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "Exemplo: ALL", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "Formate suas variáveis usando colchetes como este:", "Frequency Penalty": "Penalização por Frequência", "Function": "Função", + "Function Calling": "", "Function created successfully": "Função criada com sucesso", "Function deleted successfully": "Função excluída com sucesso", "Function Description": "Descrição da Função", @@ -625,6 +629,7 @@ "More": "Mais", "Name": "Nome", "Name your knowledge base": "Nome da sua base de conhecimento", + "Native": "", "New Chat": "Novo Chat", "New Folder": "", "New Password": "Nova Senha", @@ -728,6 +733,7 @@ "Previous 30 days": "Últimos 30 dias", "Previous 7 days": "Últimos 7 dias", "Profile Image": "Imagem de Perfil", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (por exemplo, Diga-me um fato divertido sobre o Império Romano)", "Prompt Content": "Conteúdo do Prompt", "Prompt created successfully": "Prompt criado com sucesso", diff --git a/src/lib/i18n/locales/pt-PT/translation.json b/src/lib/i18n/locales/pt-PT/translation.json index 6763f83e32..2aefdaf2f5 100644 --- a/src/lib/i18n/locales/pt-PT/translation.json +++ b/src/lib/i18n/locales/pt-PT/translation.json @@ -237,6 +237,7 @@ "Default": "Padrão", "Default (Open AI)": "", "Default (SentenceTransformers)": "Padrão (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Modelo padrão", "Default model updated": "Modelo padrão atualizado", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Escreva a Sobreposição de Fragmento", "Enter Chunk Size": "Escreva o Tamanho do Fragmento", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "Escreva o URL cru do Github", "Enter Google PSE API Key": "Escreva a chave da API PSE do Google", "Enter Google PSE Engine Id": "Escreva o ID do mecanismo PSE do Google", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "Penalidade de Frequência", "Function": "", + "Function Calling": "", "Function created successfully": "", "Function deleted successfully": "", "Function Description": "", @@ -625,6 +629,7 @@ "More": "Mais", "Name": "Nome", "Name your knowledge base": "", + "Native": "", "New Chat": "Nova Conversa", "New Folder": "", "New Password": "Nova Senha", @@ -728,6 +733,7 @@ "Previous 30 days": "Últimos 30 dias", "Previous 7 days": "Últimos 7 dias", "Profile Image": "Imagem de Perfil", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (ex.: Dê-me um facto divertido sobre o Império Romano)", "Prompt Content": "Conteúdo do Prompt", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/ro-RO/translation.json b/src/lib/i18n/locales/ro-RO/translation.json index ffd8b649ab..3d707c1ad9 100644 --- a/src/lib/i18n/locales/ro-RO/translation.json +++ b/src/lib/i18n/locales/ro-RO/translation.json @@ -237,6 +237,7 @@ "Default": "Implicit", "Default (Open AI)": "Implicit (Open AI)", "Default (SentenceTransformers)": "Implicit (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Model Implicit", "Default model updated": "Modelul implicit a fost actualizat", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Introduceți Suprapunerea Blocului", "Enter Chunk Size": "Introduceți Dimensiunea Blocului", "Enter description": "Introduceți descrierea", + "Enter Exa API Key": "", "Enter Github Raw URL": "Introduceți URL-ul Raw de pe Github", "Enter Google PSE API Key": "Introduceți Cheia API Google PSE", "Enter Google PSE Engine Id": "Introduceți ID-ul Motorului Google PSE", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "Evaluări", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "Formatează variabilele folosind acolade așa:", "Frequency Penalty": "Penalizare de Frecvență", "Function": "Funcție", + "Function Calling": "", "Function created successfully": "Funcția a fost creată cu succes", "Function deleted successfully": "Funcția a fost ștearsă cu succes", "Function Description": "", @@ -625,6 +629,7 @@ "More": "Mai multe", "Name": "Nume", "Name your knowledge base": "", + "Native": "", "New Chat": "Conversație Nouă", "New Folder": "", "New Password": "Parolă Nouă", @@ -728,6 +733,7 @@ "Previous 30 days": "Ultimele 30 de zile", "Previous 7 days": "Ultimele 7 zile", "Profile Image": "Imagine de Profil", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (de ex. Spune-mi un fapt amuzant despre Imperiul Roman)", "Prompt Content": "Conținut Prompt", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index c4e26b43f9..45d8bf3e24 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -237,6 +237,7 @@ "Default": "По умолчанию", "Default (Open AI)": "По умолчанию (Open AI)", "Default (SentenceTransformers)": "По умолчанию (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Модель по умолчанию", "Default model updated": "Модель по умолчанию обновлена", "Default Models": "Модели по умолчанию", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Введите перекрытие фрагмента", "Enter Chunk Size": "Введите размер фрагмента", "Enter description": "Введите описание", + "Enter Exa API Key": "", "Enter Github Raw URL": "Введите необработанный URL-адрес Github", "Enter Google PSE API Key": "Введите ключ API Google PSE", "Enter Google PSE Engine Id": "Введите Id движка Google PSE", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "Оценки", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "Отформатируйте переменные, используя такие : скобки", "Frequency Penalty": "Штраф за частоту", "Function": "Функция", + "Function Calling": "", "Function created successfully": "Функция успешно создана", "Function deleted successfully": "Функция успешно удалена", "Function Description": "Описание Функции", @@ -625,6 +629,7 @@ "More": "Больше", "Name": "Имя", "Name your knowledge base": "", + "Native": "", "New Chat": "Новый чат", "New Folder": "", "New Password": "Новый пароль", @@ -728,6 +733,7 @@ "Previous 30 days": "Предыдущие 30 дней", "Previous 7 days": "Предыдущие 7 дней", "Profile Image": "Изображение профиля", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Промпт (например, Расскажи мне интересный факт о Римской империи)", "Prompt Content": "Содержание промпта", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/sk-SK/translation.json b/src/lib/i18n/locales/sk-SK/translation.json index 98cb572654..2da7d45ee0 100644 --- a/src/lib/i18n/locales/sk-SK/translation.json +++ b/src/lib/i18n/locales/sk-SK/translation.json @@ -237,6 +237,7 @@ "Default": "Predvolené hodnoty alebo nastavenia.", "Default (Open AI)": "Predvolené (Open AI)", "Default (SentenceTransformers)": "Predvolené (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Predvolený model", "Default model updated": "Predvolený model aktualizovaný.", "Default Models": "Predvolené modely", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Zadajte prekryv časti", "Enter Chunk Size": "Zadajte veľkosť časti", "Enter description": "Zadajte popis", + "Enter Exa API Key": "", "Enter Github Raw URL": "Zadajte URL adresu Github Raw", "Enter Google PSE API Key": "Zadajte kľúč rozhrania API Google PSE", "Enter Google PSE Engine Id": "Zadajte ID vyhľadávacieho mechanizmu Google PSE", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "Hodnotenia", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "Formátujte svoje premenné pomocou zátvoriek takto:", "Frequency Penalty": "Penalizácia frekvencie", "Function": "Funkcia", + "Function Calling": "", "Function created successfully": "Funkcia bola úspešne vytvorená.", "Function deleted successfully": "Funkcia bola úspešne odstránená", "Function Description": "", @@ -625,6 +629,7 @@ "More": "Viac", "Name": "Meno", "Name your knowledge base": "", + "Native": "", "New Chat": "Nový chat", "New Folder": "", "New Password": "Nové heslo", @@ -728,6 +733,7 @@ "Previous 30 days": "Predchádzajúcich 30 dní", "Previous 7 days": "Predchádzajúcich 7 dní", "Profile Image": "Profilový obrázok", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (napr. Povedz mi zábavnú skutočnosť o Rímskej ríši)", "Prompt Content": "Obsah promptu", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/sr-RS/translation.json b/src/lib/i18n/locales/sr-RS/translation.json index 4d88a1cfc8..e2ae28dbfc 100644 --- a/src/lib/i18n/locales/sr-RS/translation.json +++ b/src/lib/i18n/locales/sr-RS/translation.json @@ -237,6 +237,7 @@ "Default": "Подразумевано", "Default (Open AI)": "Подразумевано (Open AI)", "Default (SentenceTransformers)": "Подразумевано (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Подразумевани модел", "Default model updated": "Подразумевани модел ажуриран", "Default Models": "Подразумевани модели", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Унесите преклапање делова", "Enter Chunk Size": "Унесите величину дела", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "Унесите Гитхуб Раw УРЛ адресу", "Enter Google PSE API Key": "Унесите Гоогле ПСЕ АПИ кључ", "Enter Google PSE Engine Id": "Унесите Гоогле ПСЕ ИД машине", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "Процењивања", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "Фреквентна казна", "Function": "", + "Function Calling": "", "Function created successfully": "", "Function deleted successfully": "", "Function Description": "", @@ -625,6 +629,7 @@ "More": "Више", "Name": "Име", "Name your knowledge base": "", + "Native": "", "New Chat": "Ново ћаскање", "New Folder": "", "New Password": "Нова лозинка", @@ -728,6 +733,7 @@ "Previous 30 days": "Претходних 30 дана", "Previous 7 days": "Претходних 7 дана", "Profile Image": "Слика профила", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Упит (нпр. „подели занимљивост о Римском царству“)", "Prompt Content": "Садржај упита", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/sv-SE/translation.json b/src/lib/i18n/locales/sv-SE/translation.json index d12023ff15..3e3201814d 100644 --- a/src/lib/i18n/locales/sv-SE/translation.json +++ b/src/lib/i18n/locales/sv-SE/translation.json @@ -237,6 +237,7 @@ "Default": "Standard", "Default (Open AI)": "", "Default (SentenceTransformers)": "Standard (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Standardmodell", "Default model updated": "Standardmodell uppdaterad", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Ange chunköverlappning", "Enter Chunk Size": "Ange chunkstorlek", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "Ange Github Raw URL", "Enter Google PSE API Key": "Ange Google PSE API-nyckel", "Enter Google PSE Engine Id": "Ange Google PSE Engine Id", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "Straff för frekvens", "Function": "", + "Function Calling": "", "Function created successfully": "", "Function deleted successfully": "", "Function Description": "", @@ -625,6 +629,7 @@ "More": "Mer", "Name": "Namn", "Name your knowledge base": "", + "Native": "", "New Chat": "Ny chatt", "New Folder": "", "New Password": "Nytt lösenord", @@ -728,6 +733,7 @@ "Previous 30 days": "Föregående 30 dagar", "Previous 7 days": "Föregående 7 dagar", "Profile Image": "Profilbild", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Instruktion (t.ex. Berätta en kuriosa om Romerska Imperiet)", "Prompt Content": "Instruktionens innehåll", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/th-TH/translation.json b/src/lib/i18n/locales/th-TH/translation.json index 8e979a8c04..51e5bfcf66 100644 --- a/src/lib/i18n/locales/th-TH/translation.json +++ b/src/lib/i18n/locales/th-TH/translation.json @@ -237,6 +237,7 @@ "Default": "ค่าเริ่มต้น", "Default (Open AI)": "", "Default (SentenceTransformers)": "ค่าเริ่มต้น (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "โมเดลค่าเริ่มต้น", "Default model updated": "อัปเดตโมเดลค่าเริ่มต้นแล้ว", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "ใส่การทับซ้อนส่วนข้อมูล", "Enter Chunk Size": "ใส่ขนาดส่วนข้อมูล", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "ใส่ URL ดิบของ Github", "Enter Google PSE API Key": "ใส่คีย์ API ของ Google PSE", "Enter Google PSE Engine Id": "ใส่รหัสเครื่องยนต์ของ Google PSE", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "การลงโทษความถี่", "Function": "", + "Function Calling": "", "Function created successfully": "สร้างฟังก์ชันสำเร็จ", "Function deleted successfully": "ลบฟังก์ชันสำเร็จ", "Function Description": "", @@ -625,6 +629,7 @@ "More": "เพิ่มเติม", "Name": "ชื่อ", "Name your knowledge base": "", + "Native": "", "New Chat": "แชทใหม่", "New Folder": "", "New Password": "รหัสผ่านใหม่", @@ -728,6 +733,7 @@ "Previous 30 days": "30 วันที่ผ่านมา", "Previous 7 days": "7 วันที่ผ่านมา", "Profile Image": "รูปโปรไฟล์", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "พรอมต์ (เช่น บอกข้อเท็จจริงที่น่าสนุกเกี่ยวกับจักรวรรดิโรมัน)", "Prompt Content": "เนื้อหาพรอมต์", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/tk-TW/translation.json b/src/lib/i18n/locales/tk-TW/translation.json index d1b7382094..1a9bfc556e 100644 --- a/src/lib/i18n/locales/tk-TW/translation.json +++ b/src/lib/i18n/locales/tk-TW/translation.json @@ -237,6 +237,7 @@ "Default": "", "Default (Open AI)": "", "Default (SentenceTransformers)": "", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "", "Default model updated": "", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "", "Enter Chunk Size": "", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "", "Enter Google PSE API Key": "", "Enter Google PSE Engine Id": "", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "", "Function": "", + "Function Calling": "", "Function created successfully": "", "Function deleted successfully": "", "Function Description": "", @@ -625,6 +629,7 @@ "More": "", "Name": "", "Name your knowledge base": "", + "Native": "", "New Chat": "", "New Folder": "", "New Password": "", @@ -728,6 +733,7 @@ "Previous 30 days": "", "Previous 7 days": "", "Profile Image": "", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "", "Prompt Content": "", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/tr-TR/translation.json b/src/lib/i18n/locales/tr-TR/translation.json index 3ff23eff46..8bc075c159 100644 --- a/src/lib/i18n/locales/tr-TR/translation.json +++ b/src/lib/i18n/locales/tr-TR/translation.json @@ -237,6 +237,7 @@ "Default": "Varsayılan", "Default (Open AI)": "Varsayılan (Open AI)", "Default (SentenceTransformers)": "Varsayılan (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Varsayılan Model", "Default model updated": "Varsayılan model güncellendi", "Default Models": "Varsayılan Modeller", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Chunk Örtüşmesini Girin", "Enter Chunk Size": "Chunk Boyutunu Girin", "Enter description": "Açıklama girin", + "Enter Exa API Key": "", "Enter Github Raw URL": "Github Raw URL'sini girin", "Enter Google PSE API Key": "Google PSE API Anahtarını Girin", "Enter Google PSE Engine Id": "Google PSE Engine Id'sini Girin", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "Google Drive'a erişim hatası: {{error}}", "Error uploading file: {{error}}": "Dosya yüklenirken hata oluştu: {{error}}", "Evaluations": "Değerlendirmeler", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Örnek: (&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "Örnek: ALL", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "Değişkenlerinizi şu şekilde parantez kullanarak biçimlendirin:", "Frequency Penalty": "Frekans Cezası", "Function": "Fonksiyon", + "Function Calling": "", "Function created successfully": "Fonksiyon başarıyla oluşturuldu", "Function deleted successfully": "Fonksiyon başarıyla silindi", "Function Description": "Fonksiyon Açıklaması", @@ -625,6 +629,7 @@ "More": "Daha Fazla", "Name": "Ad", "Name your knowledge base": "Bilgi tabanınıza bir ad verin", + "Native": "", "New Chat": "Yeni Sohbet", "New Folder": "Yeni Klasör", "New Password": "Yeni Parola", @@ -728,6 +733,7 @@ "Previous 30 days": "Önceki 30 gün", "Previous 7 days": "Önceki 7 gün", "Profile Image": "Profil Fotoğrafı", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (örn. Roma İmparatorluğu hakkında ilginç bir bilgi verin)", "Prompt Content": "Prompt İçeriği", "Prompt created successfully": "Prompt başarıyla oluşturuldu", diff --git a/src/lib/i18n/locales/uk-UA/translation.json b/src/lib/i18n/locales/uk-UA/translation.json index 9345a1f1af..a235884692 100644 --- a/src/lib/i18n/locales/uk-UA/translation.json +++ b/src/lib/i18n/locales/uk-UA/translation.json @@ -237,6 +237,7 @@ "Default": "За замовчуванням", "Default (Open AI)": "За замовчуванням (Open AI)", "Default (SentenceTransformers)": "За замовчуванням (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Модель за замовчуванням", "Default model updated": "Модель за замовчуванням оновлено", "Default Models": "Моделі за замовчуванням", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Введіть перекриття фрагменту", "Enter Chunk Size": "Введіть розмір фрагменту", "Enter description": "Введіть опис", + "Enter Exa API Key": "", "Enter Github Raw URL": "Введіть Raw URL-адресу Github", "Enter Google PSE API Key": "Введіть ключ API Google PSE", "Enter Google PSE Engine Id": "Введіть Google PSE Engine Id", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "Помилка доступу до Google Drive: {{error}}", "Error uploading file: {{error}}": "Помилка завантаження файлу: {{error}}", "Evaluations": "Оцінювання", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Приклад: (&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "Приклад: ВСІ", "Example: mail": "Приклад: пошта", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "Форматуйте свої змінні, використовуючи фігурні дужки таким чином:", "Frequency Penalty": "Штраф за частоту", "Function": "Функція", + "Function Calling": "", "Function created successfully": "Функцію успішно створено", "Function deleted successfully": "Функцію успішно видалено", "Function Description": "Опис функції", @@ -625,6 +629,7 @@ "More": "Більше", "Name": "Ім'я", "Name your knowledge base": "Назвіть вашу базу знань", + "Native": "", "New Chat": "Новий чат", "New Folder": "Нова папка", "New Password": "Новий пароль", @@ -728,6 +733,7 @@ "Previous 30 days": "Попередні 30 днів", "Previous 7 days": "Попередні 7 днів", "Profile Image": "Зображення профілю", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Підказка (напр., розкажіть мені цікавий факт про Римську імперію)", "Prompt Content": "Зміст промту", "Prompt created successfully": "Підказку успішно створено", diff --git a/src/lib/i18n/locales/ur-PK/translation.json b/src/lib/i18n/locales/ur-PK/translation.json index 4f5864b554..6dd2596fe0 100644 --- a/src/lib/i18n/locales/ur-PK/translation.json +++ b/src/lib/i18n/locales/ur-PK/translation.json @@ -237,6 +237,7 @@ "Default": "پہلے سے طے شدہ", "Default (Open AI)": "ڈیفالٹ (اوپن اے آئی)", "Default (SentenceTransformers)": "ڈیفالٹ (سینٹینس ٹرانسفارمرز)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "ڈیفالٹ ماڈل", "Default model updated": "ڈیفالٹ ماڈل اپ ڈیٹ ہو گیا", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "چنک اوورلیپ درج کریں", "Enter Chunk Size": "چنک سائز درج کریں", "Enter description": "تفصیل درج کریں", + "Enter Exa API Key": "", "Enter Github Raw URL": "گیٹ ہب را یو آر ایل درج کریں", "Enter Google PSE API Key": "گوگل PSE API کلید درج کریں", "Enter Google PSE Engine Id": "گوگل پی ایس ای انجن آئی ڈی درج کریں", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "تشخیصات", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "اپنے متغیرات کو اس طرح بریکٹس میں فارمیٹ کریں:", "Frequency Penalty": "کثرت کی پابندی", "Function": "فنکشن", + "Function Calling": "", "Function created successfully": "فنکشن کامیابی سے تخلیق ہو گیا", "Function deleted successfully": "فنکشن کامیابی کے ساتھ حذف ہو گیا", "Function Description": "", @@ -625,6 +629,7 @@ "More": "مزید", "Name": "نام", "Name your knowledge base": "", + "Native": "", "New Chat": "نئی بات چیت", "New Folder": "", "New Password": "نیا پاس ورڈ", @@ -728,6 +733,7 @@ "Previous 30 days": "پچھلے 30 دن", "Previous 7 days": "پچھلے 7 دن", "Profile Image": "پروفائل تصویر", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "سوال کریں (مثلاً: مجھے رومن سلطنت کے بارے میں کوئی دلچسپ حقیقت بتائیں)", "Prompt Content": "مواد کا آغاز کریں", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/vi-VN/translation.json b/src/lib/i18n/locales/vi-VN/translation.json index e4c1545309..cae0b251eb 100644 --- a/src/lib/i18n/locales/vi-VN/translation.json +++ b/src/lib/i18n/locales/vi-VN/translation.json @@ -237,6 +237,7 @@ "Default": "Mặc định", "Default (Open AI)": "", "Default (SentenceTransformers)": "Mặc định (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "Model mặc định", "Default model updated": "Mô hình mặc định đã được cập nhật", "Default Models": "", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "Nhập Chunk chồng lấn (overlap)", "Enter Chunk Size": "Nhập Kích thước Chunk", "Enter description": "", + "Enter Exa API Key": "", "Enter Github Raw URL": "Nhập URL cho Github Raw", "Enter Google PSE API Key": "Nhập Google PSE API Key", "Enter Google PSE Engine Id": "Nhập Google PSE Engine Id", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", "Evaluations": "", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: mail": "", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "", "Frequency Penalty": "Hình phạt tần số", "Function": "", + "Function Calling": "", "Function created successfully": "Function được tạo thành công", "Function deleted successfully": "Function đã bị xóa", "Function Description": "", @@ -625,6 +629,7 @@ "More": "Thêm", "Name": "Tên", "Name your knowledge base": "", + "Native": "", "New Chat": "Tạo chat mới", "New Folder": "", "New Password": "Mật khẩu mới", @@ -728,6 +733,7 @@ "Previous 30 days": "30 ngày trước", "Previous 7 days": "7 ngày trước", "Profile Image": "Ảnh đại diện", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (ví dụ: Hãy kể cho tôi một sự thật thú vị về Đế chế La Mã)", "Prompt Content": "Nội dung prompt", "Prompt created successfully": "", diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index a01aa28380..10578e768d 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -237,6 +237,7 @@ "Default": "默认", "Default (Open AI)": "默认 (OpenAI)", "Default (SentenceTransformers)": "默认(SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "默认模型", "Default model updated": "默认模型已更新", "Default Models": "默认模型", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "输入块重叠 (Chunk Overlap)", "Enter Chunk Size": "输入块大小 (Chunk Size)", "Enter description": "输入简介描述", + "Enter Exa API Key": "", "Enter Github Raw URL": "输入 Github Raw 地址", "Enter Google PSE API Key": "输入 Google PSE API 密钥", "Enter Google PSE Engine Id": "输入 Google PSE 引擎 ID", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "访问 Google 云端硬盘 出错: {{error}}", "Error uploading file: {{error}}": "上传文件时出错: {{error}}", "Evaluations": "竞技场评估", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "例如:(&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "例如:ALL", "Example: mail": "例如:mail", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "使用括号格式化你的变量,如下所示:", "Frequency Penalty": "频率惩罚", "Function": "函数", + "Function Calling": "", "Function created successfully": "函数创建成功", "Function deleted successfully": "函数删除成功", "Function Description": "函数描述", @@ -625,6 +629,7 @@ "More": "更多", "Name": "名称", "Name your knowledge base": "为您的知识库命名", + "Native": "", "New Chat": "新对话", "New Folder": "新文件夹", "New Password": "新密码", @@ -728,6 +733,7 @@ "Previous 30 days": "过去 30 天", "Previous 7 days": "过去 7 天", "Profile Image": "用户头像", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "提示(例如:给我讲一个关于罗马帝国的趣事。)", "Prompt Content": "提示词内容", "Prompt created successfully": "提示词创建成功", diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index 5f91cce9cd..e7b4cced19 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -237,6 +237,7 @@ "Default": "預設", "Default (Open AI)": "預設 (OpenAI)", "Default (SentenceTransformers)": "預設 (SentenceTransformers)", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", "Default Model": "預設模型", "Default model updated": "預設模型已更新", "Default Models": "預設模型", @@ -347,6 +348,7 @@ "Enter Chunk Overlap": "輸入區塊重疊", "Enter Chunk Size": "輸入區塊大小", "Enter description": "輸入描述", + "Enter Exa API Key": "", "Enter Github Raw URL": "輸入 GitHub Raw URL", "Enter Google PSE API Key": "輸入 Google PSE API 金鑰", "Enter Google PSE Engine Id": "輸入 Google PSE 引擎 ID", @@ -395,6 +397,7 @@ "Error accessing Google Drive: {{error}}": "存取 Google Drive 時發生錯誤:{{error}}", "Error uploading file: {{error}}": "上傳檔案時發生錯誤:{{error}}", "Evaluations": "評估", + "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "範例:(&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "範例:ALL", "Example: mail": "範例:mail", @@ -454,6 +457,7 @@ "Format your variables using brackets like this:": "使用方括號格式化您的變數,如下所示:", "Frequency Penalty": "頻率懲罰", "Function": "函式", + "Function Calling": "", "Function created successfully": "成功建立函式", "Function deleted successfully": "成功刪除函式", "Function Description": "函式描述", @@ -625,6 +629,7 @@ "More": "更多", "Name": "名稱", "Name your knowledge base": "命名您的知識庫", + "Native": "", "New Chat": "新增對話", "New Folder": "新增資料夾", "New Password": "新密碼", @@ -728,6 +733,7 @@ "Previous 30 days": "過去 30 天", "Previous 7 days": "過去 7 天", "Profile Image": "個人檔案圖片", + "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "提示詞(例如:告訴我關於羅馬帝國的一些趣事)", "Prompt Content": "提示詞內容", "Prompt created successfully": "提示詞建立成功", From 102b56b93888040fb324cba1db99f88a783a340e Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 5 Feb 2025 00:23:30 -0800 Subject: [PATCH 45/69] doc: changelog --- CHANGELOG.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 666fdb53d5..b35bb4bfb3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,34 @@ 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.8] - 2025-02-05 + +### Added + +- **🖥️ Code Interpreter**: Models can now execute code in real time to refine their answers dynamically, running securely within a sandboxed browser environment using Pyodide. Perfect for calculations, data analysis, and AI-assisted coding tasks! +- **💬 Redesigned Chat Input UI**: Enjoy a sleeker and more intuitive message input with improved feature selection, making it easier than ever to toggle tools, enable search, and interact with AI seamlessly. +- **🛠️ Native Tool Calling Support (Experimental)**: Supported models can now call tools natively, reducing query latency and improving contextual responses. More enhancements coming soon! +- **🔗 Exa Search Engine Integration**: A new search provider has been added, allowing users to retrieve up-to-date and relevant information without leaving the chat interface. +- **🌍 Localized Dates & Times**: Date and time formats now match your system locale, ensuring a more natural, region-specific experience. +- **📎 User Headers for External Embedding APIs**: API calls to external embedding services now include user-related headers. +- **🚀 General Performance & Stability**: Significant improvements across the platform for a faster, more reliable experience. +- **🖼️ UI/UX Enhancements**: Numerous design refinements improving readability, responsiveness, and accessibility. +- **🌍 Improved Translations**: Chinese, Korean, French, and Serbian translations have been updated with refined terminologies for better clarity. + +### Fixed + +- **🔄 OAuth Name Field Fallback**: Resolves OAuth login failures by using the email field as a fallback when a name is missing. +- **🔑 Google Drive Credentials Restriction**: Ensures only authenticated users can access Google Drive credentials for enhanced security. +- **🌐 DuckDuckGo Search Rate Limit Handling**: Fixes issues where users would encounter 202 errors due to rate limits when using DuckDuckGo for web search. +- **📁 File Upload Permission Indicator**: Users are now notified when they lack permission to upload files, improving clarity on system restrictions. +- **🔧 Max Tokens Issue**: Fixes cases where 'max_tokens' were not applied correctly, ensuring proper model behavior. +- **🔍 Validation for RAG Web Search URLs**: Filters out invalid or unsupported URLs when using web-based retrieval augmentation. +- **🖋️ Title Generation Bug**: Fixes inconsistencies in title generation, ensuring proper chat organization. + +### Removed + +- **⚡ Deprecated Non-Web Worker Pyodide Execution**: Moves entirely to browser sandboxing for better performance and security. + ## [0.5.7] - 2025-01-23 ### Added From 58bb4758df49860de19e543ee753b900b78cb0ea Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 5 Feb 2025 00:25:11 -0800 Subject: [PATCH 46/69] chore: bump --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 57bcf2906f..f114931881 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "open-webui", - "version": "0.5.7", + "version": "0.5.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "open-webui", - "version": "0.5.7", + "version": "0.5.8", "dependencies": { "@codemirror/lang-javascript": "^6.2.2", "@codemirror/lang-python": "^6.1.6", diff --git a/package.json b/package.json index a280916685..4f559d8a2c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "open-webui", - "version": "0.5.7", + "version": "0.5.8", "private": true, "scripts": { "dev": "npm run pyodide:fetch && vite dev --host", From 3f547eb395c47e7822a7a493fc94c11d59d818b4 Mon Sep 17 00:00:00 2001 From: KarlLee830 <61072264+KarlLee830@users.noreply.github.com> Date: Wed, 5 Feb 2025 16:34:51 +0800 Subject: [PATCH 47/69] i18n: Update Chinese translation --- src/lib/i18n/locales/zh-CN/translation.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index aeb8e90d62..d84e4a50f0 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "允许的端点", "Already have an account?": "已经拥有账号了?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "top_p的替代方法,目标是在质量和多样性之间取得平衡。参数p表示一个token相对于最有可能的token所需的最低概率。比如,当p=0.05且最有可能的token概率为0.9时,概率低于0.045的logits会被排除。(默认值:0.0)", - "Always-On Web Search": "", + "Always-On Web Search": "始终开启联网搜索", "Amazing": "很棒", "an assistant": "AI模型", "Analyzed": "已分析", @@ -238,7 +238,7 @@ "Default": "默认", "Default (Open AI)": "默认 (OpenAI)", "Default (SentenceTransformers)": "默认(SentenceTransformers)", - "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "默认模式通过在执行前调用一次工具,能够兼容更广泛的模型。原生模式利用模型内置的工具调用能力,但需要模型本身具备该功能的原生支持。", "Default Model": "默认模型", "Default model updated": "默认模型已更新", "Default Models": "默认模型", @@ -349,7 +349,7 @@ "Enter Chunk Overlap": "输入块重叠 (Chunk Overlap)", "Enter Chunk Size": "输入块大小 (Chunk Size)", "Enter description": "输入简介描述", - "Enter Exa API Key": "", + "Enter Exa API Key": "输入 Exa API 密钥", "Enter Github Raw URL": "输入 Github Raw 地址", "Enter Google PSE API Key": "输入 Google PSE API 密钥", "Enter Google PSE Engine Id": "输入 Google PSE 引擎 ID", @@ -398,7 +398,7 @@ "Error accessing Google Drive: {{error}}": "访问 Google 云端硬盘 出错: {{error}}", "Error uploading file: {{error}}": "上传文件时出错: {{error}}", "Evaluations": "竞技场评估", - "Exa API Key": "", + "Exa API Key": "Exa API 密钥", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "例如:(&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "例如:ALL", "Example: mail": "例如:mail", @@ -458,7 +458,7 @@ "Format your variables using brackets like this:": "使用括号格式化你的变量,如下所示:", "Frequency Penalty": "频率惩罚", "Function": "函数", - "Function Calling": "", + "Function Calling": "函数调用 (Function Calling)", "Function created successfully": "函数创建成功", "Function deleted successfully": "函数删除成功", "Function Description": "函数描述", @@ -630,7 +630,7 @@ "More": "更多", "Name": "名称", "Name your knowledge base": "为您的知识库命名", - "Native": "", + "Native": "原生", "New Chat": "新对话", "New Folder": "新文件夹", "New Password": "新密码", @@ -734,7 +734,7 @@ "Previous 30 days": "过去 30 天", "Previous 7 days": "过去 7 天", "Profile Image": "用户头像", - "Prompt": "", + "Prompt": "提示词 (Prompt)", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "提示(例如:给我讲一个关于罗马帝国的趣事。)", "Prompt Content": "提示词内容", "Prompt created successfully": "提示词创建成功", @@ -839,7 +839,7 @@ "Send": "发送", "Send a Message": "输入消息", "Send message": "发送消息", - "Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "在请求中发送 `stream_options: { include_usage: true }`。\n设置后支持的接口将在返回响应中包含令牌使用信息。", + "Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "在请求中发送 `stream_options: { include_usage: true }`。设置后,支持的供应商会在响应中返回 Token 使用信息。", "September": "九月", "Serper API Key": "Serper API 密钥", "Serply API Key": "Serply API 密钥", From d4a18a5765fdb443907a8e26a318906d052b5fcd Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 5 Feb 2025 00:37:47 -0800 Subject: [PATCH 48/69] refac: always on web search --- src/lib/components/chat/Chat.svelte | 23 ++++++++++++++----- src/lib/components/chat/MessageInput.svelte | 12 ++++++---- .../components/chat/Settings/Interface.svelte | 21 ++++++++--------- 3 files changed, 34 insertions(+), 22 deletions(-) diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 5f356a47da..ebb6126d1d 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -117,7 +117,7 @@ let selectedToolIds = []; let imageGenerationEnabled = false; - let webSearchEnabled = $settings?.alwaysOnWebSearch ?? false; + let webSearchEnabled = false; let codeInterpreterEnabled = false; let chat = null; let tags = []; @@ -143,7 +143,7 @@ prompt = ''; files = []; selectedToolIds = []; - + webSearchEnabled = false; imageGenerationEnabled = false; if (chatIdProp && (await loadChat())) { @@ -718,7 +718,7 @@ if ($page.url.searchParams.get('web-search') === 'true') { webSearchEnabled = true; } - + if ($page.url.searchParams.get('image-generation') === 'true') { imageGenerationEnabled = true; } @@ -1550,9 +1550,20 @@ tool_ids: selectedToolIds.length > 0 ? selectedToolIds : undefined, features: { - image_generation: imageGenerationEnabled, - code_interpreter: codeInterpreterEnabled, - web_search: webSearchEnabled + image_generation: + $config?.features?.enable_image_generation && + ($user.role === 'admin' || $user?.permissions?.features?.image_generation) + ? imageGenerationEnabled + : false, + code_interpreter: + $user.role === 'admin' || $user?.permissions?.features?.code_interpreter + ? codeInterpreterEnabled + : false, + web_search: + $config?.features?.enable_web_search && + ($user.role === 'admin' || $user?.permissions?.features?.web_search) + ? webSearchEnabled || ($settings?.webSearch ?? false) === 'always' + : false }, variables: { ...getPromptVariables( diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 926a704995..6f438a68ec 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -390,7 +390,7 @@
- {#if atSelectedModel !== undefined || selectedToolIds.length > 0 || webSearchEnabled || imageGenerationEnabled || codeInterpreterEnabled} + {#if atSelectedModel !== undefined || selectedToolIds.length > 0 || webSearchEnabled || ($settings?.webSearch ?? false) === 'always' || imageGenerationEnabled || codeInterpreterEnabled}
@@ -426,7 +426,7 @@
{/if} - {#if webSearchEnabled} + {#if webSearchEnabled || ($settings?.webSearch ?? false) === 'always'}
@@ -1135,7 +1135,8 @@
From 41ca399dfd352b7a01584c8db956cff7c96f4828 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 5 Feb 2025 00:42:51 -0800 Subject: [PATCH 49/69] chore: format --- CHANGELOG.md | 1 + src/lib/i18n/locales/ar-BH/translation.json | 3 ++- src/lib/i18n/locales/bg-BG/translation.json | 3 ++- src/lib/i18n/locales/bn-BD/translation.json | 3 ++- src/lib/i18n/locales/ca-ES/translation.json | 3 ++- src/lib/i18n/locales/ceb-PH/translation.json | 3 ++- src/lib/i18n/locales/cs-CZ/translation.json | 3 ++- src/lib/i18n/locales/da-DK/translation.json | 3 ++- src/lib/i18n/locales/de-DE/translation.json | 3 ++- src/lib/i18n/locales/dg-DG/translation.json | 3 ++- src/lib/i18n/locales/el-GR/translation.json | 3 ++- src/lib/i18n/locales/en-GB/translation.json | 3 ++- src/lib/i18n/locales/en-US/translation.json | 3 ++- src/lib/i18n/locales/es-ES/translation.json | 3 ++- src/lib/i18n/locales/eu-ES/translation.json | 3 ++- src/lib/i18n/locales/fa-IR/translation.json | 3 ++- src/lib/i18n/locales/fi-FI/translation.json | 3 ++- src/lib/i18n/locales/fr-CA/translation.json | 3 ++- src/lib/i18n/locales/fr-FR/translation.json | 3 ++- src/lib/i18n/locales/he-IL/translation.json | 3 ++- src/lib/i18n/locales/hi-IN/translation.json | 3 ++- src/lib/i18n/locales/hr-HR/translation.json | 3 ++- src/lib/i18n/locales/hu-HU/translation.json | 3 ++- src/lib/i18n/locales/id-ID/translation.json | 3 ++- src/lib/i18n/locales/ie-GA/translation.json | 3 ++- src/lib/i18n/locales/it-IT/translation.json | 3 ++- src/lib/i18n/locales/ja-JP/translation.json | 3 ++- src/lib/i18n/locales/ka-GE/translation.json | 3 ++- src/lib/i18n/locales/ko-KR/translation.json | 3 ++- src/lib/i18n/locales/lt-LT/translation.json | 3 ++- src/lib/i18n/locales/ms-MY/translation.json | 3 ++- src/lib/i18n/locales/nb-NO/translation.json | 3 ++- src/lib/i18n/locales/nl-NL/translation.json | 3 ++- src/lib/i18n/locales/pa-IN/translation.json | 3 ++- src/lib/i18n/locales/pl-PL/translation.json | 3 ++- src/lib/i18n/locales/pt-BR/translation.json | 3 ++- src/lib/i18n/locales/pt-PT/translation.json | 3 ++- src/lib/i18n/locales/ro-RO/translation.json | 3 ++- src/lib/i18n/locales/ru-RU/translation.json | 3 ++- src/lib/i18n/locales/sk-SK/translation.json | 3 ++- src/lib/i18n/locales/sr-RS/translation.json | 3 ++- src/lib/i18n/locales/sv-SE/translation.json | 3 ++- src/lib/i18n/locales/th-TH/translation.json | 3 ++- src/lib/i18n/locales/tk-TW/translation.json | 3 ++- src/lib/i18n/locales/tr-TR/translation.json | 3 ++- src/lib/i18n/locales/uk-UA/translation.json | 3 ++- src/lib/i18n/locales/ur-PK/translation.json | 3 ++- src/lib/i18n/locales/vi-VN/translation.json | 3 ++- src/lib/i18n/locales/zh-CN/translation.json | 3 ++- src/lib/i18n/locales/zh-TW/translation.json | 3 ++- 50 files changed, 99 insertions(+), 49 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b35bb4bfb3..90480321ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **🔗 Exa Search Engine Integration**: A new search provider has been added, allowing users to retrieve up-to-date and relevant information without leaving the chat interface. - **🌍 Localized Dates & Times**: Date and time formats now match your system locale, ensuring a more natural, region-specific experience. - **📎 User Headers for External Embedding APIs**: API calls to external embedding services now include user-related headers. +- **🌍 "Always On" Web Search Toggle**: A new option under Settings > Interface allows users to enable Web Search by default—transform Open WebUI into your go-to search engine, ensuring AI-powered results with every query. - **🚀 General Performance & Stability**: Significant improvements across the platform for a faster, more reliable experience. - **🖼️ UI/UX Enhancements**: Numerous design refinements improving readability, responsiveness, and accessibility. - **🌍 Improved Translations**: Chinese, Korean, French, and Serbian translations have been updated with refined terminologies for better clarity. diff --git a/src/lib/i18n/locales/ar-BH/translation.json b/src/lib/i18n/locales/ar-BH/translation.json index 58acf70e66..4c6b37a659 100644 --- a/src/lib/i18n/locales/ar-BH/translation.json +++ b/src/lib/i18n/locales/ar-BH/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "هل تملك حساب ؟", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "مساعد", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Web تحميل اعدادات", "Web Search": "بحث الويب", "Web Search Engine": "محرك بحث الويب", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "Webhook الرابط", "WebUI Settings": "WebUI اعدادات", diff --git a/src/lib/i18n/locales/bg-BG/translation.json b/src/lib/i18n/locales/bg-BG/translation.json index 7b446cad0b..321ef7c898 100644 --- a/src/lib/i18n/locales/bg-BG/translation.json +++ b/src/lib/i18n/locales/bg-BG/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Вече имате акаунт? ", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "асистент", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Настройки за зареждане на уеб", "Web Search": "Търсене в уеб", "Web Search Engine": "Уеб търсачка", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "Уебхук URL", "WebUI Settings": "WebUI Настройки", diff --git a/src/lib/i18n/locales/bn-BD/translation.json b/src/lib/i18n/locales/bn-BD/translation.json index e394cc5653..7761c7f7d8 100644 --- a/src/lib/i18n/locales/bn-BD/translation.json +++ b/src/lib/i18n/locales/bn-BD/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "আগে থেকেই একাউন্ট আছে?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "একটা এসিস্ট্যান্ট", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "ওয়েব লোডার সেটিংস", "Web Search": "ওয়েব অনুসন্ধান", "Web Search Engine": "ওয়েব সার্চ ইঞ্জিন", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "ওয়েবহুক URL", "WebUI Settings": "WebUI সেটিংসমূহ", diff --git a/src/lib/i18n/locales/ca-ES/translation.json b/src/lib/i18n/locales/ca-ES/translation.json index d97d8c8423..ad72ae49ec 100644 --- a/src/lib/i18n/locales/ca-ES/translation.json +++ b/src/lib/i18n/locales/ca-ES/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "Punts d'accés permesos", "Already have an account?": "Ja tens un compte?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternativa al top_p, i pretén garantir un equilibri de qualitat i varietat. El paràmetre p representa la probabilitat mínima que es consideri un token, en relació amb la probabilitat del token més probable. Per exemple, amb p=0,05 i el token més probable amb una probabilitat de 0,9, es filtren els logits amb un valor inferior a 0,045. (Per defecte: 0.0)", - "Always-On Web Search": "", + "Always": "", "Amazing": "Al·lucinant", "an assistant": "un assistent", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Preferències del carregador web", "Web Search": "Cerca la web", "Web Search Engine": "Motor de cerca de la web", + "Web Search in Chat": "", "Web Search Query Generation": "Generació de consultes per a la cerca de la web", "Webhook URL": "URL del webhook", "WebUI Settings": "Preferències de WebUI", diff --git a/src/lib/i18n/locales/ceb-PH/translation.json b/src/lib/i18n/locales/ceb-PH/translation.json index 8cf456d3f2..17a2789804 100644 --- a/src/lib/i18n/locales/ceb-PH/translation.json +++ b/src/lib/i18n/locales/ceb-PH/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Naa na kay account ?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "usa ka katabang", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "", "Web Search": "", "Web Search Engine": "", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "", "WebUI Settings": "Mga Setting sa WebUI", diff --git a/src/lib/i18n/locales/cs-CZ/translation.json b/src/lib/i18n/locales/cs-CZ/translation.json index dce4e14ec4..83b67930ee 100644 --- a/src/lib/i18n/locales/cs-CZ/translation.json +++ b/src/lib/i18n/locales/cs-CZ/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Už máte účet?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "asistent", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Nastavení Web Loaderu", "Web Search": "Vyhledávání na webu", "Web Search Engine": "Webový vyhledávač", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "Webhook URL", "WebUI Settings": "Nastavení WebUI", diff --git a/src/lib/i18n/locales/da-DK/translation.json b/src/lib/i18n/locales/da-DK/translation.json index 2a6d142e2f..7a2a21176a 100644 --- a/src/lib/i18n/locales/da-DK/translation.json +++ b/src/lib/i18n/locales/da-DK/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Har du allerede en profil?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "en assistent", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Web Loader-indstillinger", "Web Search": "Websøgning", "Web Search Engine": "Websøgemaskine", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "Webhook-URL", "WebUI Settings": "WebUI-indstillinger", diff --git a/src/lib/i18n/locales/de-DE/translation.json b/src/lib/i18n/locales/de-DE/translation.json index 5b1b9b0089..0cf2371eb0 100644 --- a/src/lib/i18n/locales/de-DE/translation.json +++ b/src/lib/i18n/locales/de-DE/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Haben Sie bereits einen Account?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternative zu top_p und zielt darauf ab, ein Gleichgewicht zwischen Qualität und Vielfalt zu gewährleisten. Der Parameter p repräsentiert die Mindestwahrscheinlichkeit für ein Token, um berücksichtigt zu werden, relativ zur Wahrscheinlichkeit des wahrscheinlichsten Tokens. Zum Beispiel, bei p=0.05 und das wahrscheinlichste Token hat eine Wahrscheinlichkeit von 0.9, werden Logits mit einem Wert von weniger als 0.045 herausgefiltert. (Standard: 0.0)", - "Always-On Web Search": "", + "Always": "", "Amazing": "Fantastisch", "an assistant": "ein Assistent", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Web Loader Einstellungen", "Web Search": "Websuche", "Web Search Engine": "Suchmaschine", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "Webhook URL", "WebUI Settings": "WebUI-Einstellungen", diff --git a/src/lib/i18n/locales/dg-DG/translation.json b/src/lib/i18n/locales/dg-DG/translation.json index 5f6a4b7464..b721091ca8 100644 --- a/src/lib/i18n/locales/dg-DG/translation.json +++ b/src/lib/i18n/locales/dg-DG/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Such account exists?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "such assistant", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "", "Web Search": "", "Web Search Engine": "", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "", "WebUI Settings": "WebUI Settings much settings", diff --git a/src/lib/i18n/locales/el-GR/translation.json b/src/lib/i18n/locales/el-GR/translation.json index e31c3303b3..99c1ab466e 100644 --- a/src/lib/i18n/locales/el-GR/translation.json +++ b/src/lib/i18n/locales/el-GR/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Έχετε ήδη λογαριασμό;", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Εναλλακτικό στο top_p, και στοχεύει στη διασφάλιση μιας ισορροπίας μεταξύ ποιότητας και ποικιλίας. Η παράμετρος p αντιπροσωπεύει την ελάχιστη πιθανότητα για ένα token να θεωρηθεί, σε σχέση με την πιθανότητα του πιο πιθανού token. Για παράδειγμα, με p=0.05 και το πιο πιθανό token να έχει πιθανότητα 0.9, τα logits με τιμή μικρότερη από 0.045 φιλτράρονται. (Προεπιλογή: 0.0)", - "Always-On Web Search": "", + "Always": "", "Amazing": "Καταπληκτικό", "an assistant": "ένας βοηθός", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Ρυθμίσεις Φόρτωσης Web", "Web Search": "Αναζήτηση στο Διαδίκτυο", "Web Search Engine": "Μηχανή Αναζήτησης στο Διαδίκτυο", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "URL Webhook", "WebUI Settings": "Ρυθμίσεις WebUI", diff --git a/src/lib/i18n/locales/en-GB/translation.json b/src/lib/i18n/locales/en-GB/translation.json index d581a1d629..cca4e14687 100644 --- a/src/lib/i18n/locales/en-GB/translation.json +++ b/src/lib/i18n/locales/en-GB/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "", "Web Search": "", "Web Search Engine": "", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "", "WebUI Settings": "", diff --git a/src/lib/i18n/locales/en-US/translation.json b/src/lib/i18n/locales/en-US/translation.json index d581a1d629..cca4e14687 100644 --- a/src/lib/i18n/locales/en-US/translation.json +++ b/src/lib/i18n/locales/en-US/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "", "Web Search": "", "Web Search Engine": "", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "", "WebUI Settings": "", diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index 7b4e41cd5d..08d07c8b5c 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "¿Ya tienes una cuenta?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "un asistente", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Web Loader Settings", "Web Search": "Búsqueda en la Web", "Web Search Engine": "Motor de búsqueda web", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "Webhook URL", "WebUI Settings": "Configuración del WebUI", diff --git a/src/lib/i18n/locales/eu-ES/translation.json b/src/lib/i18n/locales/eu-ES/translation.json index be0c9c73da..4a8dac21f3 100644 --- a/src/lib/i18n/locales/eu-ES/translation.json +++ b/src/lib/i18n/locales/eu-ES/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Baduzu kontu bat?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "top_p-ren alternatiba, kalitate eta aniztasunaren arteko oreka bermatzea du helburu. p parametroak token bat kontuan hartzeko gutxieneko probabilitatea adierazten du, token probableenaren probabilitatearen arabera. Adibidez, p=0.05 balioarekin eta token probableenaren probabilitatea 0.9 denean, 0.045 baino balio txikiagoko logit-ak baztertzen dira. (Lehenetsia: 0.0)", - "Always-On Web Search": "", + "Always": "", "Amazing": "Harrigarria", "an assistant": "laguntzaile bat", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Web kargatzailearen ezarpenak", "Web Search": "Web bilaketa", "Web Search Engine": "Web bilaketa motorra", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "Webhook URLa", "WebUI Settings": "WebUI ezarpenak", diff --git a/src/lib/i18n/locales/fa-IR/translation.json b/src/lib/i18n/locales/fa-IR/translation.json index 9f0efaefa7..f4784fa040 100644 --- a/src/lib/i18n/locales/fa-IR/translation.json +++ b/src/lib/i18n/locales/fa-IR/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "از قبل حساب کاربری دارید؟", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "یک دستیار", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "تنظیمات لودر وب", "Web Search": "جستجوی وب", "Web Search Engine": "موتور جستجوی وب", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "نشانی وب\u200cهوک", "WebUI Settings": "تنظیمات WebUI", diff --git a/src/lib/i18n/locales/fi-FI/translation.json b/src/lib/i18n/locales/fi-FI/translation.json index ec0dfa5490..0d7fea28e4 100644 --- a/src/lib/i18n/locales/fi-FI/translation.json +++ b/src/lib/i18n/locales/fi-FI/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Onko sinulla jo tili?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Vaihtoehto top_p:lle, jolla pyritään varmistamaan laadun ja monipuolisuuden tasapaino. Parametri p edustaa pienintä todennäköisyyttä, jolla token otetaan huomioon suhteessa todennäköisimpään tokeniin. Esimerkiksi p=0.05 ja todennäköisin token todennäköisyydellä 0.9, arvoltaan alle 0.045 olevat logit suodatetaan pois. (Oletus: 0.0)", - "Always-On Web Search": "", + "Always": "", "Amazing": "Hämmästyttävä", "an assistant": "avustaja", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Web Loader -asetukset", "Web Search": "Web-haku", "Web Search Engine": "Web-hakukone", + "Web Search in Chat": "", "Web Search Query Generation": "Web-haun kyselytulosten luonti", "Webhook URL": "Webhook-URL", "WebUI Settings": "WebUI-asetukset", diff --git a/src/lib/i18n/locales/fr-CA/translation.json b/src/lib/i18n/locales/fr-CA/translation.json index 04d8429a0e..66f0789674 100644 --- a/src/lib/i18n/locales/fr-CA/translation.json +++ b/src/lib/i18n/locales/fr-CA/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Avez-vous déjà un compte ?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "un assistant", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Paramètres du chargeur web", "Web Search": "Recherche Web", "Web Search Engine": "Moteur de recherche Web", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "URL du webhook", "WebUI Settings": "Paramètres de WebUI", diff --git a/src/lib/i18n/locales/fr-FR/translation.json b/src/lib/i18n/locales/fr-FR/translation.json index 2fc07595b7..0a35d6944c 100644 --- a/src/lib/i18n/locales/fr-FR/translation.json +++ b/src/lib/i18n/locales/fr-FR/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "Points de terminaison autorisés", "Already have an account?": "Avez-vous déjà un compte ?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternative au top_p, visant à assurer un équilibre entre qualité et variété. Le paramètre p représente la probabilité minimale pour qu'un token soit pris en compte, par rapport à la probabilité du token le plus probable. Par exemple, avec p=0.05 et le token le plus probable ayant une probabilité de 0.9, les logits ayant une valeur inférieure à 0.045 sont filtrés. (Par défaut : 0.0)", - "Always-On Web Search": "", + "Always": "", "Amazing": "Incroyable", "an assistant": "un assistant", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Paramètres du Web Loader", "Web Search": "Recherche Web", "Web Search Engine": "Moteur de recherche Web", + "Web Search in Chat": "", "Web Search Query Generation": "Génération de requête de recherche Web", "Webhook URL": "URL du webhook", "WebUI Settings": "Paramètres de WebUI", diff --git a/src/lib/i18n/locales/he-IL/translation.json b/src/lib/i18n/locales/he-IL/translation.json index 5eb39c28d4..8b62c9261f 100644 --- a/src/lib/i18n/locales/he-IL/translation.json +++ b/src/lib/i18n/locales/he-IL/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "כבר יש לך חשבון?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "עוזר", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "הגדרות טעינת אתר", "Web Search": "חיפוש באינטרנט", "Web Search Engine": "מנוע חיפוש באינטרנט", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "URL Webhook", "WebUI Settings": "הגדרות WebUI", diff --git a/src/lib/i18n/locales/hi-IN/translation.json b/src/lib/i18n/locales/hi-IN/translation.json index f932b44ae7..cb51d5b27c 100644 --- a/src/lib/i18n/locales/hi-IN/translation.json +++ b/src/lib/i18n/locales/hi-IN/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "क्या आपके पास पहले से एक खाता मौजूद है?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "एक सहायक", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "वेब लोडर सेटिंग्स", "Web Search": "वेब खोज", "Web Search Engine": "वेब खोज इंजन", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "वेबहुक URL", "WebUI Settings": "WebUI सेटिंग्स", diff --git a/src/lib/i18n/locales/hr-HR/translation.json b/src/lib/i18n/locales/hr-HR/translation.json index 6318b7d419..96618a0fb5 100644 --- a/src/lib/i18n/locales/hr-HR/translation.json +++ b/src/lib/i18n/locales/hr-HR/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Već imate račun?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "asistent", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Postavke web učitavanja", "Web Search": "Internet pretraga", "Web Search Engine": "Web tražilica", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "URL webkuke", "WebUI Settings": "WebUI postavke", diff --git a/src/lib/i18n/locales/hu-HU/translation.json b/src/lib/i18n/locales/hu-HU/translation.json index fb577ad415..fd3ca10374 100644 --- a/src/lib/i18n/locales/hu-HU/translation.json +++ b/src/lib/i18n/locales/hu-HU/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Már van fiókod?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "egy asszisztens", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Web betöltő beállítások", "Web Search": "Webes keresés", "Web Search Engine": "Webes keresőmotor", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "Webhook URL", "WebUI Settings": "WebUI beállítások", diff --git a/src/lib/i18n/locales/id-ID/translation.json b/src/lib/i18n/locales/id-ID/translation.json index 3eb448ab21..ecd4abfaaa 100644 --- a/src/lib/i18n/locales/id-ID/translation.json +++ b/src/lib/i18n/locales/id-ID/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Sudah memiliki akun?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "asisten", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Pengaturan Pemuat Web", "Web Search": "Pencarian Web", "Web Search Engine": "Mesin Pencari Web", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "URL pengait web", "WebUI Settings": "Pengaturan WebUI", diff --git a/src/lib/i18n/locales/ie-GA/translation.json b/src/lib/i18n/locales/ie-GA/translation.json index 95a2c178eb..1185772144 100644 --- a/src/lib/i18n/locales/ie-GA/translation.json +++ b/src/lib/i18n/locales/ie-GA/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "Críochphointí Ceadaithe", "Already have an account?": "Tá cuntas agat cheana féin?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Rogha eile seachas an top_p, agus tá sé mar aidhm aige cothromaíocht cáilíochta agus éagsúlachta a chinntiú. Léiríonn an paraiméadar p an dóchúlacht íosta go mbreithneofar comhartha, i gcoibhneas le dóchúlacht an chomhartha is dóichí. Mar shampla, le p=0.05 agus dóchúlacht 0.9 ag an comhartha is dóichí, déantar logits le luach níos lú ná 0.045 a scagadh amach. (Réamhshocrú: 0.0)", - "Always-On Web Search": "", + "Always": "", "Amazing": "Iontach", "an assistant": "cúntóir", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Socruithe Luchtaire Gréasáin", "Web Search": "Cuardach Gréasáin", "Web Search Engine": "Inneall Cuardaigh Gréasáin", + "Web Search in Chat": "", "Web Search Query Generation": "Giniúint Iarratas Cuardach Gréasáin", "Webhook URL": "URL Webhook", "WebUI Settings": "Socruithe WebUI", diff --git a/src/lib/i18n/locales/it-IT/translation.json b/src/lib/i18n/locales/it-IT/translation.json index 09a795765c..6bcbdfc93d 100644 --- a/src/lib/i18n/locales/it-IT/translation.json +++ b/src/lib/i18n/locales/it-IT/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Hai già un account?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "un assistente", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Impostazioni del caricatore Web", "Web Search": "Ricerca sul Web", "Web Search Engine": "Motore di ricerca Web", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "URL webhook", "WebUI Settings": "Impostazioni WebUI", diff --git a/src/lib/i18n/locales/ja-JP/translation.json b/src/lib/i18n/locales/ja-JP/translation.json index 92cc36b968..6c359ddd0a 100644 --- a/src/lib/i18n/locales/ja-JP/translation.json +++ b/src/lib/i18n/locales/ja-JP/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "すでにアカウントをお持ちですか?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "アシスタント", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Web 読み込み設定", "Web Search": "ウェブ検索", "Web Search Engine": "ウェブ検索エンジン", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "Webhook URL", "WebUI Settings": "WebUI 設定", diff --git a/src/lib/i18n/locales/ka-GE/translation.json b/src/lib/i18n/locales/ka-GE/translation.json index 3fe7f823bc..2bacef32d3 100644 --- a/src/lib/i18n/locales/ka-GE/translation.json +++ b/src/lib/i18n/locales/ka-GE/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "უკვე გაქვს ანგარიში?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "ასისტენტი", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "ვების ჩატარების პარამეტრები", "Web Search": "ვებ ძებნა", "Web Search Engine": "ვებ საძიებო სისტემა", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "Webhook URL", "WebUI Settings": "WebUI პარამეტრები", diff --git a/src/lib/i18n/locales/ko-KR/translation.json b/src/lib/i18n/locales/ko-KR/translation.json index 956236c1f6..2ec42f3041 100644 --- a/src/lib/i18n/locales/ko-KR/translation.json +++ b/src/lib/i18n/locales/ko-KR/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "이미 계정이 있으신가요?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "놀라움", "an assistant": "어시스턴트", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "웹 로더 설정", "Web Search": "웹 검색", "Web Search Engine": "웹 검색 엔진", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "웹훅 URL", "WebUI Settings": "WebUI 설정", diff --git a/src/lib/i18n/locales/lt-LT/translation.json b/src/lib/i18n/locales/lt-LT/translation.json index 6dd52a8298..ce3d36de60 100644 --- a/src/lib/i18n/locales/lt-LT/translation.json +++ b/src/lib/i18n/locales/lt-LT/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Ar jau turite paskyrą?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "assistentas", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Web krovimo nustatymai", "Web Search": "Web paieška", "Web Search Engine": "Web paieškos variklis", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "Webhook nuoroda", "WebUI Settings": "WebUI parametrai", diff --git a/src/lib/i18n/locales/ms-MY/translation.json b/src/lib/i18n/locales/ms-MY/translation.json index 522c48689a..03c175e18b 100644 --- a/src/lib/i18n/locales/ms-MY/translation.json +++ b/src/lib/i18n/locales/ms-MY/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Telah mempunyai akaun?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "seorang pembantu", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Tetapan Pemuat Web", "Web Search": "Carian Web", "Web Search Engine": "Enjin Carian Web", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "URL 'Webhook'", "WebUI Settings": "Tetapan WebUI", diff --git a/src/lib/i18n/locales/nb-NO/translation.json b/src/lib/i18n/locales/nb-NO/translation.json index 965db68e7b..ed9b1bb5c3 100644 --- a/src/lib/i18n/locales/nb-NO/translation.json +++ b/src/lib/i18n/locales/nb-NO/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Har du allerede en konto?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternativ til top_p, og har som mål å sikre en balanse mellom kvalitet og variasjon. Parameteren p representerer minimumssannsynligheten for at et token skal vurderes, i forhold til sannsynligheten for det mest sannsynlige tokenet. Hvis p for eksempel er 0,05 og det mest sannsynlige tokenet har en sannsynlighet på 0,9, filtreres logits med en verdi på mindre enn 0,045 bort. (Standard: 0,0)", - "Always-On Web Search": "", + "Always": "", "Amazing": "Flott", "an assistant": "en assistent", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Web-lasterinnstillinger", "Web Search": "Nettsøk", "Web Search Engine": "Nettsøkmotor", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "Webhook URL", "WebUI Settings": "Innstillinger for WebUI", diff --git a/src/lib/i18n/locales/nl-NL/translation.json b/src/lib/i18n/locales/nl-NL/translation.json index 2fdd5bf417..627fff7a12 100644 --- a/src/lib/i18n/locales/nl-NL/translation.json +++ b/src/lib/i18n/locales/nl-NL/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Heb je al een account?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternatief voor de top_p, en streeft naar een evenwicht tussen kwaliteit en variatie. De parameter p vertegenwoordigt de minimumwaarschijnlijkheid dat een token in aanmerking wordt genomen, in verhouding tot de waarschijnlijkheid van het meest waarschijnlijke token. Bijvoorbeeld, met p=0.05 en de meest waarschijnlijke token met een waarschijnlijkheid van 0.9, worden logits met een waarde kleiner dan 0.045 uitgefilterd. (Standaard: 0,0)", - "Always-On Web Search": "", + "Always": "", "Amazing": "Geweldig", "an assistant": "een assistent", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Web Loader instellingen", "Web Search": "Zoeken op het web", "Web Search Engine": "Zoekmachine op het web", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "Webhook URL", "WebUI Settings": "WebUI Instellingen", diff --git a/src/lib/i18n/locales/pa-IN/translation.json b/src/lib/i18n/locales/pa-IN/translation.json index 538e9c8530..4181d39dcf 100644 --- a/src/lib/i18n/locales/pa-IN/translation.json +++ b/src/lib/i18n/locales/pa-IN/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "ਪਹਿਲਾਂ ਹੀ ਖਾਤਾ ਹੈ?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "ਇੱਕ ਸਹਾਇਕ", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "ਵੈਬ ਲੋਡਰ ਸੈਟਿੰਗਾਂ", "Web Search": "ਵੈੱਬ ਖੋਜ", "Web Search Engine": "ਵੈੱਬ ਖੋਜ ਇੰਜਣ", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "ਵੈਬਹੁੱਕ URL", "WebUI Settings": "ਵੈਬਯੂਆਈ ਸੈਟਿੰਗਾਂ", diff --git a/src/lib/i18n/locales/pl-PL/translation.json b/src/lib/i18n/locales/pl-PL/translation.json index 9fb96c8e5a..ba09919222 100644 --- a/src/lib/i18n/locales/pl-PL/translation.json +++ b/src/lib/i18n/locales/pl-PL/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Masz już konto?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "asystent", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Ustawienia pobierania z sieci", "Web Search": "Wyszukiwarka w Internecie", "Web Search Engine": "Wyszukiwarka internetowa", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "URL webhook", "WebUI Settings": "Ustawienia interfejsu WebUI", diff --git a/src/lib/i18n/locales/pt-BR/translation.json b/src/lib/i18n/locales/pt-BR/translation.json index fd45e7bf6e..080594a6f1 100644 --- a/src/lib/i18n/locales/pt-BR/translation.json +++ b/src/lib/i18n/locales/pt-BR/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Já tem uma conta?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternativa ao 'top_p', e visa garantir um equilíbrio entre qualidade e variedade. O parâmetro 'p' representa a probabilidade mínima para que um token seja considerado, em relação à probabilidade do token mais provável. Por exemplo, com 'p=0.05' e o token mais provável com probabilidade de '0.9', as predições com valor inferior a '0.045' são filtrados. (Default: 0.0)", - "Always-On Web Search": "", + "Always": "", "Amazing": "Incrível", "an assistant": "um assistente", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Configurações do Carregador Web", "Web Search": "Pesquisa na Web", "Web Search Engine": "Mecanismo de Busca na Web", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "URL do Webhook", "WebUI Settings": "Configurações da WebUI", diff --git a/src/lib/i18n/locales/pt-PT/translation.json b/src/lib/i18n/locales/pt-PT/translation.json index bc1980f5b9..abfdae83a6 100644 --- a/src/lib/i18n/locales/pt-PT/translation.json +++ b/src/lib/i18n/locales/pt-PT/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Já tem uma conta?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "um assistente", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Configurações do Carregador da Web", "Web Search": "Pesquisa na Web", "Web Search Engine": "Motor de Pesquisa Web", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "URL do Webhook", "WebUI Settings": "Configurações WebUI", diff --git a/src/lib/i18n/locales/ro-RO/translation.json b/src/lib/i18n/locales/ro-RO/translation.json index 5fabdb20f1..8ec4b70c1a 100644 --- a/src/lib/i18n/locales/ro-RO/translation.json +++ b/src/lib/i18n/locales/ro-RO/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Deja ai un cont?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "un asistent", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Setări Încărcător Web", "Web Search": "Căutare Web", "Web Search Engine": "Motor de Căutare Web", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "URL Webhook", "WebUI Settings": "Setări WebUI", diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index e175eff182..2f3f64a480 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "У вас уже есть учетная запись?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "Удивительный", "an assistant": "ассистент", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Настройки веб-загрузчика", "Web Search": "Веб-поиск", "Web Search Engine": "Поисковая система", + "Web Search in Chat": "", "Web Search Query Generation": "Генерация запросов веб-поиска", "Webhook URL": "URL-адрес веб-хука", "WebUI Settings": "Настройки WebUI", diff --git a/src/lib/i18n/locales/sk-SK/translation.json b/src/lib/i18n/locales/sk-SK/translation.json index a66ce6551b..b121d0d781 100644 --- a/src/lib/i18n/locales/sk-SK/translation.json +++ b/src/lib/i18n/locales/sk-SK/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Už máte účet?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "asistent", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Nastavenia Web Loaderu", "Web Search": "Vyhľadávanie na webe", "Web Search Engine": "Webový vyhľadávač", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "Webhook URL", "WebUI Settings": "Nastavenia WebUI", diff --git a/src/lib/i18n/locales/sr-RS/translation.json b/src/lib/i18n/locales/sr-RS/translation.json index d9f4cb79e9..f0567e1a12 100644 --- a/src/lib/i18n/locales/sr-RS/translation.json +++ b/src/lib/i18n/locales/sr-RS/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Већ имате налог?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "Невероватно", "an assistant": "помоћник", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Подешавања веб учитавача", "Web Search": "Веб претрага", "Web Search Engine": "Веб претраживач", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "Адреса веб-куке", "WebUI Settings": "Подешавања веб интерфејса", diff --git a/src/lib/i18n/locales/sv-SE/translation.json b/src/lib/i18n/locales/sv-SE/translation.json index 3bf37a6291..8b30e43e40 100644 --- a/src/lib/i18n/locales/sv-SE/translation.json +++ b/src/lib/i18n/locales/sv-SE/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Har du redan ett konto?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "en assistent", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Web Loader-inställningar", "Web Search": "Webbsökning", "Web Search Engine": "Webbsökmotor", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "Webhook-URL", "WebUI Settings": "WebUI-inställningar", diff --git a/src/lib/i18n/locales/th-TH/translation.json b/src/lib/i18n/locales/th-TH/translation.json index 1e6b1e5dc2..fa00f571e2 100644 --- a/src/lib/i18n/locales/th-TH/translation.json +++ b/src/lib/i18n/locales/th-TH/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "มีบัญชีอยู่แล้ว?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "ผู้ช่วย", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "การตั้งค่าเว็บโหลดเดอร์", "Web Search": "การค้นหาเว็บ", "Web Search Engine": "เครื่องมือค้นหาเว็บ", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "URL ของ Webhook", "WebUI Settings": "การตั้งค่า WebUI", diff --git a/src/lib/i18n/locales/tk-TW/translation.json b/src/lib/i18n/locales/tk-TW/translation.json index d581a1d629..cca4e14687 100644 --- a/src/lib/i18n/locales/tk-TW/translation.json +++ b/src/lib/i18n/locales/tk-TW/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "", "Web Search": "", "Web Search Engine": "", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "", "WebUI Settings": "", diff --git a/src/lib/i18n/locales/tr-TR/translation.json b/src/lib/i18n/locales/tr-TR/translation.json index e3770cc727..4b14a8b749 100644 --- a/src/lib/i18n/locales/tr-TR/translation.json +++ b/src/lib/i18n/locales/tr-TR/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "İzin Verilen Uç Noktalar", "Already have an account?": "Zaten bir hesabınız mı var?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "top_p'ye bir alternatif ve kalite ile çeşitlilik arasında bir denge sağlamayı amaçlar. p parametresi, en olası tokenin olasılığına göre, bir tokenin dikkate alınması için minimum olasılığı temsil eder. Örneğin, p=0.05 ve en olası tokenin 0.9 olasılığı ile 0.045'ten küçük bir değere sahip logitler filtrelenir. (Varsayılan: 0.0)", - "Always-On Web Search": "", + "Always": "", "Amazing": "Harika", "an assistant": "bir asistan", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Web Yükleyici Ayarları", "Web Search": "Web Araması", "Web Search Engine": "Web Arama Motoru", + "Web Search in Chat": "", "Web Search Query Generation": "Web Arama Sorgusu Oluşturma", "Webhook URL": "Webhook URL", "WebUI Settings": "WebUI Ayarları", diff --git a/src/lib/i18n/locales/uk-UA/translation.json b/src/lib/i18n/locales/uk-UA/translation.json index 39940789e9..7f62daadee 100644 --- a/src/lib/i18n/locales/uk-UA/translation.json +++ b/src/lib/i18n/locales/uk-UA/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "Дозволені кінцеві точки", "Already have an account?": "Вже є обліковий запис?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Альтернатива параметру top_p, яка має на меті забезпечити баланс якості та різноманітності. Параметр p представляє мінімальну ймовірність для того, щоб токен був врахований, відносно ймовірності найбільш ймовірного токена. Наприклад, при p=0.05 і найбільш імовірному токені з ймовірністю 0.9, логіти зі значенням менше 0.045 будуть відфільтровані. (За замовчуванням: 0.0)", - "Always-On Web Search": "", + "Always": "", "Amazing": "Чудово", "an assistant": "асистента", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Налаштування веб-завантажувача", "Web Search": "Веб-пошук", "Web Search Engine": "Веб-пошукова система", + "Web Search in Chat": "", "Web Search Query Generation": "Генерація запиту для пошуку в мережі", "Webhook URL": "URL веб-запиту", "WebUI Settings": "Налаштування WebUI", diff --git a/src/lib/i18n/locales/ur-PK/translation.json b/src/lib/i18n/locales/ur-PK/translation.json index c81f24c072..dfee4dc667 100644 --- a/src/lib/i18n/locales/ur-PK/translation.json +++ b/src/lib/i18n/locales/ur-PK/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "کیا پہلے سے اکاؤنٹ موجود ہے؟", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "معاون", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "ویب لوڈر کی ترتیبات", "Web Search": "ویب تلاش کریں", "Web Search Engine": "ویب تلاش انجن", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "ویب ہُک یو آر ایل", "WebUI Settings": "ویب UI ترتیبات", diff --git a/src/lib/i18n/locales/vi-VN/translation.json b/src/lib/i18n/locales/vi-VN/translation.json index 940efaf232..66f4d236db 100644 --- a/src/lib/i18n/locales/vi-VN/translation.json +++ b/src/lib/i18n/locales/vi-VN/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "", "Already have an account?": "Bạn đã có tài khoản?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Always-On Web Search": "", + "Always": "", "Amazing": "", "an assistant": "trợ lý", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "Cài đặt Web Loader", "Web Search": "Tìm kiếm Web", "Web Search Engine": "Chức năng Tìm kiếm Web", + "Web Search in Chat": "", "Web Search Query Generation": "", "Webhook URL": "Webhook URL", "WebUI Settings": "Cài đặt WebUI", diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index d84e4a50f0..2e06bc61fc 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "允许的端点", "Already have an account?": "已经拥有账号了?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "top_p的替代方法,目标是在质量和多样性之间取得平衡。参数p表示一个token相对于最有可能的token所需的最低概率。比如,当p=0.05且最有可能的token概率为0.9时,概率低于0.045的logits会被排除。(默认值:0.0)", - "Always-On Web Search": "始终开启联网搜索", + "Always": "", "Amazing": "很棒", "an assistant": "AI模型", "Analyzed": "已分析", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "网页爬取设置", "Web Search": "联网搜索", "Web Search Engine": "联网搜索引擎", + "Web Search in Chat": "", "Web Search Query Generation": "网页搜索关键词生成", "Webhook URL": "Webhook URL", "WebUI Settings": "WebUI 设置", diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index 20910fb9f1..aa505a2e73 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -63,7 +63,7 @@ "Allowed Endpoints": "允許的端點", "Already have an account?": "已經有帳號了嗎?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "作為 top_p 的替代方案,旨在確保質量和多樣性的平衡。相對於最可能的 token 機率而言,參數 p 代表一個 token 被考慮在内的最低機率。例如,當 p=0.05 且最可能的 token 機率為 0.9 時,數值低於 0.045 的對數機率會被過濾掉。(預設值:0.0)", - "Always-On Web Search": "", + "Always": "", "Amazing": "很棒", "an assistant": "一位助手", "Analyzed": "", @@ -1051,6 +1051,7 @@ "Web Loader Settings": "網頁載入器設定", "Web Search": "網頁搜尋", "Web Search Engine": "網頁搜尋引擎", + "Web Search in Chat": "", "Web Search Query Generation": "網頁搜尋查詢生成", "Webhook URL": "Webhook URL", "WebUI Settings": "WebUI 設定", From f6b955e6a0898ae8c05bc115eede3b0f83235811 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 5 Feb 2025 00:44:07 -0800 Subject: [PATCH 50/69] chore: format --- src/lib/components/chat/SettingsModal.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/chat/SettingsModal.svelte b/src/lib/components/chat/SettingsModal.svelte index 9e604f4bf4..93ed327c1e 100644 --- a/src/lib/components/chat/SettingsModal.svelte +++ b/src/lib/components/chat/SettingsModal.svelte @@ -119,7 +119,7 @@ 'save', 'interfaceoptions', 'interfacecustomization', - 'alwaysonwebsearch', + 'alwaysonwebsearch' ] }, { From 1fbbd36433833c263ce3d7e8b6e37470a95ea7d6 Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 5 Feb 2025 10:02:59 +0100 Subject: [PATCH 51/69] Update translation.json --- src/lib/i18n/locales/uk-UA/translation.json | 38 ++++++++++----------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/lib/i18n/locales/uk-UA/translation.json b/src/lib/i18n/locales/uk-UA/translation.json index 7f62daadee..7f1f733b97 100644 --- a/src/lib/i18n/locales/uk-UA/translation.json +++ b/src/lib/i18n/locales/uk-UA/translation.json @@ -63,11 +63,11 @@ "Allowed Endpoints": "Дозволені кінцеві точки", "Already have an account?": "Вже є обліковий запис?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Альтернатива параметру top_p, яка має на меті забезпечити баланс якості та різноманітності. Параметр p представляє мінімальну ймовірність для того, щоб токен був врахований, відносно ймовірності найбільш ймовірного токена. Наприклад, при p=0.05 і найбільш імовірному токені з ймовірністю 0.9, логіти зі значенням менше 0.045 будуть відфільтровані. (За замовчуванням: 0.0)", - "Always": "", + "Always": "Завжди", "Amazing": "Чудово", "an assistant": "асистента", - "Analyzed": "", - "Analyzing...": "", + "Analyzed": "Проаналізовано", + "Analyzing...": "Аналізую...", "and": "та", "and {{COUNT}} more": "та ще {{COUNT}}", "and create a new shared link.": "і створіть нове спільне посилання.", @@ -172,11 +172,11 @@ "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Відмовлено в дозволі на запис до буфера обміну. Будь ласка, перевірте налаштування вашого браузера, щоб надати необхідний доступ.", "Clone": "Клонувати", "Clone Chat": "Клонувати чат", - "Clone of {{TITLE}}": "", + "Clone of {{TITLE}}": "Клон {{TITLE}}", "Close": "Закрити", "Code execution": "Виконання коду", "Code formatted successfully": "Код успішно відформатовано", - "Code Interpreter": "", + "Code Interpreter": "Інтерпретатор коду", "Collection": "Колекція", "Color": "Колір", "ComfyUI": "ComfyUI", @@ -238,7 +238,7 @@ "Default": "За замовчуванням", "Default (Open AI)": "За замовчуванням (Open AI)", "Default (SentenceTransformers)": "За замовчуванням (SentenceTransformers)", - "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "Режим за замовчуванням працює з ширшим діапазоном моделей, викликаючи інструменти один раз перед виконанням. Рідний режим використовує вбудовані можливості виклику інструментів моделі, але вимагає, щоб модель спочатку підтримувала цю функцію.", "Default Model": "Модель за замовчуванням", "Default model updated": "Модель за замовчуванням оновлено", "Default Models": "Моделі за замовчуванням", @@ -349,12 +349,12 @@ "Enter Chunk Overlap": "Введіть перекриття фрагменту", "Enter Chunk Size": "Введіть розмір фрагменту", "Enter description": "Введіть опис", - "Enter Exa API Key": "", + "Enter Exa API Key": "Введіть ключ API Exa", "Enter Github Raw URL": "Введіть Raw URL-адресу Github", "Enter Google PSE API Key": "Введіть ключ API Google PSE", "Enter Google PSE Engine Id": "Введіть Google PSE Engine Id", "Enter Image Size (e.g. 512x512)": "Введіть розмір зображення (напр., 512x512)", - "Enter Jina API Key": "Введіть ключ API для Jina", + "Enter Jina API Key": "Введіть ключ API Jina", "Enter Kagi Search API Key": "Введіть ключ API Kagi Search", "Enter language codes": "Введіть мовні коди", "Enter Model ID": "Введіть ID моделі", @@ -398,14 +398,14 @@ "Error accessing Google Drive: {{error}}": "Помилка доступу до Google Drive: {{error}}", "Error uploading file: {{error}}": "Помилка завантаження файлу: {{error}}", "Evaluations": "Оцінювання", - "Exa API Key": "", + "Exa API Key": "Exa API ключ", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Приклад: (&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "Приклад: ВСІ", "Example: mail": "Приклад: пошта", "Example: ou=users,dc=foo,dc=example": "Приклад: ou=users,dc=foo,dc=example", "Example: sAMAccountName or uid or userPrincipalName": "Приклад: sAMAccountName або uid або userPrincipalName", "Exclude": "Виключити", - "Execute code for analysis": "", + "Execute code for analysis": "Виконати код для аналізу", "Experimental": "Експериментальне", "Explore the cosmos": "Досліджуйте космос", "Export": "Експорт", @@ -458,7 +458,7 @@ "Format your variables using brackets like this:": "Форматуйте свої змінні, використовуючи фігурні дужки таким чином:", "Frequency Penalty": "Штраф за частоту", "Function": "Функція", - "Function Calling": "", + "Function Calling": "Виклик функцій", "Function created successfully": "Функцію успішно створено", "Function deleted successfully": "Функцію успішно видалено", "Function Description": "Опис функції", @@ -473,7 +473,7 @@ "Functions imported successfully": "Функції успішно імпортовано", "General": "Загальні", "General Settings": "Загальні налаштування", - "Generate an image": "", + "Generate an image": "Згенерувати зображення", "Generate Image": "Створити зображення", "Generating search query": "Сформувати пошуковий запит", "Get started": "Почати", @@ -630,7 +630,7 @@ "More": "Більше", "Name": "Ім'я", "Name your knowledge base": "Назвіть вашу базу знань", - "Native": "", + "Native": "Рідний", "New Chat": "Новий чат", "New Folder": "Нова папка", "New Password": "Новий пароль", @@ -725,7 +725,7 @@ "Please enter a prompt": "Будь ласка, введіть підказку", "Please fill in all fields.": "Будь ласка, заповніть всі поля.", "Please select a model first.": "Будь ласка, спочатку виберіть модель.", - "Please select a model.": "", + "Please select a model.": "Будь ласка, виберіть модель.", "Please select a reason": "Будь ласка, виберіть причину", "Port": "Порт", "Positive attitude": "Позитивне ставлення", @@ -734,7 +734,7 @@ "Previous 30 days": "Попередні 30 днів", "Previous 7 days": "Попередні 7 днів", "Profile Image": "Зображення профілю", - "Prompt": "", + "Prompt": "Підказка", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Підказка (напр., розкажіть мені цікавий факт про Римську імперію)", "Prompt Content": "Зміст промту", "Prompt created successfully": "Підказку успішно створено", @@ -810,7 +810,7 @@ "Search options": "Опції пошуку", "Search Prompts": "Пошук промтів", "Search Result Count": "Кількість результатів пошуку", - "Search the internet": "", + "Search the internet": "Шукати в інтернеті", "Search Tools": "Пошуку інструментів", "SearchApi API Key": "Ключ API для SearchApi", "SearchApi Engine": "Рушій SearchApi", @@ -980,7 +980,7 @@ "Tools": "Інструменти", "Tools Access": "Доступ до інструментів", "Tools are a function calling system with arbitrary code execution": "Інструменти - це система виклику функцій з довільним виконанням коду", - "Tools Function Calling Prompt": "", + "Tools Function Calling Prompt": "Підказка для виклику функцій інструментів", "Tools have a function calling system that allows arbitrary code execution": "Інструменти мають систему виклику функцій, яка дозволяє виконання довільного коду", "Tools have a function calling system that allows arbitrary code execution.": "Інструменти мають систему виклику функцій, яка дозволяє виконання довільного коду.", "Top K": "Top K", @@ -1051,7 +1051,7 @@ "Web Loader Settings": "Налаштування веб-завантажувача", "Web Search": "Веб-пошук", "Web Search Engine": "Веб-пошукова система", - "Web Search in Chat": "", + "Web Search in Chat": "Пошук в інтернеті в чаті", "Web Search Query Generation": "Генерація запиту для пошуку в мережі", "Webhook URL": "URL веб-запиту", "WebUI Settings": "Налаштування WebUI", @@ -1081,7 +1081,7 @@ "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 do not have permission to access this feature.": "У вас немає дозволу на доступ до цієї функції.", - "You do not have permission to upload files": "", + "You do not have permission to upload files": "У вас немає дозволу на завантаження файлів.", "You do not have permission to upload files.": "У вас немає дозволу завантажувати файли.", "You have no archived conversations.": "У вас немає архівованих розмов.", "You have shared this chat": "Ви поділилися цим чатом", From cce1762cb830d55e9df25896e171e7b92d6f1034 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 5 Feb 2025 01:03:16 -0800 Subject: [PATCH 52/69] refac: tool calling --- backend/open_webui/utils/middleware.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 19487116a5..6e4a875b48 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1156,8 +1156,13 @@ async def process_chat_response( if not raw: content = f'{content}\n
\nTool Executed\n{result_display_content}\n
\n' else: + tool_calls_display_content = "" + + for tool_call in block_content: + tool_calls_display_content = f"{tool_calls_display_content}\n> Executing {tool_call.get('function', {}).get('name', '')}" + if not raw: - content = f'{content}\n
\nTool Executing...\n
\n' + content = f'{content}\n
\nTool Executing...\n{tool_calls_display_content}\n
\n' elif block["type"] == "reasoning": reasoning_display_content = "\n".join( From b33b49789e495cf3f4a0ac4cfabfd4405f0ec1cc Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 5 Feb 2025 01:03:40 -0800 Subject: [PATCH 53/69] enh: responsive styling --- package-lock.json | 11 ++ package.json | 1 + src/lib/components/chat/Chat.svelte | 2 +- src/lib/components/chat/MessageInput.svelte | 112 ++++++++++---------- src/lib/components/chat/Placeholder.svelte | 10 +- tailwind.config.js | 3 +- 6 files changed, 77 insertions(+), 62 deletions(-) diff --git a/package-lock.json b/package-lock.json index f114931881..074ff21c12 100644 --- a/package-lock.json +++ b/package-lock.json @@ -69,6 +69,7 @@ "@sveltejs/adapter-static": "^3.0.2", "@sveltejs/kit": "^2.5.20", "@sveltejs/vite-plugin-svelte": "^3.1.1", + "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/typography": "^0.5.13", "@typescript-eslint/eslint-plugin": "^6.17.0", "@typescript-eslint/parser": "^6.17.0", @@ -2343,6 +2344,16 @@ "tslib": "^2.4.0" } }, + "node_modules/@tailwindcss/container-queries": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/container-queries/-/container-queries-0.1.1.tgz", + "integrity": "sha512-p18dswChx6WnTSaJCSGx6lTmrGzNNvm2FtXmiO6AuA1V4U5REyoqwmT6kgAsIMdjo07QdAfYXHJ4hnMtfHzWgA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "tailwindcss": ">=3.2.0" + } + }, "node_modules/@tailwindcss/typography": { "version": "0.5.13", "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.13.tgz", diff --git a/package.json b/package.json index 4f559d8a2c..d2c4795c64 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "@sveltejs/adapter-static": "^3.0.2", "@sveltejs/kit": "^2.5.20", "@sveltejs/vite-plugin-svelte": "^3.1.1", + "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/typography": "^0.5.13", "@typescript-eslint/eslint-plugin": "^6.17.0", "@typescript-eslint/parser": "^6.17.0", diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index ebb6126d1d..cc14f2c6fe 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -1940,7 +1940,7 @@
{/if} -
+
{#if $settings?.landingPageMode === 'chat' || createMessagesList(history, history.currentId).length > 0}