Перейти к основному содержимому
warning

Этот учебник является вкладом сообщества и не поддерживается командой Open WebUI. Он служит только демонстрацией того, как настроить Open WebUI в соответствии с вашим конкретным случаем использования. Хотите внести вклад? Ознакомьтесь с обучением по внесению вклада.

[!WARNING] Эта документация была создана на основе текущей версии (0.5.16) и постоянно обновляется.

Интеграция с Jupyter Notebook

Начиная с версии v0.5.11, Open-WebUI выпустил новую функцию под названием Поддержка Jupyter Notebook в интерпретаторе кода. Эта функция позволяет интегрировать Open-WebUI с Jupyter. Уже было внесено несколько улучшений в эту функцию в последующих выпусках, поэтому внимательно изучите заметки к релизу.

Этот учебник проведёт вас через основы настройки соединения между двумя сервисами.

Что такое Jupyter Notebook

Jupyter Notebook — это веб-приложение с открытым исходным кодом, которое позволяет пользователям создавать и делиться документами с живым кодом, уравнениями, визуализациями и текстовыми пояснениями. Оно особенно популярно в области науки о данных, научных вычислений и образования, так как позволяет комбинировать выполняемый код (на языках, таких как Python, R или Julia) с пояснительным текстом, изображениями и интерактивными визуализациями в одном документе. Jupyter Notebooks особенно полезны для анализа данных и исследования, так как позволяют выполнять код небольшими порциями, одновременно документируя ход мыслей и полученные результаты. Этот формат удобен для экспериментов, отладки кода и создания подробных отчётов, демонстрирующих как процесс анализа, так и его результаты.

Подробнее на сайте Jupyter: Проект Jupyter

Шаг 0: Резюме конфигурации

Вот конфигурация, которую мы собираемся настроить в этом учебнике.

Конфигурация выполнения кода

Шаг 1: Запуск OUI и Jupyter

Для выполнения задачи я использовал docker-compose для запуска стека, который включает оба сервиса вместе с моими LLMs, но это также должно работать, если запускать каждый Docker-контейнер отдельно.

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:

Вы можете запустить вышеуказанный стек, выполнив следующую команду в каталоге, где сохранён файл docker-compose:

Запуск docker-compose
docker-compose up -d

Теперь вы сможете получить доступ к обоим сервисам по следующим URL:

СервисURL
Open-WebUIhttp://localhost:3000
Jupyterhttp://localhost:8888

При доступе к сервису Jupyter вам понадобится токен JUPYTER_TOKEN, указанный выше. Для этого учебника я выбрал примерное значение токена: 123456.

Конфигурация выполнения кода

Шаг 2: Настройка выполнения кода для Jupyter

Теперь, когда Open-WebUI и Jupyter запущены, нам нужно настроить выполнение кода Open-WebUI для использования Jupyter через Панель администратора -> Настройки -> Выполнение кода. Поскольку Open-WebUI постоянно выпускает новые версии и улучшает эту функцию, я рекомендую всегда проверять доступные конфигурации в configs.py файле для самых свежих обновлений. На момент версии v0.5.16 это включает следующее:

Переменная среды Open-WebUIЗначение
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

Шаг 3: Тестирование соединения

Для начала давайте удостоверимся, что находится в нашем каталоге Jupyter. Как видно на изображении ниже, у нас сейчас только пустая папка work.

Конфигурация выполнения кода

Создание CSV

Запустим наш первый запрос. Убедитесь, что вы выбрали кнопку Code Execution.

Запрос: Создайте два CSV файла с использованием фиктивных данных. Первый CSV должен быть создан с использованием обычного Python, а второй — с использованием библиотеки pandas. Назовите CSV файлы data1.csv и data2.csv.

Конфигурация выполнения кода

Мы видим, что CSV файлы были созданы и теперь доступны в Jupyter.

Конфигурация выполнения кода

Создание визуализации

Запустим наш второй запрос. Снова убедитесь, что вы выбрали кнопку Code Execution.

Запрос: Создайте несколько визуализаций в Python с использованием matplotlib и seaborn и сохраните их в Jupyter.

Конфигурация выполнения кода

Мы видим, что визуализации были созданы и теперь доступны в Jupyter.

Конфигурация выполнения кода

Создание ноутбука

Запустим наш последний запрос вместе. В этом запросе мы создадим абсолютно новый ноутбук, используя всего лишь запрос.

Запрос: Напишите код на Python для чтения и записи JSON файлов и сохраните его в мой ноутбук с именем notebook.ipynb.

Конфигурация выполнения кода

Мы видим, что визуализации были созданы и теперь доступны в Jupyter.

Конфигурация выполнения кода

Заметка о рабочем процессе

Во время тестирования этой функции я несколько раз замечал, что Open-WebUI не автоматически сохраняет код или вывод, созданный внутри Open-WebUI, в мой экземпляр Jupyter. Чтобы заставить систему вывести созданный файл/элемент, я часто следовал этому двухэтапному рабочему процессу, который сначала создает необходимый мне артефакт кода, а затем просит сохранить его в мой экземпляр Jupyter.

Конфигурация выполнения кода

Как вы используете эту функцию?

Вы используете функцию выполнения кода и/или Jupyter? Если да, пожалуйста, свяжитесь со мной. Мне было бы интересно узнать, как вы её используете, чтобы я мог продолжить добавлять примеры в этот учебник о других замечательных способах использования этой функции!