diff --git a/backend/constants.py b/backend/constants.py index f1eed43d3..7c366c222 100644 --- a/backend/constants.py +++ b/backend/constants.py @@ -89,3 +89,14 @@ class ERROR_MESSAGES(str, Enum): OLLAMA_API_DISABLED = ( "The Ollama API is disabled. Please enable it to use this feature." ) + + +class TASKS(str, Enum): + def __str__(self) -> str: + return super().__str__() + + DEFAULT = lambda task="": f"{task if task else 'default'}" + TITLE_GENERATION = "Title Generation" + EMOJI_GENERATION = "Emoji Generation" + QUERY_GENERATION = "Query Generation" + FUNCTION_CALLING = "Function Calling" diff --git a/backend/main.py b/backend/main.py index 0e3986f21..49e068a75 100644 --- a/backend/main.py +++ b/backend/main.py @@ -126,7 +126,7 @@ from config import ( WEBUI_SESSION_COOKIE_SECURE, AppConfig, ) -from constants import ERROR_MESSAGES, WEBHOOK_MESSAGES +from constants import ERROR_MESSAGES, WEBHOOK_MESSAGES, TASKS from utils.webhook import post_webhook if SAFE_MODE: @@ -311,6 +311,7 @@ async def get_function_call_response( {"role": "user", "content": f"Query: {prompt}"}, ], "stream": False, + "task": TASKS.FUNCTION_CALLING, } try: @@ -323,7 +324,6 @@ async def get_function_call_response( response = None try: response = await generate_chat_completions(form_data=payload, user=user) - content = None if hasattr(response, "body_iterator"): @@ -833,9 +833,6 @@ def filter_pipeline(payload, user): pass if "pipeline" not in app.state.MODELS[model_id]: - if "title" in payload: - del payload["title"] - if "task" in payload: del payload["task"] @@ -1338,7 +1335,7 @@ async def generate_title(form_data: dict, user=Depends(get_verified_user)): "stream": False, "max_tokens": 50, "chat_id": form_data.get("chat_id", None), - "title": True, + "task": TASKS.TITLE_GENERATION, } log.debug(payload) @@ -1401,7 +1398,7 @@ async def generate_search_query(form_data: dict, user=Depends(get_verified_user) "messages": [{"role": "user", "content": content}], "stream": False, "max_tokens": 30, - "task": True, + "task": TASKS.QUERY_GENERATION, } print(payload) @@ -1468,7 +1465,7 @@ Message: """{{prompt}}""" "stream": False, "max_tokens": 4, "chat_id": form_data.get("chat_id", None), - "task": True, + "task": TASKS.EMOJI_GENERATION, } log.debug(payload) diff --git a/src/lib/i18n/locales/de-DE/translation.json b/src/lib/i18n/locales/de-DE/translation.json index 5485eee01..2db580424 100644 --- a/src/lib/i18n/locales/de-DE/translation.json +++ b/src/lib/i18n/locales/de-DE/translation.json @@ -33,7 +33,7 @@ "admin": "Administrator", "Admin": "Administrator", "Admin Panel": "Administrationsbereich", - "Admin Settings": "Administrator-Einstellungen", + "Admin Settings": "Administrationsbereich", "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Administratoren haben jederzeit Zugriff auf alle Werkzeuge. Benutzer können im Arbeitsbereich zugewiesen.", "Advanced Parameters": "Erweiterte Parameter", "Advanced Params": "Erweiterte Parameter", @@ -86,7 +86,7 @@ "Capabilities": "Fähigkeiten", "Change Password": "Passwort ändern", "Chat": "Gespräch", - "Chat Background Image": "Unterhaltungs-Hintergrundbild", + "Chat Background Image": "Hintergrundbild des Unterhaltungsfensters", "Chat Bubble UI": "Chat Bubble UI", "Chat direction": "Textrichtung", "Chat History": "Unterhaltungsverlauf", @@ -100,7 +100,7 @@ "Chunk Params": "Blockparameter", "Chunk Size": "Blockgröße", "Citation": "Zitate", - "Clear memory": "Erinnerungen löschen", + "Clear memory": "Alle Erinnerungen entfernen", "Click here for help.": "Klicken Sie hier für Hilfe.", "Click here to": "Klicke Sie hier, um", "Click here to download user import template file.": "Klicken Sie hier, um die Vorlage für den Benutzerimport herunterzuladen.", @@ -119,14 +119,14 @@ "ComfyUI Base URL": "ComfyUI-Basis-URL", "ComfyUI Base URL is required.": "ComfyUI-Basis-URL wird benötigt.", "Command": "Befehl", - "Concurrent Requests": "Gleichzeitige Anforderungen", + "Concurrent Requests": "Anzahl gleichzeitiger Anfragen", "Confirm": "Bestätigen", "Confirm Password": "Passwort bestätigen", "Confirm your action": "Bestätigen Sie Ihre Aktion.", "Connections": "Verbindungen", "Contact Admin for WebUI Access": "Kontaktieren Sie den Administrator für den Zugriff auf die Weboberfläche", "Content": "Info", - "Content Extraction": "", + "Content Extraction": "Inhaltsextraktion", "Context Length": "Kontextlänge", "Continue Response": "Antwort fortsetzen", "Continue with {{provider}}": "Mit {{Anbieter}} fortfahren", @@ -191,7 +191,7 @@ "Documentation": "Dokumentation", "Documents": "Dokumente", "does not make any external connections, and your data stays securely on your locally hosted server.": "stellt keine externen Verbindungen her, und Ihre Daten bleiben sicher auf Ihrem lokal gehosteten Server.", - "Don't Allow": "Nicht erlauben", + "Don't Allow": "Verbieten", "Don't have an account?": "Haben Sie noch kein Benutzerkonto?", "Don't like the style": "schlechter Schreibstil", "Done": "Erledigt", @@ -205,7 +205,7 @@ "Edit Memory": "Erinnerungen bearbeiten", "Edit User": "Benutzer bearbeiten", "Email": "E-Mail", - "Embedding Batch Size": "Embedding Batch Größe", + "Embedding Batch Size": "Embedding-Stapelgröße", "Embedding Model": "Embedding-Modell", "Embedding Model Engine": "Embedding-Modell-Engine", "Embedding model set to \"{{embedding_model}}\"": "Embedding-Modell auf \"{{embedding_model}}\" gesetzt", @@ -213,21 +213,21 @@ "Enable Community Sharing": "Community-Freigabe aktivieren", "Enable New Sign Ups": "Registrierung erlauben", "Enable Web Search": "Websuche aktivieren", - "Engine": "", + "Engine": "Engine", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Stellen Sie sicher, dass Ihre CSV-Datei 4 Spalten in dieser Reihenfolge enthält: Name, E-Mail, Passwort, Rolle.", "Enter {{role}} message here": "Geben Sie die {{role}}-Nachricht hier ein", "Enter a detail about yourself for your LLMs to recall": "Geben Sie ein Detail über sich selbst ein, das Ihre Sprachmodelle (LLMs) sich merken sollen", "Enter api auth string (e.g. username:password)": "Geben Sie die API-Authentifizierungszeichenfolge ein (z. B. Benutzername:Passwort)", "Enter Brave Search API Key": "Geben Sie den Brave Search API-Schlüssel ein", - "Enter Chunk Overlap": "Gib den Chunk Overlap ein", - "Enter Chunk Size": "Gib die Chunk Size ein", + "Enter Chunk Overlap": "Geben Sie die Blocküberlappung ein", + "Enter Chunk Size": "Geben Sie die Blockgröße ein", "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", - "Enter Image Size (e.g. 512x512)": "Gib die Bildgröße ein (z.B. 512x512)", + "Enter Image Size (e.g. 512x512)": "Geben Sie die Bildgröße ein (z. B. 512x512)", "Enter language codes": "Geben Sie die Sprachcodes ein", - "Enter model tag (e.g. {{modelTag}})": "Gib den Model-Tag ein", - "Enter Number of Steps (e.g. 50)": "Gib die Anzahl an Schritten ein (z.B. 50)", + "Enter model tag (e.g. {{modelTag}})": "Gebn Sie den Model-Tag ein", + "Enter Number of Steps (e.g. 50)": "Geben Sie die Anzahl an Schritten ein (z. B. 50)", "Enter Score": "Punktzahl eingeben", "Enter Searxng Query URL": "Geben Sie die Searxng-Abfrage-URL ein", "Enter Serper API Key": "Geben Sie den Serper-API-Schlüssel ein", @@ -235,7 +235,7 @@ "Enter Serpstack API Key": "Geben Sie den Serpstack-API-Schlüssel ein", "Enter stop sequence": "Stop-Sequenz eingeben", "Enter Tavily API Key": "Geben Sie den Tavily-API-Schlüssel ein", - "Enter Tika Server URL": "", + "Enter Tika Server URL": "Geben Sie die Tika-Server-URL ein", "Enter Top K": "Geben Sie Top K ein", "Enter URL (e.g. http://127.0.0.1:7860/)": "Geben Sie die URL ein (z. B. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Geben Sie die URL ein (z. B. http://localhost:11434)", @@ -300,7 +300,7 @@ "Image Generation Engine": "Bildgenerierungs-Engine", "Image Settings": "Bildeinstellungen", "Images": "Bilder", - "Import Chats": "Chats importieren", + "Import Chats": "Unterhaltungen importieren", "Import Documents Mapping": "Dokumentenzuordnung importieren", "Import Functions": "Funktionen importieren", "Import Models": "Modelle importieren", @@ -315,7 +315,7 @@ "Interface": "Benutzeroberfläche", "Invalid Tag": "Ungültiger Tag", "January": "Januar", - "join our Discord for help.": "Trete unserem Discord bei, um Hilfe zu erhalten.", + "join our Discord for help.": "Treten Sie unserem Discord bei, um Hilfe zu erhalten.", "JSON": "JSON", "JSON Preview": "JSON-Vorschau", "July": "Juli", @@ -345,7 +345,7 @@ "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Es können maximal 3 Modelle gleichzeitig heruntergeladen werden. Bitte versuchen Sie es später erneut.", "May": "Mai", "Memories accessible by LLMs will be shown here.": "Erinnerungen, die für Modelle zugänglich sind, werden hier angezeigt.", - "Memory": "Erinnerung", + "Memory": "Erinnerungen", "Memory added successfully": "Erinnerung erfolgreich hinzugefügt", "Memory cleared successfully": "Erinnerung erfolgreich gelöscht", "Memory deleted successfully": "Erinnerung erfolgreich gelöscht", @@ -377,7 +377,7 @@ "Name": "Name", "Name Tag": "Namens-Tag", "Name your model": "Benennen Sie Ihr Modell", - "New Chat": "Neuer Chat", + "New Chat": "Neue Unterhaltung", "New Password": "Neues Passwort", "No content to speak": "Kein Inhalt zum Vorlesen", "No documents found": "Keine Dokumente gefunden", @@ -412,7 +412,7 @@ "Open": "Öffne", "Open AI (Dall-E)": "Open AI (Dall-E)", "Open new chat": "Neuen Chat öffnen", - "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "", + "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Die installierte Open-WebUI-Version (v{{OPEN_WEBUI_VERSION}}) ist niedriger als die erforderliche Version (v{{REQUIRED_VERSION}})", "OpenAI": "OpenAI", "OpenAI API": "OpenAI-API", "OpenAI API Config": "OpenAI-API-Konfiguration", @@ -428,8 +428,8 @@ "Permission denied when accessing microphone": "Zugriff auf das Mikrofon verweigert", "Permission denied when accessing microphone: {{error}}": "Zugriff auf das Mikrofon verweigert: {{error}}", "Personalization": "Personalisierung", - "Pin": "", - "Pinned": "", + "Pin": "Anheften", + "Pinned": "Angeheftet", "Pipeline deleted successfully": "Pipeline erfolgreich gelöscht", "Pipeline downloaded successfully": "Pipeline erfolgreich heruntergeladen", "Pipelines": "Pipelines", @@ -447,7 +447,7 @@ "Prompt suggestions": "Prompt-Vorschläge", "Prompts": "Prompts", "Pull \"{{searchValue}}\" from Ollama.com": "\"{{searchValue}}\" von Ollama.com beziehen", - "Pull a model from Ollama.com": "Modell von Ollama.com beziehn", + "Pull a model from Ollama.com": "Modell von Ollama.com beziehen", "Query Params": "Abfrageparameter", "RAG Template": "RAG-Vorlage", "Read Aloud": "Vorlesen", @@ -489,10 +489,10 @@ "Search Functions": "Funktionen durchsuchen...", "Search Models": "Modelle durchsuchen...", "Search Prompts": "Prompts durchsuchen...", - "Search Query Generation Prompt": "Suchanfragen-Generierungs-Prompt", - "Search Query Generation Prompt Length Threshold": "Suchanfragen-Generierungs-Prompt-Längenschwellenwert", + "Search Query Generation Prompt": "Suchanfragengenerierungsvorlage", + "Search Query Generation Prompt Length Threshold": "Längenschwelle für Suchanfragengenerierung", "Search Result Count": "Anzahl der Suchergebnisse", - "Search Tools": "Suchwerkzeuge", + "Search Tools": "Werkzeuge durchsuchen...", "Searched {{count}} sites_one": "{{count}} Seite durchsucht", "Searched {{count}} sites_other": "{{count}} Seiten durchsucht", "Searching \"{{searchQuery}}\"": "Suche nach \"{{searchQuery}}\"", @@ -579,22 +579,22 @@ "This setting does not sync across browsers or devices.": "Diese Einstellung wird nicht zwischen Browsern oder Geräten synchronisiert.", "This will delete": "Dies löscht", "Thorough explanation": "Ausführliche Erklärung", - "Tika": "", - "Tika Server URL required.": "", + "Tika": "Tika", + "Tika Server URL required.": "Tika-Server-URL erforderlich.", "Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Tipp: Aktualisieren Sie mehrere Variablenfelder nacheinander, indem Sie nach jedem Ersetzen die Tabulatortaste im Eingabefeld der Unterhaltung drücken.", "Title": "Titel", "Title (e.g. Tell me a fun fact)": "Titel (z. B. Erzähl mir einen lustigen Fakt)", - "Title Auto-Generation": "Automatische Titelerstellung", + "Title Auto-Generation": "Unterhaltungstitel automatisch generieren", "Title cannot be an empty string.": "Titel darf nicht leer sein.", - "Title Generation Prompt": "Titelerstellung-Prompt", + "Title Generation Prompt": "Prompt für Titelgenerierung", "to": "für", "To access the available model names for downloading,": "Um auf die verfügbaren Modellnamen zuzugreifen,", "To access the GGUF models available for downloading,": "Um auf die verfügbaren GGUF-Modelle zuzugreifen,", - "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Um auf das WebUI zugreifen zu könnrn, wenden Sie sich bitte an einen Administrator. Administratoren können den Benutzerstatus über das Admin-Panel verwalten.", + "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Um auf das WebUI zugreifen zu können, wenden Sie sich bitte an einen Administrator. Administratoren können den Benutzerstatus über das Admin-Panel verwalten.", "To add documents here, upload them to the \"Documents\" workspace first.": "Um Dokumente hinzuzufügen, laden Sie sie zuerst im Arbeitsbereich „Dokumente“ hoch.", "to chat input.": "zum Eingabefeld der Unterhaltung.", - "To select filters here, add them to the \"Functions\" workspace first.": "Um Filter auszuwählen, fügen Sie diese zuerst dem Arbeitsbereich „Funktionen“ hinzu.", - "To select toolkits here, add them to the \"Tools\" workspace first.": "Um Toolkits auszuwählen, fügen Sie sie zuerst zum Arbeitsbereich „Werkzeuge“ hinzu.", + "To select filters here, add them to the \"Functions\" workspace first.": "Um Filter auszuwählen, fügen Sie diese zunächst dem Arbeitsbereich „Funktionen“ hinzu.", + "To select toolkits here, add them to the \"Tools\" workspace first.": "Um Toolkits auszuwählen, fügen Sie sie zunächst dem Arbeitsbereich „Werkzeuge“ hinzu.", "Today": "Heute", "Toggle settings": "Einstellungen umschalten", "Toggle sidebar": "Seitenleiste umschalten", @@ -611,11 +611,11 @@ "TTS Settings": "TTS-Einstellungen", "TTS Voice": "TTS-Stimme", "Type": "Art", - "Type Hugging Face Resolve (Download) URL": "Gib die Hugging Face Resolve (Download) URL ein", + "Type Hugging Face Resolve (Download) URL": "Geben Sie die Hugging Face Resolve-URL ein", "Uh-oh! There was an issue connecting to {{provider}}.": "Ups! Es gab ein Problem bei der Verbindung mit {{provider}}.", "UI": "Oberfläche", "Unknown file type '{{file_type}}'. Proceeding with the file upload anyway.": "Unbekannter Dateityp '{{file_type}}'. Der Datei-Upload wird trotzdem fortgesetzt.", - "Unpin": "", + "Unpin": "Lösen", "Update": "Aktualisieren", "Update and Copy Link": "Aktualisieren und Link kopieren", "Update password": "Passwort aktualisieren", @@ -654,7 +654,7 @@ "Web Search Engine": "Suchmaschine", "Webhook URL": "Webhook URL", "WebUI Settings": "WebUI-Einstellungen", - "WebUI will make requests to": "Wenn aktiviert sendet WebUI externe Anfragen an", + "WebUI will make requests to": "WebUI sendet Anfragen an:", "What’s New in": "Neuigkeiten von", "When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Wenn der Verlauf deaktiviert ist, werden neue Unterhaltungen in diesem Browser nicht im Verlauf Ihrer anderen Geräte erscheinen.", "Whisper (Local)": "Whisper (lokal)",