9.4 Open WebUI für Ollama
Egal, ob Sie Ollama für allgemeine Prompts oder für den Einsatz in der Entwicklung nutzen möchten, der Weg über die Kommandozeile ist wahrscheinlich nicht der komfortabelste. Deshalb gibt es einige Möglichkeiten, die Plattform mit einem ansprechenden und benutzerfreundlichen Frontend auszustatten. Eines der populärsten ist Open WebUI, früher auch bekannt als Ollama WebUI.
Wie die Namensänderung vermuten lässt, wurde Open WebUI ursprünglich als Frontend für Ollama entwickelt. Das Projekt unterstützt jedoch nicht nur Ollama, sondern jeden LLM-Runner mit einer OpenAI-kompatiblen API. Open WebUI bietet einige Funktionen, die es nicht nur für den lokalen Betrieb, sondern auch für die Installation in Unternehmen interessant machen:
-
Einfache Installation: Die Kernidee ist, dass Sie Open WebUI selbst hosten. Wie Ollama bietet auch Open WebUI zahlreiche Installationsmöglichkeiten. Die wahrscheinlich einfachste und sauberste Methode führt über das offizielle Docker-Image des Projekts. Doch zur Installation später mehr.
-
Moderne UI: Die Benutzeroberfläche ist stark an die Weboberfläche von ChatGPT angelehnt und wird als responsive PWA (progressive Web-App) ausgeliefert. Das bedeutet, dass Sie die Webseite auf jedem Gerät verwenden können und sie sich an verschiedene Auflösungen anpasst. Außerdem können Sie die Webseite auf Ihrem Gerät installieren, sodass Sie keinen Unterschied zwischen einer nativen App und der Webseite mehr bemerken.
-
Erstellung von Modellen: Mit Open WebUI erhalten Sie eine grafische Oberfläche, mit der Sie benutzerdefinierte Modelle für Ollama generieren können.
-
Lokale RAG-Integration: Open WebUI ermöglicht es Ihnen, ähnlich wie GPT4All, Ihre eigenen Dokumente über RAG (Retrieval-Augmented Generation) in Ihre Prompts zu integrieren.
-
Web-Suche für RAG: Zusätzlich zum RAG-Feature mit lokalen Dokumenten können Sie Ihrer lokalen KI auch Zugriff auf das Internet geben und die Ergebnisse der Anfragen mit den Suchergebnissen aus dem Internet anreichern.
-
Bild-Generierung: Open WebUI unterstützt die Integration von Bildgeneratoren wie ComfyUI oder DALL-E.
-
Modellübergreifende Chats: Sie können mehrere Modelle gleichzeitig in einem Prompt zusammenfassen und dabei ihre individuellen Stärken nutzen.
-
Rollenbasierte Zugriffskontrolle: Ein Feature, das Open WebUI besonders im größeren Kontext interessant macht, ist die Unterstützung von Role-Based Access Control (RBAC). Damit können Sie bestimmten Personen Zugriff auf die Oberfläche gewähren und andere ausschließen.
Installation von Open WebUI
In der Dokumentation empfiehlt Open WebUI die Installation als Container. Voraussetzung dafür ist, dass Sie eine Container-Plattform auf Ihrem System installiert haben. Es gibt ein Docker-Image für Open WebUI, das Sie mit dem folgenden Kommando als Container starten können:
docker run -d -p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
Sobald der Container gestartet ist, können Sie über http://localhost:3000 die Weboberfläche von Open WebUI erreichen. Standardmäßig ist die Anmeldung für Benutzer aktiviert. Möchten Sie das Werkzeug im Single-User-Modus nutzen und auf eine Anmeldung verzichten, können Sie dieses Feature über die Umgebungsvariable WEBUI_AUTH mit dem Wert False deaktivieren. Nutzen Sie den Standardmodus, sehen Sie beim ersten Aufruf der Oberfläche zunächst eine Anmeldemaske. Über den Link Sign up können Sie ein erstes Benutzerkonto anlegen; dieses ist automatisch aktiviert und hat Admin-Privilegien.
Abbildung 9.2 Weboberfläche von Open WebUI
Bevor Sie mit dem Prompting beginnen, müssen Sie sicherstellen, dass Ollama als Backend gestartet und erreichbar ist. Führen Sie beide Anwendungen in separaten Docker-Containern aus, funktioniert die Kommunikation in der Regel ohne weitere Anpassungen. Über das Dropdown-Menü Select a model können Sie dann eines der von Ollama bereitgestellten Modelle auswählen. Mit einem Klick auf Set as default legen Sie dieses Modell als Standard für alle weiteren Sessions fest und müssen es nicht jedes Mal erneut auswählen.
Mit der Kombination aus Ollama und Open WebUI sind Sie unabhängig von KI-Anbietern wie OpenAI, Google oder Anthropic. Ihre Daten verbleiben auf Ihrem System, und Sie können die Leistungsfähigkeit Ihres Systems steuern, abhängig davon, wie viele lokale Ressourcen Sie investieren. Modelle wie die 405B-Variante von Llama 3.1 müssen sich nicht hinter den großen kommerziellen Anbietern verstecken, erfordern jedoch extrem viel Speicherplatz, RAM und Rechenleistung.
Dank der grafischen Oberfläche von Open WebUI ist die Bedienung der Dienste sehr komfortabel. In den folgenden Abschnitten erfahren Sie mehr über die Möglichkeiten, die Ihnen die Kombination aus Ollama und Open WebUI bietet.
Eigene Dokumente in Open WebUI verwenden
Nutzen Sie LLMs für die Entwicklung, sind insbesondere die Ergebnisse von Prompts zu allgemeinen Fragestellungen beeindruckend. Je spezieller die Fragestellungen jedoch werden, desto größer wird die Wahrscheinlichkeit, dass die KI einmal danebenliegt. Im besten Fall gesteht sie dies ein und teilt Ihnen mit, dass sie am Ende ihres Wissens angelangt ist. Wahrscheinlicher ist aber, dass Sie ganz einfach eine falsche Antwort erhalten.
Mit Retrieval Augmented Generation (RAG) können Sie der KI jedoch helfen und ihr spezifisches Fachwissen vermitteln. Eine Variante davon haben Sie bereits mit den LocalDocs von GPT4All kennengelernt, und Kapitel 12, »Retrieval Augmented Generation (RAG) und Text-to-SQL«, dieses Buchs beschäftigt sich noch ausführlicher mit diesem Thema. Auch Open WebUI bietet Ihnen die Möglichkeit, Ihre eigenen Dokumente hochzuladen und die Antworten auf Ihre Prompts damit zu bereichern. Sie können beispielsweise Handbücher und Dokumentationen von Frameworks, Bibliotheken oder Programmiersprachen hochladen, spezifische Problemstellungen prompten und eine passende Antwort erhalten.
Um RAG in Open WebUI verwenden zu können, müssen Sie zunächst ein oder mehrere Dokumente hochladen. Dazu navigieren Sie zu Workspace und wählen den Tab Documents aus. Anfangs sehen Sie hier eine leere Liste, da noch keine Dokumente vorhanden sind. Über den Plus-Button können Sie Dokumente hochladen. Open WebUI arbeitet mit Tags für Dokumente und Kollektionen. Jedes Dokument erhält ein individuelles Namens-Tag, über das Sie darauf verweisen können. Außerdem können Sie jedem Dokument eine beliebige Anzahl von Tags zuweisen. Dokumente mit denselben Tags werden zu sogenannten Kollektionen zusammengefasst. Sobald Sie mindestens ein Dokument hochgeladen haben, können Sie in einem Prompt als erstes Zeichen die Raute (#) eingeben. Open WebUI gibt Ihnen dann über ein Dropdown-Menü eine Auswahl der vorhandenen Tags, deren Dokumente Sie in die aktuelle Session integrieren können.
Das RAG-Feature von Open WebUI unterstützt eine Vielzahl von Dateiformaten, darunter Textdateien wie Quellcode-Dateien, Markdown, XML, Excel, PDF oder EPUB. Intern verarbeitet Open WebUI diese Dateien über verschiedene Loader.
Über das Admin-Panel, das Sie über die Einstellungen des Admin-Users erreichen, können Sie das RAG-Feature unter dem Punkt Documents konfigurieren. Hier legen Sie fest, welche Embedding-Model-Engine verwendet werden soll. Der Standard ist SentenceTransformers. Dabei handelt es sich um eine Python-Bibliothek, die Sätze und Textfragmente in Vektoren (Embeddings) umwandelt. Auf diesen Vektoren basiert dann die RAG.
Die RAG-Funktionalität von Open WebUI ist nicht auf lokale Dokumente beschränkt. Anstelle eines Tags, das auf ein Dokument verweist, können Sie im Prompt nach der Raute (#) auch eine URL zu einer Webseite angeben und den vorgeschlagenen Link auswählen. Die Anwendung liest dann die Seite ein und nutzt deren Struktur, um eine Antwort zu erzeugen. Ein Beispiel für einen solchen webbasierten Prompt könnte folgendermaßen aussehen:
Prompt: #https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/
Global_Objects/TypedArray
Is it possible to freeze a TypedArray?
No, it is not possible to freeze a TypedArray. According to the rules, TypedArrays that aren’t empty cannot be frozen.
Mit der Antwort erhalten Sie zusätzliche Informationen darüber, wo in der Quelle die Information gefunden wurde.
Wenn Sie auf Webseiten verweisen, sollten Sie darauf achten, dass diese möglichst viel strukturierten Text enthalten, da Open WebUI diesen verarbeitet und für die Antworten verwendet. Idealerweise bietet die Webseite eine separate Leseansicht, da diese sich am besten für die webbasierte RAG eignet.
Die Qualität der Ergebnisse hängt stark vom verwendeten Modell ab. Nutzen Sie ein kleines Modell mit einer geringen Anzahl von Parametern, wie die 8B-Variante von Llama 3.1, erhalten Sie qualitativ deutlich schlechtere Ergebnisse als mit der 405B-Variante des Modells.
Die Möglichkeit, in Dokumenten und auf Webseiten zu suchen, ist besonders beim Nachschlagen in der Dokumentation sehr hilfreich und kann Ihren Entwicklungsprozess erheblich beschleunigen. Das Risiko, falsche Antworten zu erhalten, ist ebenfalls geringer, da Open WebUI auch die Referenzen mitliefert und Sie die entsprechende Textstelle in der Dokumentation überprüfen können.
Eigene Workspace Models
Die LLM-Modelle spielen sowohl in Ollama als auch in Open WebUI eine herausragende Rolle; ohne sie sind beide Werkzeuge nahezu nutzlos. Deshalb ist die Verwaltung der Modelle von großer Bedeutung. Open WebUI erleichtert die Arbeit mit den Modellen, indem es eine grafische Oberfläche bereitstellt, über die Sie verschiedene Operationen durchführen können. Die Modellverwaltung erreichen Sie über die Navigation in der linken Spalte der Oberfläche und den Punkt Workspace. Der erste Tab des Workspaces widmet sich den Modellen. Hier sehen Sie standardmäßig die Liste der im verbundenen Ollama installierten Modelle. Sie können ein bestehendes Modell klonen, bearbeiten oder löschen. Zusätzlich können Sie ein neues Modell erstellen oder eines der Community-Modelle herunterladen.
Möchten Sie ein vollständig neues Modell integrieren, funktioniert das nicht über den Workspace. Stattdessen müssen Sie über das Admin-Panel, den Tab Settings und dann Models gehen. Hier können Sie über Pull a model from Ollama.com eines der offiziellen Modelle aus der Ollama-Bibliothek laden. Beispielsweise können Sie phi3:medium eingeben, und Open WebUI veranlasst Ollama, das Phi-3-Modell in seiner 14B-Variante herunterzuladen. Sobald dieser Prozess abgeschlossen ist, können Sie das Modell sowohl in Ollama als auch in Open WebUI verwenden.
Eine weitere Möglichkeit, ein neues Modell zu integrieren, führt über die GGUF-Datei eines Modells, die Sie herunterladen können. GGUF steht für Grokking Generative Universal Format und ist ein Dateiformat zur Speicherung und zum Austausch von LLMs. Aktuell ist der Import von GGUF-Dateien noch hinter dem Punkt Experimental in der Model-Sektion des Admin-Panels verborgen. Liegt Ihnen die GGUF-Datei eines Modells, beispielsweise von Gemma2, lokal auf Ihrem System vor, können Sie diese Datei über den Upload-Button hochladen und das Modell in Ollama integrieren. Diese Variante ist besonders für Modelle interessant, die nicht Bestandteil der Ollama-Bibliothek sind. Eine Liste von vorgefertigten GGUF-Dateien, die Sie verwenden können, finden Sie auf Hugging Face:
https://huggingface.co/models?search=gguf
Egal, wie Sie ein Modell in Ollama integrieren, mit Open WebUI können Sie es für Ihre Zwecke anpassen. Dazu bearbeiten Sie entweder ein existierendes Modell im Workspace oder erzeugen dort ein neues Modell auf Basis eines bestehenden Ollama-Modells. Dabei können Sie folgende Felder verwenden:
-
Name und Model ID: Diese beiden Felder identifizieren Ihr Modell.
-
Base Model (From): Hier können Sie das zugrunde liegende Modell auswählen. In diesem Dropdown-Menü stehen alle auf Ihrem lokalen Ollama installierten Modelle zur Auswahl.
-
Description: Hier können Sie eine Beschreibung eingeben, die Ihr benutzerdefiniertes Modell näher beschreibt.
-
System Prompt: Mit dem System-Prompt können Sie Anweisungen hinterlegen, die bei der Interaktion über die Chatoberfläche nicht sichtbar sind, aber das Verhalten des Modells beeinflussen. Beispiele für solche System-Prompts sind:
-
Verwende eine formelle Sprache.
-
Ignoriere bestimmte Anfragen.
-
Priorisiere technische Genauigkeit.
-
-
Advanced Params: Diese Sektion gibt Ihnen eine sehr feine Kontrolle über verschiedene Aspekte des Modells. Hier können Sie beispielsweise die Sampling-Temperatur konfigurieren und damit festlegen, ob die Ausgabe zufälliger oder fokussierter sein soll, oder die Größe des Kontexts einstellen.
-
Prompt Suggestions: Mit den Prompt Suggestions können Sie einen oder mehrere Vorschläge für Prompts hinterlegen. Ein Beispiel für eine solche Prompt Suggestion könnte sein »How do I implement a debounce function in JavaScript?«. Diese Vorschläge werden Ihnen angezeigt, wenn Sie eine neue Session mit Ihrem Modell starten.
-
Knowledge, Tools, Filters, Actions: Diese Punkte bezeichnen Open-WebUI-spezifische Erweiterungen für Ihr Modell.
-
Knowledge steht beispielsweise für lokale Dokumente, die Sie Ihrem Modell standardmäßig zur Verfügung stellen möchten. So können Sie ein Modell erzeugen, das sich auf Clean Code und Architektur spezialisiert. In diesem Fall können Sie passende Dokumente integrieren.
-
Tools stehen für verschiedenste Hilfsmittel für Ihre Chats, wie die Websuche oder API-Interaktionen.
-
Filters können Sie nutzen, um Aktionen auf die Nachrichten Ihrer Benutzer oder des Modells anzuwenden. Damit können Sie beispielsweise bestimmte Nachrichten unterbinden, Nachrichten automatisch übersetzen oder die Anzahl der Nachrichten limitieren.
-
Actions stehen schließlich für Buttons in der Nachrichtenleiste für Ihre Endnutzer. Über diese Buttons können Ihre Benutzer bestimmte Aktionen wie das Formatieren von Code ausführen lassen.
-
-
Capabilities: Als mögliche Auswahl steht Ihnen hier die Option Vision zur Verfügung, die Sie aktivieren oder deaktivieren können. Die Option steht für die Fähigkeit des Modells, visuelle Informationen zu verarbeiten und zu interpretieren.
-
Tags: Mit den Tags können Sie kompakte Metainformationen für Ihr Modell hinzufügen.
Die Konfiguration Ihres Modells können Sie als JSON-Struktur exportieren, um ein Backup zu erstellen oder das vorkonfigurierte Modell mit anderen Personen zu teilen. Der folgende Code ist ein Beispiel für einen solchen Modell-Export:
[
{
"id": "code-assistant",
"name": "Code Assistant",
"object": "model",
"created": 1723984665,
"owned_by": "ollama",
"info": {
"id": "code-assistant",
"user_id": "befb1b0f-171a-41d8-b955-5283e2e45582",
"base_model_id": "llama3.1:latest",
"name": "Code Assistant",
"params": {
"system": "You are a Code Assistant, a developer's expert
tool. Provide clear, best-practice code, technical
advice, and debugging help for languages like JavaScript,
TypeScript, and Python. Keep responses concise and
implementation-ready.",
"num_ctx": 4096
},
"meta": {
"profile_image_url": "/static/favicon.png",
"description": "A model that is specialised to assist
you in your daily coding work.",
"capabilities": {
"vision": false
},
"suggestion_prompts": [
{
"content": "Generate a REST API endpoint in Node.js
using Express."
},
{
"content": "How do I optimize a SQL query for faster
performance?"
},
{
"content": "Write a Python script to parse JSON
data."
}
]
},
"updated_at": 1723984665,
"created_at": 1723984665
},
"preset": true,
"actions": []
}
]
Der große Vorteil der Kombination aus Open WebUI und Ollama gegenüber den populären Online-Diensten ist, dass Ihre Daten Ihr System nicht verlassen und Sie die gesamte Umgebung sowie alle Aspekte des Modells und der Interaktion vollständig unter Kontrolle haben. Wie Sie am Beispiel der Modellkonfiguration gesehen haben, können Sie sehr tief in das System eingreifen und es ganz nach Ihren Anforderungen konfigurieren.