Jupyter AI

Description
Published
August 3, 2023
Tags
AI

引言

前两个月有介绍 PandasAI 及其实现,凭借优雅而巧妙的设计,PandasAI 将大语言模型的能力接入数据分析工作流,使得直接向 DataFrame 提问变为可能,着实有趣有用。
文末随口作结:
…使数据处理与分析过程的人机交互往智能化迈进了一大步,至少对于文档依赖的减轻能够大大降低 Pandas 的使用门槛,以后大概人均可玩转 Notebook 了…
好巧不巧,最近 Jupyter 官方就发布了适用于 Jupyter 生态的 AI 拓展插件—— Jupyter AI,Notebook 的可玩性这不转眼就上来了 🤣

Jupyter AI

根据官方介绍,Jupyter AI 的使命是将生成式 AI 的能力带入 Jupyter 生态,通过提供用户友好又强大的方式,在 JupyterLab 和 Jupyter Notebook 中探索 AI 模型并借其大幅提升生产力。
更具体的说,Jupyter AI 提供下面这些:
  • 一个植入 JupyterLab 的原生聊天界面,可用作对话助理;
  • 一个魔法命令(magic)%%ai ,可直接在 Jupyter Notebook 中玩转生成式 AI;
  • 广大生成式模型的支持,基本包括大家耳熟能详的 OpenAI、Anthropic、Hugging Face 等。

Jupyter Copilot:Jupyternaut

大概是嫌弃 Copilot 这名字已经被用烂了,Jupyter 给自己的 AI 助理命名为 Jupyternaut。事实上,-naut 这个尾缀多表探索者之意(例如宇航员 astronaut),帮你探索 Jupyter,也算巧妙而准确了。
Jupyternaut 只能在 JupyterLab 中存活,可通过 pip install jupyter_ai 安装。需要注意的是,默认安装的是 v2 版本,只支持 JupyterLab 4;如果你在用 JupyterLab 3,需要通过 pip install jupyter_ai~=1.0 指定安装 v1 版本。
安装后打开 JupyterLab,就能发现左侧边栏多了一个对话界面,配置好模型参数后即可使用:
notion image
notion image
还可以选中代码片段进行提问:
notion image
以及 Notebook 生成、本地文档学习问答等功能。

魔法命令:ai

如果你平时并不惯于使用 JupyterLab,比如想在 VS Code 或是 Jupyter Notebook 中用上 Jupyter AI,也可以通过 pip install jupyter_ai_magics 安装魔法命令到任意使用 IPython kernel 的环境中。
安装后在 Notebook 开头用 %load_ext jupyter_ai_magics 加载,就会引入 ai 这一魔法命令。与其他魔法命令相仿,其具有两种格式:
  1. 行命令形态 %ai ,只读取命令所在行的后续输入,形如 Shell 命令,可用于 registerupdatedelete 等操作,涉及到模型选择、别名等;
  1. 单元格命令形态 %%ai ,首先将命令所在行后续输入作为参数,然后对换行后整个单元格的后续输入执行操作,是真正用于写 prompt 并执行的形态。
摘取几个案例:
# 列出 OpenAI 下的可选模型 %ai list openai
# 将 Anthropic 旗下的 claude-v1.2 注册为 claude %ai register claude anthropic:claude-v1.2
# 调用 claude 输入 prompt 进行生成 %%ai claude Write a poem about C++.
但如果仅仅如此,似乎很难提得上生产力?于是 Jupyter AI 祭出了格式化生成内容这一杀器,支持将模型生成的文本(通常是 Markdown 格式)转化为代码、数学公式、HTML、JSON 等格式,只需在调用时加上 -f 参数:
%%ai chatgpt -f math Generate the 2D heat equation in LaTeX surrounded by `$$`. Do not include an explanation.
其中,个人最喜欢的是格式化为代码这一功能。由于命令是在 Notebook 中执行,背后对应一套完整的 Python 环境,当 Jupyter AI 将 LLM 生成内容中的代码一键提取到下一个单元格中,可在具备语法高亮的情况下快速预览、然后一键执行,体验非常丝滑:
notion image
四舍五入,这也是平替版 Code Interpreter 了。

结语

可能会有人觉得,Jupyter AI 并没有带来任何新东西,毕竟前有猜你 bug 的 GitHub Copilot,后有对答如流的 ChatGPT,这种程度的接入无甚影响。但我认为,生成式 AI 的应用离不开真实的需求与场景。Jupyter 将交互式计算(interactive computing)作为主要任务,已在数据及科学计算领域独领风骚,胜在可见性与交互性,Jupyter AI 的集成也一以贯之,特别是 %%ai 魔法命令的形态,几近完美地融入现有工作流,也能乘 AI 东风将写代码的难度打下来,对诸多不同层级的使用者而言,都大有裨益。
期望未来能看到更多类似的好应用。