跳到主要内容
警告

本教程是社区贡献,不受 Open WebUI 团队支持。它仅用作演示如何为您的特定用例自定义 Open WebUI。想贡献?请查看贡献教程。

[!警告] 本文档基于当前版本 (0.5.16) 创建,并持续更新。

Jupyter Notebook 集成

从 v0.5.11 版本开始,Open-WebUI 发布了一个新功能,称为 `Code Interpreter 中的 Jupyter Notebook 支持`。此功能允许您将 Open-WebUI 与 Jupyter 集成。在后续版本中,此功能已经进行了几次改进,请仔细查阅发布说明。

本教程将引导您完成设置两个服务之间连接的基础步骤。

什么是 Jupyter Notebook

Jupyter Notebook 是一个开源的 Web 应用程序,允许用户创建和共享包含实时代码、方程式、可视化图表和叙述性文本的文档。它在数据科学、科学计算和教育领域特别受欢迎,因为它使用户可以将可执行代码(使用 Python、R 或 Julia 等语言)与解释性文本、图像和交互式可视化图表结合在一个文档中。Jupyter Notebook 特别适用于数据分析和探索,因为它允许用户以小而易于管理的块执行代码,同时记录其思维过程和发现。这种格式使得实验、调试代码以及创建全面且可共享的报告变得容易,这些报告既展示了分析过程,也展示了结果。

在 Jupyter 的网站上查看更多信息:Project Juptyer

步骤 0:配置摘要

这是我们将在本教程中设置的目标配置。

Code Execution Configuration

步骤 1:启动 OUI 和 Jupyter

为了实现这一点,我使用 `docker-compose` 启动了一个包含这两个服务以及我的 LLM 的堆栈,但如果单独运行每个 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`。

Code Execution Configuration

步骤 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` 文件夹。

Code Execution Configuration

创建 CSV

让我们运行第一个提示词。请确保您已选择“代码执行”按钮。

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

我们可以看到 CSV 文件已创建,现在可以在 Jupyter 中访问。

Code Execution Configuration

创建可视化图表

让我们运行第二个提示词。再次强调,请确保您已选择“代码执行”按钮。

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

Code Execution Configuration

我们可以看到可视化图表已创建,现在可以在 Jupyter 中访问。

Code Execution Configuration

创建 Notebook

让我们一起运行最后一个提示词。在这个提示词中,我们将仅使用提示词创建一个全新的 Notebook。

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

Code Execution Configuration

我们可以看到可视化图表已创建,现在可以在 Jupyter 中访问。

Code Execution Configuration

关于工作流程的说明

在测试此功能时,我多次注意到 Open-WebUI 不会自动将我在 Open-WebUI 中生成的代码或输出保存到我的 Jupyter 实例。为了强制它输出我创建的文件/项,我经常遵循这个两步工作流程:首先创建我想要的代码成果,然后要求它将其保存到我的 Jupyter 实例。

Code Execution Configuration

您如何使用此功能?

您正在使用代码执行功能和/或 Jupyter 吗?如果是,请联系我。我很乐意了解您如何使用它,以便我可以继续在本教程中添加此功能的其他精彩用例示例!