Jupyter AI:生成式AI+JupyterLab,在VSCode中,你将不需要Copilot

Jupyter AI:生成式AI+JupyterLab,在VSCode中,你将不需要Copilot

我怀疑,在VSCode中,你将不需要Copilot。如果你想了解更多关于人工智能的相关内容,可以阅读以下这些文章:
Meta的新LLaMa AI模型是给世界的礼物!
分析数据库:点亮数据科学智慧人生
10个很棒的开源AI项目——私人AI、代码修复等
AI自动化机构:2023年的新致富之路?

JupyterLab是新手数据科学家的最好伙伴之一。即使对于老手来说,它也是代码进入生产之前最常用的实验场所之一。在Notebook中的模型和提高早期生产力中它确实是一种强大且对用户友好的方法。在某些情况下,例如Netflix,整个数据管道,包括定期作业,都是使用JupyterLab运行的。

Jupyter AI提供了一种用户友好且强大的方式来探索Notebook中的生成式 AI 模型,并提高JupyterLab和Jupyter Notebook中的工作效率。更具体地说,Jupyter AI 提供——

  • %%ai将Jupyter Notebook变成可复制的生成式AI playground。这适用于 IPython内核运行的任何地方(JupyterLab、Jupyter Notebook、Google Colab、VSCode等)
  • JupyterLab中的原生聊天UI,使你可以将生成式AI作为对话助手来进行工作。
  • l 支持广泛的生成模型提供商和模型(AI21、Anthropic、Cohere、Hugging Face、OpenAI、SageMaker等)

安装

安装JupyterAI

pip install jupyter_ai

最新的jupyter_aiv2,仅支持JupyterLab 4。如果你需要支持JupyterLab 3,你应该安装jupyter_ai v1。

pip install jupyter_ai~=1.0

对于所有不使用JupyterLab的Jupyter Notebook用户,你可以通过魔术命令来使用JupyterAI。要安装Jupyter AI的魔术命令,请运行以下命令。

pip install jupyter_ai_magics

支持的模型供应商

需要在你将要使用的Python环境中定义环境变量。所以,请注意这些变量的实际名称。另外,请注意到Python的依赖关系来使用这些模型。

以下示例说明了如何在启动JupyterLab实例之前设置环境变量。

OPENAI_API_KEY=your-api-key-here jupyter lab

在Jupyter Lab中与AI进行聊天

安装了Jupyter AI后,首次访问Jupyter Lab的用户将在Jupyter Lab界面上看到一个设置提示。

请按照”Start Here”提示操作,设置你想要使用的语言模型。提供API密钥,然后你就可以开始使用了。

你可以选择插入模型或语言模型。插入模型可以将输入转换为数值形式,但不会返回响应。

现在,一个熟悉的界面将始终在左侧面板上可用。如果面板没有显示出来,只需点击左箭头即可。提出任何问题,它都会给你回答。请记住,Codex在GPT-3.5-turbo和GPT-4模型中的性能有所提升,因此选择一个不会让你花费过多的模型(因为每个查询和生成的标记都将通过你的模型提供商计费)。就是这样,它是一种懒人版付费ChatGPT,以Jupyter AI的形式嵌入在你的Notebook中,这样你就不必切换窗口并复制代码了(带有讽刺的说法)

你可以根据需要随时追问问题。通常,GPT-3模型具有足够大的上下文窗口,但请注意在提出后续问题时是否忽略了上下文。

Notebook中的代码解释器

在使用实验室时,你可能正在使用别人的Notebook,并且想要了解代码的某个部分是做什么的。只需突出显示函数或一段代码,然后询问Jupyter AI,这段代码是做什么的?请确保使用“include selection”复选框。

它将解释代码并回答你的问题。再次强调,你所获得的答案将取决于你选择的模型的质量。你可以更改代码并替换选择(使用复选框)以替换Notebook中的代码。这可能很方便,但请小心使用。一个真正的程序员会在替换之前创建一个新的函数并进行测试。但是你是Notebook的主人- 所以…

这些提示能够从头开始生成整个Notebook。尤其是如果你以足够广泛的任务提问,比如“生成一个比较pandas表中各种连接操作并可视化每个连接的Notebook”。

学习我的文档

使用特殊提示,Jupyter AI将能够学习文件夹中的所有文档。它将把它们保存到文件夹Users//git/jupyter-ai/docs/中的本地数据库中。这些是你工作目录中文档的向量表示(插入)。请记住,文件夹中的每个文件都将与OpenAI或你选择的其他模型提供商共享,并转换为插入。在这个层面上做的每一项操作都需要花费相当大的费用。

要实现这一点,请在聊天窗口中运行以下命令。

/learn docs/

现在你可以向Jupyter AI询问关于你的文件夹的任何问题。只需启动/ask提示即可。

