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:

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.

Weboberfläche von Open WebUI

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:

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.