跳到主要内容

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

Jupyter Notebook 集成

注意

本教程由社区贡献,Open WebUI 团队不提供官方支持。它仅作为如何针对特定用例自定义 Open WebUI 的演示。想要贡献?请查看贡献教程。

自 v0.5.11 起,Open-WebUI 发布了一项名为 Jupyter Notebook Support in Code Interpreter(代码解释器中的 Jupyter Notebook 支持)的新功能。该功能允许您将 Open-WebUI 与 Jupyter 进行集成。在随后的版本中,此功能已经有了几处改进,因此请仔细阅读发布说明。

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

什么是 Jupyter Notebooks

Jupyter Notebook 是一个开源的 Web 应用程序,允许用户创建和共享包含实时代码、公式、可视化以及叙述性文本的文档。它在数据科学、科学计算和教育领域特别受欢迎,因为它允许用户在单个文档中将可执行代码(如 Python、R 或 Julia 等语言)与说明性文本、图像和交互式可视化结合起来。Jupyter Notebooks 对于数据分析和探索特别有用,因为它们允许用户在文档化自己的思考过程和发现的同时,以小而易于管理的代码块执行代码。这种格式使用户能够轻松地进行实验、调试代码,并创建能够展示分析过程和结果的全面、可共享的报告。

有关 Jupyter 的更多信息,请访问其官方网站:Project Jupyter

步骤 0:配置摘要

以下是我们将通过本教程设置的目标配置。

Code Execution Configuration

步骤 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-WebUIhttp://localhost:3000
Jupyterhttp://localhost:8888

访问 Jupyter 服务时,您需要使用上面定义的 JUPYTER_TOKEN。在本教程中,我选择了一个测试用的 Token 值 123456

Code Execution Configuration

步骤 2:为 Jupyter 配置代码执行

既然 Open-WebUI 和 Jupyter 已经运行起来,我们需要在 Admin Panel(管理面板)-> Settings(设置)-> Code Execution(代码执行)中配置 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

让我们运行我们的第一个提示词。确保您已选中 Code Execution(代码执行)按钮。

提示词:使用虚构数据创建两个 CSV 文件。第一个 CSV 应该使用原生 Python 创建,第二个 CSV 应该使用 Pandas 库创建。将这两个 CSV 分别命名为 data1.csv 和 data2.csv

Code Execution Configuration

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

Code Execution Configuration

创建可视化图表

让我们运行第二个提示词。同样地,确保您已选中 Code Execution 按钮。

提示词:在 Python 中使用 Matplotlib 和 Seaborn 创建几个可视化图表,并将其保存到 Jupyter

Code Execution Configuration

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

Code Execution Configuration

创建 Notebook

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

提示词:编写 Python 代码来读取和写入 JSON 文件,并将其保存到我的名为 notebook.ipynb 的 Notebook 中

Code Execution Configuration

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

Code Execution Configuration

关于工作流的注意事项

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

Code Execution Configuration

您是如何使用此功能的?

您是否正在使用代码执行功能和/或 Jupyter?如果是这样,请联系我们。我很想听听您是如何使用它的,以便我可以继续向本教程添加其他出色用法的示例!

This content is for informational purposes only and does not constitute a warranty, guarantee, or contractual commitment. Open WebUI is provided "as is." See your license for applicable terms.