要清除学习知识,请运行/learn -d命令。每次学习都会花费一定费用,所以在回答问题之前,请检查是否真的需要清除。

还有其他一些命令可以调整学习,如下所示。

/learn -c代表 — chunk-size,-o代表 — chunk-overlap
# default chunk size and chunk overlap/learn <directory>
# chunk size of 500, and chunk overlap of 50/learn -c 500 -o 50 <directory># chunk size of 1000, and chunk overlap of 200/learn --chunk-size 1000 --chunk-overlap 200 <directory>

当文档过长时,将文档的每个片段/块转换为插入,以便实现连续性,并且会有一小部分重叠。

但我只使用Jupyter Notebook

如果你只使用Jupyter Notebook,那么你就像大多数数据科学家一样。我们喜欢以稍有不同且更简约的方式进行操作。因此,只需使用以下命令安装Jupyter

pip install jupyter_ai_magics

当你打开Notebook时,可以使用以下命令加载扩展:

%load_ext jupyter_ai_magics

在你的Notebook中按照上述方式设置环境变量。

然后使用%%ai:命令设置你的提供商。接下来,你可以通过Notebook向它发出任何你想要执行的请求。

%%ai ai21:j2-jumbo-instructWrite some JavaScript code that prints "hello world" to the console.

你可以通过使用-f参数来对语言模型返回的输出进行良好的控制,以控制其在Notebook中的显示方式。以下是一些使用HTML和数学格式的示例,其中使用了LaTeX和代码。

%%ai anthropic:claude-v1.2 -f htmlCreate a square using SVG with a black border and white fill.

%%ai chatgpt -f mathGenerate the 2D heat equation in LaTeX surrounded by `$$`. Do not include an explanation.

%%ai chatgpt -f codeA function that computes the lowest common multiples of two integers, anda function that runs 5 test cases of the lowest common multiple function

如果你想要更高级一些,实际上可以在提示中传递变量。

%%ai chatgptWrite a poem in the style of {poet}

使用In[]和Out[]的语法可以重新定向输入和输出。

假设你希望用ChatGPT解释254号单元格的输出,请向Jupyter AI提问。请记住,这些是运行编号(而不是序号),它们会根据你在执行之前和之后运行了多少个单元格而改变。因此,请注意,你真的不想运行一个在Jupyter Notebook中展示为分页的10000行数据框的输出,然后将其发送到OpenAI以进行解释。这将花费你很多钱。所以请谨慎操作,并确保对要发送给OpenAI进行解释的输出进行审查,以避免不必要的费用开销。

%% chatgpt explain the output below --{Out[254]}

这在你不想复制错误消息时尤其有用。

%%ai chatgptExplain the following Python error:--{Err[3]}

或者提供如下所述的错误上下文,并要求更正。

%%ai chatgpt --format codeThe following Python code:--{In[3]}--produced the following Python error:--{Err[3]}--Write a new version of this code that does not produce that error.

构建你自定义的魔法操作

假设你想要使用LangChain创建自己的自定义提示,并在以后的单元格中调用它。首先,创建包含模板的LangChain操作链,然后使用%ai register命令进行注册。

from langchain.chains import LLMChainfrom langchain.prompts import PromptTemplatefrom langchain.llms import OpenAI

llm = OpenAI(temperature=0.9)prompt = PromptTemplate(    input_variables=["product"],    template="What is a good name for a company that makes {product}?",)chain = LLMChain(llm=llm, prompt=prompt)

然后在一个新的表格里

%ai register give_me_name chain

你可以通过执行操作来删除一个魔术命令

%ai delete chain

对我来说,这是一次有趣的经历,因为我一直在想,既然Copilot更出色并且价格是固定的,我为什么要使用ChatGPT呢?其次,为什么我要如此懒惰,不愿在免费的ChatGPT实例中复制粘贴我的代码并提问?我什么时候需要其他提供商的模型呢?

我只是比较现实,除非我需要对相同提示的提供者进行比较,否则我很少会使用基于人工智能的魔术命令。这是一个不错的噱头,但我还没有看到此集成的真实用例和真正的实用性。也许我有点守旧。如果你对此持有不同意见,请让我知道,我很想了解。

感谢阅读!你还可以订阅我们的YouTube频道,观看大量大数据行业相关公开课:https://www.youtube.com/channel/UCa8NLpvi70mHVsW4J_x9OeQ;在LinkedIn上关注我们,扩展你的人际网络!https://www.linkedin.com/company/dataapplab/

原文作者:Dr. Mandar Karhade, MD. PhD.
翻译作者:文杰
美工编辑:过儿
校对审稿:Chuang
原文链接:https://pub.towardsai.net/jupyterai-generative-ai-jupyterlab-9cae19a417f4