本教程由社区贡献,不获得 Open WebUI 团队的支持。它仅作为演示,说明如何根据您的特定用例定制 Open WebUI。想要贡献?请查看贡献教程。
[!WARNING] 本文档基于当前版本 (0.5.16) 创建,并持续更新中。
Jupyter Notebook 集成
从 v0.5.11 版本开始,Open-WebUI 发布了一项新功能,名为 代码解释器中的 Jupyter Notebook 支持
。此功能允许您将 Open-WebUI 与 Jupyter 集成。此功能在后续版本中已有多项改进,因此请仔细查阅发布说明。
本教程将引导您完成两项服务之间连接设置的基本步骤。
什么是 Jupyter Notebooks
Jupyter Notebook 是一款开源的 Web 应用程序,允许用户创建和共享包含实时代码、方程式、可视化和叙述性文本的文档。它在数据科学、科学计算和教育领域特别受欢迎,因为它使用户能够将可执行代码(如 Python、R 或 Julia 等语言)与解释性文本、图像和交互式可视化结合在一个文档中。Jupyter Notebooks 对数据分析和探索特别有用,因为它允许用户将代码分小块执行,同时沿途记录其思维过程和发现。这种格式便于实验、调试代码,并创建全面、可共享的报告,展示分析过程和结果。
更多信息请访问 Jupyter 网站:Project Juptyer
步骤 0:配置概述
以下是我们将通过本教程设置的目标配置。
步骤 1:启动 OUI 和 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 | https://:3000 |
Jupyter | https://:8888 |
访问 Jupyter 服务时,您需要使用上面定义的 JUPYTER_TOKEN
。在本教程中,我选择了一个虚拟令牌值 123456
。
步骤 2:配置 Jupyter 的代码执行
现在我们已经运行了 Open-WebUI 和 Jupyter,我们需要在 管理面板 -> 设置 -> 代码执行 中配置 Open-WebUI 的代码执行以使用 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 文件
让我们运行第一个提示。请确保您已选择“代码执行”按钮。
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
我们可以看到 CSV 文件已创建,现在可以在 Jupyter 中访问。
创建可视化
让我们运行第二个提示。同样,请确保您已选择“代码执行”按钮。
Prompt: Create several visualizations in python using matplotlib and seaborn and save them to jupyter
我们可以看到可视化已创建,现在可以在 Jupyter 中访问。
创建 Notebook
让我们一起运行最后一个提示。在此提示中,我们将仅使用一个提示来创建一个全新的 Notebook。
Prompt: Write python code to read and write json files and save it to my notebook called notebook.ipynb
我们可以看到可视化已创建,现在可以在 Jupyter 中访问。
关于工作流的说明
在测试此功能时,我多次注意到 Open-WebUI 不会自动将 Open-WebUI 中生成的代码或输出保存到我的 Jupyter 实例。为了强制它输出我创建的文件/项,我经常遵循以下两步工作流:首先创建我想要的代码工件,然后要求它将其保存到我的 Jupyter 实例。
您如何使用此功能?
您正在使用代码执行功能和/或 Jupyter 吗?如果是,请联系我们。我非常乐意了解您如何使用它,以便我能继续为本教程添加更多使用此功能的精彩示例!