本教程由社区贡献,不属于 Open WebUI 团队官方支持。它仅作为如何针对特定用例自定义 Open WebUI 的演示。想要贡献?请查看 贡献教程。
[!WARNING] 本文档基于当前版本 (0.5.16) 创建,并将持续更新。
Jupyter Notebook 集成
从 v0.5.11 开始,Open WebUI 发布了一项名为 代码解释器中的 Jupyter Notebook 支持 (Jupyter Notebook Support in Code Interpreter) 的新功能。此功能允许您将 Open WebUI 与 Jupyter 集成。在随后的版本中,该功能已经有了多项改进,因此请仔细查阅发布说明。
本教程将引导您完成这两个服务之间连接设置的基础知识。
什么是 Jupyter Notebooks
Jupyter Notebook 是一个开源 Web 应用程序,允许用户创建和共享包含实时代码、方程、可视化和叙述性文本的文档。它在数据科学、科学计算和教育领域特别受欢迎,因为它使用户能够将可执行代码(如 Python、R 或 Julia)与说明性文本、图像和交互式可视化结合在一个文档中。Jupyter Notebooks 对于数据分析和探索特别有用,因为它们允许用户以小的、易于管理的块执行代码,同时记录他们的思考过程和发现。这种格式使实验、调试代码以及创建展示分析过程和结果的综合、可共享报告变得容易。
更多信息请访问 Jupyter 官网:Project Jupyter
步骤 0:配置摘要
这是我们将在本教程中设置的目标配置。

步骤 1:启动 Open WebUI 和 Jupyter
为了实现这一点,我使用了 docker-compose 来启动一个包含这两个服务以及我的 LLM 的技术栈,但如果分别运行每个 Docker 容器应该也可以。
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 up -d
您现在应该可以通过以下 URL 访问这两个服务:
| 服务 | URL |
|---|---|
| Open WebUI | http://localhost:3000 |
| Jupyter | http://localhost:8888 |
访问 Jupyter 服务时,您将需要上面定义的 JUPYTER_TOKEN。在本教程中,我选择了一个虚假的令牌值 123456。

步骤 2:为 Jupyter 配置代码执行
现在我们已经运行了 Open WebUI 和 Jupyter,我们需要配置 Open WebUI 的代码执行,以便在 管理员面板 (Admin Panel) -> 设置 (Settings) -> 代码执行 (Code Execution) 下使用 Jupyter。由于 Open WebUI 不断发布和改进此功能,我建议始终在 configs.py 文件中查看最新的配置。截至 v0.5.16,配置包括:
| Open WebUI 环境变量 | 值 |
|---|---|
ENABLE_CODE_INTERPRETER | True |
CODE_EXECUTION_ENGINE | jupyter |
CODE_EXECUTION_JUPYTER_URL | http://host.docker.internal:8888 |
CODE_EXECUTION_JUPYTER_AUTH | token |
CODE_EXECUTION_JUPYTER_AUTH_TOKEN | 123456 |
CODE_EXECUTION_JUPYTER_TIMEOUT | 60 |
CODE_INTERPRETER_ENGINE | jupyter |
CODE_INTERPRETER_JUPYTER_URL | http://host.docker.internal:8888 |
CODE_INTERPRETER_JUPYTER_AUTH | token |
CODE_INTERPRETER_JUPYTER_AUTH_TOKEN | 123456 |
CODE_INTERPRETER_JUPYTER_TIMEOUT | 60 |
步骤 3:测试连接
首先,让我们确认 Jupyter 目录中有什么。如下图所示,我们只有一个空的 work 文件夹。

创建 CSV
让我们运行我们的第一个提示词。确保您已选中 代码执行 (Code Execution) 按钮。
提示词:使用虚假数据创建两个 CSV 文件。第一个 CSV 应该使用原生 Python 创建,第二个 CSV 应该使用 pandas 库创建。将 CSV 命名为 data1.csv 和 data2.csv

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

创建可视化图表
让我们运行第二个提示词。同样,确保您已选中 代码执行 (Code Execution) 按钮。
提示词:在 Python 中使用 matplotlib 和 seaborn 创建几个可视化图表,并将其保存到 Jupyter 中

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

创建 Notebook
让我们一起运行最后一个提示词。在这个提示词中,我们将仅通过提示词创建一个全新的 Notebook。
提示词:编写 Python 代码来读写 JSON 文件,并将其保存到我的名为 notebook.ipynb 的 Notebook 中

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

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

您是如何使用此功能的?
您是否正在使用代码执行功能和/或 Jupyter?如果是这样,请告诉我们。我很想听听您是如何使用它的,以便我可以继续在本教程中添加更多关于如何使用这项功能的精彩示例!