本教程是社区贡献,不受 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:配置摘要
这是我们将在本教程中设置的目标配置。
步骤 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 | http://localhost:3000 |
Jupyter | http://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_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 吗?如果是,请联系我。我很乐意了解您如何使用它,以便我可以继续在本教程中添加此功能的其他精彩用例示例!