Zum Hauptinhalt springen
Warnung

Dieses Tutorial ist ein Community-Beitrag und wird vom Open WebUI-Team nicht unterstützt. Es dient lediglich als Demonstration, wie Open WebUI für Ihren spezifischen Anwendungsfall angepasst werden kann. Möchten Sie beitragen? Schauen Sie sich das Tutorial zum Beitragen an.

[!WARNING] Diese Dokumentation wurde auf Basis der aktuellen Version (0.5.16) erstellt und wird ständig aktualisiert.

Jupyter Notebook Integration

Seit v0.5.11 bietet Open-WebUI eine neue Funktion namens Jupyter Notebook Support in Code Interpreter. Diese Funktion ermöglicht die Integration von Open-WebUI mit Jupyter. In den nachfolgenden Versionen gab es bereits mehrere Verbesserungen an dieser Funktion, daher sollten Sie die Release Notes sorgfältig prüfen.

Dieses Tutorial führt Sie durch die Grundlagen der Einrichtung der Verbindung zwischen den beiden Diensten.

Was sind Jupyter Notebooks

Jupyter Notebook ist eine Open-Source-Webanwendung, die es Benutzern ermöglicht, Dokumente mit Live-Code, Gleichungen, Visualisierungen und erläuterndem Text zu erstellen und zu teilen. Sie ist besonders beliebt in den Bereichen Data Science, wissenschaftliches Rechnen und Bildung, da sie es Benutzern ermöglicht, ausführbaren Code (in Sprachen wie Python, R oder Julia) mit erklärendem Text, Bildern und interaktiven Visualisierungen in einem einzigen Dokument zu kombinieren. Jupyter Notebooks sind besonders nützlich für die Datenanalyse und -exploration, da sie es Benutzern ermöglichen, Code in kleinen, überschaubaren Abschnitten auszuführen und dabei ihre Denkprozesse und Ergebnisse zu dokumentieren. Dieses Format erleichtert das Experimentieren, das Debuggen von Code und die Erstellung umfassender, teilbarer Berichte, die sowohl den Analyseprozess als auch die Ergebnisse demonstrieren.

Weitere Informationen finden Sie auf der Website von Jupyter unter: Project Juptyer

Schritt 0: Konfigurationsübersicht

Hier ist die Zielkonfiguration, die wir im Rahmen dieses Tutorials einrichten werden.

Code Execution Configuration

Schritt 1: OUI und Jupyter starten

Um dies zu erreichen, habe ich docker-compose verwendet, um einen Stack zu starten, der beide Dienste zusammen mit meinen LLMs enthält. Dies sollte jedoch auch funktionieren, wenn die einzelnen Docker-Container separat ausgeführt werden.

docker-compose.yml
version: "3.8"

services:
open-webui:
image: ghcr.io/open-webui/open-webui:latest
container_name: open-webui
ports:
- "3000:8080"
volumes:
- open-webui:/app/backend/data

jupyter:
image: jupyter/minimal-notebook:latest
container_name: jupyter-notebook
ports:
- "8888:8888"
volumes:
- jupyter_data:/home/jovyan/work
environment:
- JUPYTER_ENABLE_LAB=yes
- JUPYTER_TOKEN=123456

volumes:
open-webui:
jupyter_data:

Sie können den obigen Stack starten, indem Sie den folgenden Befehl im Verzeichnis ausführen, in dem die docker-compose-Datei gespeichert ist.

docker-compose ausführen
docker-compose up -d

Sie sollten nun über die folgenden URLs auf beide Dienste zugreifen können.

DienstURL
Open-WebUIhttps://:3000
Jupyterhttps://:8888

Beim Zugriff auf den Jupyter-Dienst benötigen Sie das oben definierte JUPYTER_TOKEN. Für dieses Tutorial habe ich den Dummy-Token-Wert 123456 gewählt.

Code Execution Configuration

Schritt 2: Codeausführung für Jupyter konfigurieren

