Jupyter中集成Mistral和GPT-4o
展示在Jupyter中添加多个AI模型的具体实现方案。对AI编程工具集成有直接的参考和复用价值。
展示在Jupyter中添加多个AI模型的具体实现方案。对AI编程工具集成有直接的参考和复用价值。
现代、开源的 Jupyter 替代方案。立即试用 » Discord · 网站 · Issues · 联系我们
Pretzel 是 Jupyter 的一个 fork,目标是增强 Jupyter 的能力。目前,我们已经为 Jupyter 加入了 AI 代码生成与编辑、行内 Tab 补全、侧边栏聊天和错误修复等功能,未来还会推出更多功能。
从 Jupyter 切换到 Pretzel 非常简单,因为它本质上就是一个增强版 Jupyter。你现有的所有 Jupyter 配置、设置、快捷键和扩展都可以开箱即用。
安装方式:运行 pip install pretzelai,然后运行 pretzel lab 打开 Web 界面。或者使用我们的免费托管版本:pretzelai.app。如果安装过程中遇到错误,请参阅下文。
如果安装过程中遇到错误,请参阅下文。
只需开始在单元格中输入内容,即可获得行内 Tab 补全。
在任意 Jupyter 单元格中,点击“Ask AI”,或按下 Cmd+K(Mac)/ Ctrl+K(Linux/Windows),即可向 AI 输入 prompt。
使用 Ctrl+Cmd+B(Mac)或 Ctrl+Alt+B(Linux/Windows)打开 AI Sidebar,与 AI 聊天、生成代码或提出问题。
输入 @,即可触发函数名和变量名的自动补全。
如需使用自己的模型(OpenAI、Anthropic/Claude、Ollama 或 Groq),请参阅“配置”部分。
我们的路线图包括以下功能:
pip install pretzelai
如果使用 conda,请先运行 conda install pip 安装 pip,然后运行 pip install pretzelai。
接着,使用以下命令启动 Pretzel:
pretzel lab
你可以通过命令提供的 URL 访问 Pretzel 界面。
如需使用自己的 AI 模型,请参阅“配置”部分。
如果你在安装 Pretzel 时遇到问题,例如在 Windows 上,可以在 Docker 容器中运行它。
FROM python:3.9-slim
RUN apt-get update && apt-get install -y \
build-essential \
gcc \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /root/pretzel
RUN pip install pretzelai
EXPOSE 8888
CMD ["pretzel", "lab", "--ip=0.0.0.0", "--allow-root", "--notebook-dir=/root/pretzel", "--ServerApp.allow_remote_access=True", "--ServerApp.token=''", "--no-browser"]
在 Dockerfile 所在的同一文件夹中,运行 docker build -t pretzel .。
在 Dockerfile 所在的同一文件夹中,运行 docker build -t pretzel .。
要运行 Pretzel,可以执行:docker run --name pretzel -p 8888:8888 pretzel。容器启动后,可以通过 http://localhost:8888/lab 访问。要停止容器,请按 Ctrl + C,然后运行 docker stop pretzel。
要运行 Pretzel,可以执行:docker run --name pretzel -p 8888:8888 pretzel。容器启动后,可以通过 http://localhost:8888/lab 访问。要停止容器,请按 Ctrl + C,然后运行 docker stop pretzel。
如果想在 Pretzel 中访问本地文件夹,可以运行:docker run --rm -p 8888:8888 -v $(pwd):/root/pretzel pretzel。这会将当前目录映射到 Docker 容器的 /root/pretzel 文件夹。请确保 Docker 有权访问当前目录。
要将 Pretzel 更新到最新版本,只需使用 --no-cache 参数重新构建 Docker 镜像:docker build --no-cache -t pretzel .。之后便可以像第 3 步一样运行 Docker。
你可以使用这个 Dockerfile 构建并运行前沿开发版本。请按照“在 Docker 容器中运行”一节中的步骤操作,从第 2 步开始。
如果安装过程中出现类似以下内容的错误:
Failed to build installable wheels for some pyproject.toml based projects (pystemmer)
这意味着安装程序未能安装依赖项 PyStemmer。出现这种情况,通常是因为没有安装正确的构建工具。解决方法如下:
在 Windows 上:从此处安装 Microsoft Build Tools。点击 Download Build Tools 按钮,然后完成安装。
在 Ubuntu(以及基于 Debian 的系统)上:在终端中运行以下命令,安装所需的构建工具:sudo apt-get update && sudo apt-get install build-essential python3-dev
sudo apt-get update && sudo apt-get install build-essential python3-dev
在 macOS 上:运行 brew install gcc。如果仍然无法解决问题,可能还需要运行 xcode-select --install。
完成这些操作后,你应该就能运行 pip install pretzelai 安装 Pretzel。
开始在单元格中输入内容,即可获得行内 Tab 补全。
等待 1 秒即可触发补全。此时,你会在单元格内蓝色 Ask AI 按钮的前面看到一个小型加载动画。
默认的 Pretzel AI Server 使用 Mistral 的 Codestral,但你可以在 Pretzel AI Settings 中切换行内补全模型。请参阅“配置”部分。
在单元格中按下 Cmd+K(Mac)/ Ctrl+K(Windows/Linux),或点击“Ask AI”,打开 AI prompt 文本框,然后输入代码生成或编辑指令。输入 @ 可以打开下拉菜单,显示当前 session 中可用的变量。将这个 @vairable 加入 prompt 后,该变量的值会被发送给 AI。我们还会自动将当前 Notebook 中的相关代码作为上下文发送给 AI。
输入 @ 可以打开下拉菜单,显示当前 session 中可用的变量。将这个 @vairable 加入 prompt 后,该变量的值会被发送给 AI。
我们会自动将当前 Notebook 中的相关代码作为上下文发送给 AI。
如果单元格中已有代码,prompt 会编辑现有代码。如果你选中或高亮了单元格中的部分代码,则只会编辑选中的代码。
如果你选中或高亮了单元格中的部分代码,则只会编辑选中的代码。
你可以接受或拒绝响应;如果想修改后重新提交,也可以编辑 prompt。
使用 ↑ / ↓ 可以循环查看 prompt 历史记录。
使用 Ctrl+Cmd+B(Mac)/ Ctrl+Alt+B(Linux/Windows),或点击右侧边栏中的 Pretzel 图标,即可打开 AI Sidebar。
你可以提出问题、生成代码,或搜索现有代码。
AI 始终会将当前活动单元格中的代码作为上下文。如果你高亮了活动单元格中的部分代码,则只有高亮的代码会被用作上下文。
我们会自动将当前 Notebook 中的相关代码作为上下文发送给 AI。
你也可以像在 Notebook 单元格中一样,使用 @ 语法引用内存中的变量和 dataframe。
AI Sidebar 使用示例:
my_function,提升其效率” ← 这会在整个 Notebook 中找到函数 my_function 并对其进行修改@df 的 age 绘制直方图” ← 这会生成代码,为名为 df 的 dataframe 中的 age 列绘制直方图@salesdata 中每种产品类型的平均收入” ← 这会生成代码,使用 sales_data dataframe 按产品类型计算平均收入将光标放在空行或现有代码行上。按下 Cmd+K,打开 AI prompt 文本框。
以单词 inject 或 ij 开头输入 prompt,不区分大小写。这会告诉 AI 只添加新代码,不要编辑单元格中的现有代码。
新代码会添加到光标所在位置的下一行。
发生错误时,右上角会显示“Fix Error with AI”按钮。点击该按钮,尝试修复错误。
Pretzel 开箱即用,无需任何配置。我们不会存储你发送给 Pretzel AI Server 的任何代码或数据。
不过,如果你想使用其他 AI 模型,可以配置 Pretzel 使用来自多家不同供应商的 AI 模型,包括本地模型。在这种情况下,AI 请求会直接从你的计算机发送到 AI 服务,例如 OpenAI、Anthropic 等。
打开顶部菜单栏中的 Settings 菜单,然后点击 Pretzel AI Settings。
在 AI Settings 中,你可以分别选择用于聊天和行内补全的 AI 模型(见下方截图)。为了获得最佳效果,我们建议使用 GPT-4 级别的模型,例如 GPT-4 Turbo、GPT-4o、Claude-3.5 Sonnet、Claude-3 Opus 和 Llama-3.1 405B。
为了获得最佳效果,我们建议使用 GPT-4 级别的模型,例如 GPT-4 Turbo、GPT-4o、Claude-3.5 Sonnet、Claude-3 Opus 和 Llama-3.1 405B。
在 Configure AI Services 部分,你可以:
完成更改后,请记得保存设置。Pretzel 会验证你的配置,确保一切均已正确设置。
请注意:我们尚未测试 Azure Enterprise OpenAI 模型。如果发现任何 bug,请在 GitHub Issues 中报告,我们会尽快修复。
请在此报告 bug:https://github.com/pretzelai/pretzelai/issues
有任何反馈或意见吗?我们非常期待收到你的反馈:founders@withpretzel.com
原始 Jupyter 文档可以在此处查看,JupyterLab README 也可以在此处查看。
我们不收集任何个人信息。我们仅针对自己构建的 AI 功能使用基础 telemetry。例如,当你点击“Ask AI”时,我们会收到一个事件,得知有人点击了“Ask AI”。我们只会为用户关联一个匿名 ID。如果你允许使用 cookie,它可以帮助我们确认多个浏览器 session 来自同一位用户,这对我们非常有帮助。如果你不允许使用 cookie,那么每次打开浏览器时,对我们来说你都会成为一个新的匿名用户。
对于我们构建的 AI 功能,我们还会收集 prompt,但不会收集响应。你可以在设置中关闭这项功能,路径为 Settings > Pretzel AI > 取消勾选 Prompt Telemetry。不过,如果可以的话,我们真心希望你不要关闭,因为这些数据对改进我们的 prompt 非常有帮助。
我们绝不会收集任何代码。即使你使用 Pretzel 的云端 AI Server 进行补全,我们也不会存储其中的任何代码。
如果你使用 Pretzel 的托管版本(https://pretzelai.app),我们会根据你的电子邮箱地址为你创建用户。你随时可以登录并删除存储在我们托管服务器上的任何数据。我们不会为你的数据创建备份或副本。
我们的托管服务器可以免费使用。不过,如果距离你上次登录已经过去 30 天,我们会删除你的数据和账户。如果你希望更早删除账户,请发送电子邮件至 founders@withpretzel.com,邮件主题填写 Account Deletion,我们会立即删除你的账户。
A. 它位于此处的 pretzelai_visual 文件夹中。更多信息请参阅这个 PR。
A. Pretzel 会针对不同任务使用不同的 AI 模型:
默认模型:GPT-4o。它在速度与质量之间提供了良好的平衡。如果你使用自己的 API key,可以在 Pretzel Settings 中更改模型。
默认模型:GPT-4o。
在速度与质量之间提供了良好的平衡。
如果你使用自己的 API key,可以在 Pretzel Settings 中更改模型。
行内补全:Mistral 的 Codestral 模型。它非常适合代码补全,并且性能非常快,这是一个 22B 参数模型。
行内补全:Mistral 的 Codestral 模型。
非常适合代码补全。
性能非常快,这是一个 22B 参数模型。
备用方案:如果你使用自己的 API key,但没有提供 Mistral API Key,Pretzel 也会使用 GPT-4o 进行行内补全。
如果你使用自己的 API key,但没有提供 Mistral API Key,Pretzel 也会使用 GPT-4o 进行行内补全。
我们仍在持续试验不同模型,而支持本地模型和 Anthropic 的 Claude,正是我们任务列表中优先级最高的事项。
A. 我们想构建的功能非常多。请创建一个 Issue,告诉我们你希望我们开发什么!
A. 这份 README 的顶部有一份粗略的路线图。我们想构建的功能很多,但团队只有两个人。因此,我们正在收集反馈,了解哪些功能最有帮助。请创建 Issue,或者直接通过电子邮件向我们提供反馈!我们会根据收集到的信息确定路线图的优先级。
A. 我们构建 Pretzel 的目标,是打造一款出色的数据工具,让个人和公司都能免费使用。话虽如此,我们是一家只有两个人的初创公司,不希望第三方直接拿走我们的代码,出售它的托管版本,却不给社区任何回馈。
Jupyter 代码采用 BSD-3 许可证。如果我们的新代码继续采用 BSD-3 许可证,就无法阻止第三方这样做。因此,我们决定为所有新代码采用 AGPLv3 许可证。这样可以确保,如果其他人想获取我们的代码并以 SaaS 或其他形式出售,他们也必须依据 AGPLv3,将自己的所有修改开源。
A. 这个问题值得更详细地回答,不过简短答案是:我们的目标是打造新的事实标准——一款现代、开源的数据工具。
最初,我们想从头开始构建。但在与多位数据专业人士交流后,我们意识到,无论一款新工具有多好,让人们切换过去都会非常困难。让用户切换工具的最佳办法,就是根本不让他们经历切换。因此,我们决定 fork Jupyter,将切换成本降到接近于零。
此外,Jupyter 是一个成熟的产品,而我们发布功能的速度非常快。坦白说,按照我们目前发布功能的节奏,我们编写的代码不会被 Jupyter codebase 接受 😅。
这个决定也有许多缺点:我们不得不花费大量时间理解整个 Jupyter 生态系统和多个 codebase、复杂的发布流程以及各种 API 等。不过,我们认为这对我们而言是正确的决定。
A. 只有当你修改 Pretzel,并且将它重新分发给公众时,AGPL 才会构成限制。如果你只是在公司内部将它作为工具使用,即使进行了修改,AGPL 也不会要求你公开代码。
不过,如果 AGPL 对你来说仍然是个问题,请联系我们,我们可以一起寻找合适的解决方案。
A. 我们计划通过向公司销售这款工具的托管版本来赚钱。这个托管版本可能会提供一些面向公司的专属功能,而个人用户通常不想要或不需要这些功能,例如数据访问控制、数据源 connector、GitHub 集成、可托管并分享的 dashboard,以及针对大型数据任务的可扩展按需计算能力等。
我们不会追溯性地将 Pretzel 的个人版本改成收费模式。