贡献者#

本页面旨在为有兴趣为Jupyter AI构建新功能或修改功能的人员提供信息。

如果您想构建增强Jupyter AI的应用程序,请参阅开发者指南

设计原则#

Jupyter AI的维护者已经采纳了一些原则,贡献者也应遵循这些原则。这些原则建立在Python之禅的基础上,旨在通过让用户控制其数据来赢得用户的信任。以下列表并不详尽;维护者有权解释和修订这些原则。

  1. Jupyter AI是与供应商无关的。Jupyter AI不区分可用模型,并为用户提供选择模型提供商的选项。如果某个功能无法与其他模型或提供商一起使用,则该功能可能特定于一个模型或模型提供商。

  2. Jupyter AI仅响应明确的提示;它不会监视文件,也不会自动发送提示。任何监视用户文件的更改必须是可选的。

  3. Jupyter AI对聊天提示是透明的。聊天界面和魔法命令使用开源的系统消息和提示模板,以便用户知道发送到语言模型的内容。

  4. Jupyter AI是可追溯的;用户知道何时使用它生成了内容。当Jupyter AI生成笔记本时,笔记本会说明它是由Jupyter AI生成的。当用户在笔记本中运行Jupyter AI魔法命令时,输出单元格会在其元数据中说明它们是由Jupyter AI生成的。

  5. Jupyter AI采用以人为中心的设计。聊天界面应看起来和感觉像通常可用的聊天应用程序。魔法命令应看起来并像其他IPython魔法命令一样工作。设置屏幕应尽量少用,并且在使用时,即使对于不精通用户界面语言的用户,也应易于阅读和理解。

违反上述原则的问题和拉取请求可能会被拒绝。如果您不确定您的想法是否适合Jupyter AI,请提出问题,以便我们的维护者与您讨论。

先决条件#

您可以在任何可以运行支持的Python版本(包括3.12)的系统上开发Jupyter AI,包括最新的Windows、macOS和Linux版本。

每个Jupyter AI主要版本仅与一个JupyterLab主要版本兼容。Jupyter AI 1.x支持JupyterLab 3.x,而Jupyter AI 2.x支持JupyterLab 4.x。

我们强烈建议您安装conda以开始在Jupyter AI上进行开发,特别是在基于Apple Silicon的Mac(M1、M1 Pro、M2等)上进行开发时。

您需要Node.js 18才能使用Jupyter AI。已知Node.js 18.16.0可以正常工作。

Warning

由于与Webpack的兼容性问题,Node.js 18.15.0无法与Jupyter AI一起使用。

开发安装#

在安装了先决条件后,创建一个新的conda环境并激活它。

conda create -n jupyter-ai -c conda-forge python=3.12 nodejs=20
conda activate jupyter-ai

此命令必须在monorepo的根目录(<jupyter-ai-top>)中运行。

# 移动到仓库包的根目录
cd <jupyter-ai-top>

# 安装所有依赖项并设置开发环境
./scripts/install.sh

在默认浏览器中启动并启动JupyterLab:

jlpm dev

您可以打开一个新的终端,并使用它来构建和推送对仓库的更改。在做出任何更改后,进入conda环境并构建项目。

cd <jupyter-ai-top>
conda activate jupyter-ai
jlpm build

要更改在开发环境中安装的Jupyter AI包,请使用dev-uninstall脚本:

# 卸载所有Jupyter AI包
jlpm dev-uninstall

要重新安装Jupyter AI包到开发环境中,请使用dev-install脚本:

# 安装所有Jupyter AI包
jlpm dev-install

要仅安装/卸载Jupyter AI包的子集,请使用传递给Lerna的--scope参数:

# 安装jupyter_ai_magics及其依赖项
jlpm dev-install --scope "@jupyter-ai/magics"

在服务器运行时进行更改#

如果您更改、添加或删除了魔法命令,在重新构建后,请重新启动内核或服务器。

如果您对用户界面实验室扩展进行了更改,请运行jlpm build,然后刷新浏览器标签。

构建文档#

./scripts/install.sh应自动安装文档依赖项。您还需要安装pandoc。您可以从conda-forge频道安装pandoc

conda install -c conda-forge pandoc

否则,请查看 pandoc 的安装说明

要在本地构建文档,请运行

cd docs/
make html

并打开 file://<JUPYTER-AI-ABSOLUTE-PATH>/docs/build/html/index.html,其中 <JUPYTER-AI-ABSOLUTE-PATH> 是 Jupyter AI 单体仓库在你本地文件系统中的绝对路径。将此路径添加到你选择的浏览器书签中会很有帮助,以便轻松查看本地文档构建。

在做出任何更改后,请确保通过 make html 重新构建本地文档,然后刷新浏览器以验证更改的视觉效果。

开发卸载#

要卸载你的 Jupyter AI 开发环境,请停用并移除 Conda 环境:

conda deactivate
conda env remove -n jupyter-ai

测试#

集成/端到端测试#

此扩展使用 Playwright 进行集成/端到端测试(用户级测试)。更具体地说,JupyterLab 助手 Galata 用于在 JupyterLab 中测试扩展。

安装测试依赖项(仅需一次):

cd ./packages/jupyter-ai/ui-tests/
jlpm install
jlpm playwright install

测试涉及与由 Github CI 生成的参考快照进行快照比较。如果你使用的操作系统不是 Linux,你需要在首次本地运行测试之前生成本地快照。为此,请执行以下命令:

cd ./packages/jupyter-ai/ui-tests/
jlpm test:update

要执行测试,请运行:

cd ./packages/jupyter-ai/ui-tests/
jlpm test

你可以在 ui-tests README 中找到更多信息。