Nachdem wir nun Open-WebUI und Jupter ausgeführt haben, müssen wir die Codeausführung von Open-WebUI konfigurieren, um Jupyter unter Admin Panel -> Einstellungen -> Codeausführung zu verwenden. Da Open-WebUI diese Funktion ständig weiterentwickelt und verbessert, empfehle ich, die möglichen Konfigurationen immer in der configs.py Datei für das Neueste und Beste zu überprüfen. Ab v0.5.16 umfasst dies Folgendes:

Open-WebUI Env VarWert
ENABLE_CODE_INTERPRETERTrue
CODE_EXECUTION_ENGINEjupyter
CODE_EXECUTION_JUPYTER_URLhttp://host.docker.internal:8888
CODE_EXECUTION_JUPYTER_AUTHtoken
CODE_EXECUTION_JUPYTER_AUTH_TOKEN123456
CODE_EXECUTION_JUPYTER_TIMEOUT60
CODE_INTERPRETER_ENGINEjupyter
CODE_INTERPRETER_JUPYTER_URLhttp://host.docker.internal:8888
CODE_INTERPRETER_JUPYTER_AUTHtoken
CODE_INTERPRETER_JUPYTER_AUTH_TOKEN123456
CODE_INTERPRETER_JUPYTER_TIMEOUT60

Schritt 3: Verbindung testen

Lassen Sie uns zunächst bestätigen, was sich in unserem Jupyter-Verzeichnis befindet. Wie Sie aus der folgenden Abbildung ersehen können, haben wir nur einen leeren work-Ordner.

Code Execution Configuration

Eine CSV-Datei erstellen

Führen wir unseren ersten Prompt aus. Stellen Sie sicher, dass Sie die Schaltfläche Code Execution ausgewählt haben.

Prompt: Create two CSV files using fake data. The first CSV should be created using vanilla python and the second CSV should be created using the pandas library. Name the CSVs data1.csv and data2.csv

Code Execution Configuration

Wir können sehen, dass die CSV-Dateien erstellt wurden und nun innerhalb von Jupyter zugänglich sind.

Code Execution Configuration

Eine Visualisierung erstellen

Führen wir unseren zweiten Prompt aus. Stellen Sie auch hier sicher, dass Sie die Schaltfläche Code Execution ausgewählt haben.

Prompt: Create several visualizations in python using matplotlib and seaborn and save them to jupyter

Code Execution Configuration

Wir können sehen, dass die Visualisierungen erstellt wurden und nun innerhalb von Jupyter zugänglich sind.

Code Execution Configuration

Ein Notebook erstellen

Führen wir nun gemeinsam unseren letzten Prompt aus. In diesem Prompt erstellen wir ein komplett neues Notebook nur mit einem Prompt.

Prompt: Write python code to read and write json files and save it to my notebook called notebook.ipynb

Code Execution Configuration

Wir können sehen, dass die Visualisierungen erstellt wurden und nun innerhalb von Jupyter zugänglich sind.

Code Execution Configuration

Hinweis zum Workflow

Beim Testen dieser Funktion habe ich mehrmals festgestellt, dass Open-WebUI den in Open-WebUI generierten Code oder die Ausgabe nicht automatisch in meiner Jupyter-Instanz speicherte. Um es dazu zu zwingen, die von mir erstellte Datei/das von mir erstellte Element auszugeben, habe ich oft diesen zweistufigen Workflow befolgt, der zuerst das gewünschte Code-Artefakt erstellt und dann auffordert, es in meiner Jupyter-Instanz zu speichern.

Code Execution Configuration

Wie nutzen Sie diese Funktion?

Nutzen Sie die Codeausführungsfunktion und/oder Jupyter? Wenn ja, melden Sie sich bitte. Ich würde gerne erfahren, wie Sie sie nutzen, damit ich weitere Beispiele für andere großartige Möglichkeiten, diese Funktion zu nutzen, in dieses Tutorial aufnehmen kann!