DLAI-JupyterAI-笔记-全-
DLAI JupyterAI 笔记(全)
001:课程介绍 🚀


在本节课中,我们将要学习 Jupyter AI 的基本概念、核心功能以及本课程的整体安排。Jupyter AI 是一个旨在将人工智能深度集成到 Jupyter 笔记本环境中的开源框架,它将改变我们编写代码的方式。
从手动编码到AI辅助编码的演进
手动编写每一行代码的传统编码方式正在变得过时。
因此,编码笔记本必须从手动编码演进到使用人工智能为你编码。
欢迎来到 Jupyter AI
我们很高兴与 Jupyter 项目的联合创始人 Brian Granger 一同介绍 Jupyter AI。
你可以在 DeepLearning.AI 网站上使用它,也可以在本地计算机上运行它。
Jupyter Notebook 是人工智能开发和数据科学的主力工具,我们在 DeepLearning.AI 也广泛使用它们。将笔记本完全带入 AI 编码时代,对许多人来说将是一大进步。很高兴能与 Brian 一起教授这门课程。
感谢 Andrew。当我们在 2011 年创建 IPython Notebook(后来在 2014 年更名为 Jupyter Notebook)时,我们的使命是创建一个由社区驱动的开源工具生态系统,服务于数据科学、科学研究和教育。
Jupyter Notebook 长期以来一直是这类工作的默认原型设计环境。
但事实证明,过去几年出现的大多数 AI 编码助手,在 Jupyter Notebook 环境中都难以良好运行。
因此,我们构建了 Jupyter AI。这是一个专门为将 AI 集成到 Jupyter Notebook 和 JupyterLab 中而设计的开源框架。
Jupyter AI 的核心功能
Jupyter AI 能很好地完成你可能已经从其他 AI 辅助编码工具中熟悉的任务,例如编写代码和回答关于代码的问题。
但它不止于此,还拥有专门为编码笔记本工作而设计的功能。

让我为你展示。使用 Jupyter AI,你会在笔记本旁边看到一个名为 “Jupyter Chat” 的聊天机器人。


我可以打招呼说“你好,Jupyter Chat”并得到回复。或者,更实用一点,我可以说:“编写代码来实现抛硬币,并以 50/50 的概率打印正面或反面”,它就会生成代码。
我不需要手动复制粘贴代码到笔记本中,只需点击一下,就可以将代码插入我的笔记本。看,它运行了。
或者,如果我忘记了调用 OpenAI API 的语法,我也可以问它。我还可以让它编写标准代码来获取我的 OpenAI 秘密 API 密钥,然后调用 API。



如果我在查看别人的笔记本,我可以将一个单元格拖到这里,然后问:“这个单元格是做什么的?” 甚至可以问:“这个整个笔记本是做什么的?” 从而快速获得总结,帮助我理解笔记本。
所有这些功能都与 Jupyter 深度集成,使得在笔记本中使用 AI 编码的工作流程变得更加容易。
你可以将 Jupyter AI 视为你在 Jupyter 中所做一切工作的 AI 协作者,无论是在 Jupyter Notebook 中探索数据、原型化 LLM 工作流程,还是构建集成到 JupyterLab 聊天体验中的自定义智能体。
课程内容与结构概述
事实上,Jupyter AI 的功能远不止我们今天有时间涵盖的这些。但本课程将为你提供一个良好的开端。

我在想,也许我们在这门课程之后需要开设一门后续课程。Jupyter AI 中有很多令人兴奋的功能我们今天没有时间涵盖,例如自定义智能体、工具调用以及智能体间的协作。
这听起来很棒。即使在本课程中,我认为你也会学到很多。
以下是本课程三个核心练习的简要介绍:
- 练习一:你将学习如何使用聊天界面生成代码并就代码提问,例如,生成一个调用 OpenAI API 的代码。
- 练习二:你将使用 Jupyter AI 构建一个聊天应用,该应用可以利用在线图书 API 帮助你寻找好书。通过这个练习,你将学习更高级的提示策略。
- 练习三:你将创建一个用于检索和分析股票数据的工作流程,并了解使用 Jupyter AI 进行数据分析的一些最佳实践。
本课程的设置与我们其他短期课程略有不同。它并非为每一课都安排一个带视频的并排笔记本。相反,我会在视频中演示每个练习,然后你自己进行动手实践,可以使用相同的提示词构建与我演示的相同应用,也可以修改提示词以构建符合你自己喜好的定制化应用。
致谢与总结
许多人共同努力创建了这门课程。我要感谢 David Q 以及所有为 Jupyter AI 做出贡献的人,还有来自 DeepLearning.AI 的 Ryan Kean、David Viaro 和 Harrasami。
本节课中,我们一起学习了 Jupyter AI 的诞生背景、核心定位及其作为 Jupyter 环境内 AI 协作者的主要功能。我们还预览了本课程将通过三个动手练习,引导你从基础代码生成进阶到构建实际应用。
让我们继续观看下一个视频,开始使用 Jupyter AI。


002:使用Jupyter AI进行编程 🚀

在本节课中,我们将学习Jupyter AI的基础知识,包括如何使用聊天功能生成代码、如何询问关于代码的问题,以及如何为聊天模型提供额外的上下文。我们将通过几个示例来演示这些功能,包括调用OpenAI API和执行基础数据分析。
启动聊天窗口 💬


上一节我们介绍了课程概述,本节中我们来看看如何开始使用Jupyter AI。首先,我们需要打开聊天窗口。
以下是启动新聊天的步骤:
- 在Jupyter界面中,寻找并点击气泡图标。
- 这将打开聊天环境。
- 点击 “+ 新聊天” 按钮开始一个新对话。
- 为聊天命名,例如“chat1”。

第一个示例:Hello World 👋
现在,让我们从一个简单的“Hello World”示例开始,体验代码生成功能。

我输入提示:“创建一个打印‘hello world’的代码单元格。”
Jupyter AI会花一点时间生成代码单元格。
生成代码后,无需手动复制粘贴。我可以选择右侧笔记本中的一个单元格,然后选择将生成的代码插入到活动单元格上方、下方,或者替换活动单元格。
我选择将其插入到活动单元格上方,然后运行它。成功打印出“hello world”。
第二个示例:调用OpenAI API 🍪
接下来,我们看一个更复杂的例子:使用OpenAI的API来生成有趣的幸运饼干消息。
我新建了一个聊天(chat2),并输入了以下提示:
“创建一个使用OpenAI的GPT-4模型来编写有趣幸运饼干消息的代码单元格。使用Python的.env文件加载我的秘密API密钥。”
然后,我提供了生成幸运饼干消息的具体提示词。
运行后,Jupyter AI生成了一段代码。我快速浏览后,将其插入并运行。
代码成功执行,并输出了一个消息:“你的圣诞节像Wi-Fi。哦,这很好。只有我知道密码。”这很有趣。
我建议你在观看本视频后,立即在随附的Jupyter笔记本环境中尝试这个过程。点击气泡图标打开聊天环境,尝试像我一样生成代码,或者尝试生成不同的功能代码。

第三个示例:用于数据分析 🔍
现在,我想展示第三个也是最后一个示例:使用Jupyter AI进行数据分析。
假设已经有一个Jupyter笔记本,其中包含两个单元格。第一个单元格加载了一个customer_reviews.csv数据文件,第二个单元格包含一些分析代码。
运行这些代码后,可以看到分析结果。
如果我想理解这段代码具体在做什么,可以选中这个代码单元格(注意是点击单元格左侧区域选中整个单元格),然后将其拖拽到聊天窗口并提问:“这段代码做了什么?”
借助这个上下文,Jupyter AI告诉我,该代码单元格对数据框df执行了多步骤数据分析:它将每条评论分类为负面、中性或正面,然后创建新的情感类别并进行分组等。
这是一种无需阅读所有Python代码就能快速理解分析内容的便捷方法。
编写复杂分析代码 📝
假设你想自己编写代码,或者让AI为你编写代码来执行更复杂、更高级的分析。
我在这里做的是,提供了一个相当详细的规范或提示词,描述了我希望代码执行的复杂分析过程。
这个提示词写在了一个Jupyter笔记本的Markdown单元格中。我发现,在Markdown单元格中编辑这样的长提示词,比在聊天窗口的小输入框中键入要方便得多。
这个长提示词规定了分析步骤:
- 提取评论列表。
- 检查评论。
- 打印总结并将其保存到特定文件中。
然后,我可以将这个Markdown单元格拖到聊天窗口,并说:“按照Markdown中的指示,生成三个笔记本单元格来分析数据。”
我告诉AI删除Markdown中的指令,并编写代码来执行分析。
AI生成了三个代码单元格。快速浏览后,看起来没问题。
第一个单元格提取了50条评论。
第二个单元格将使用GPT-4模型生成分析。
第三个单元格将把所有分析保存到customer_reviews_analysis.md文件中。
运行后,检查文件浏览器,确认它确实按照长提示词生成了分析并保存了Markdown文件。
聊天记录的保存与复用 💾
我想指出Jupyter AI的一个巧妙功能:我们进行的聊天(chat1, chat2, chat3)实际上都被保存为文件。
例如,点击chat3.md,这就是我们刚才进行的完整对话历史记录。
这便于日后回溯聊天内容,甚至可以将这些聊天记录作为未来与聊天机器人对话的上下文。

本节课中我们一起学习了Jupyter AI的基础操作:如何启动聊天、生成简单和复杂的代码、利用上下文理解现有代码,以及如何通过详细的提示词指导AI完成复杂的数据分析任务。同时,我们也了解了聊天记录会被保存,便于后续查阅和使用。希望你能在平台上亲自尝试这些功能,我们将在下一个视频中探讨更高级的Jupyter AI代码编写技巧。
003:构建AI图书研究助手 📚

在本节课中,我们将学习如何更高级地使用Jupyter AI作为编程助手。我们将通过一个具体项目——利用Open Library API构建一个图书推荐助手——来演示最佳实践。核心在于,当AI模型不熟悉某个API时,我们可以通过为其提供API文档作为上下文,来引导它生成正确的代码。
概述
我们将使用互联网档案馆的Open Library API来搜索图书信息。为了让AI模型理解如何使用这些API,我们将创建一个包含详细使用说明的Markdown文档,并将其作为上下文提供给模型。此外,我们还将学习如何组织代码、将API调用封装为函数,并最终将该函数作为“工具”集成到一个AI驱动的聊天助手中。
第一步:准备API文档
为了让AI模型了解Open Library API的用法,我创建了一个Markdown文档。该文档详细说明了各种API端点的使用方法,例如图书搜索API。
以下是该文档的核心内容示例:
# Open Library API 文档

## 搜索图书
端点:`https://openlibrary.org/search.json`
参数:
- `q`:搜索查询词(例如,“lord of the rings”)
- `limit`:返回结果数量

你可以自由浏览这个Markdown文件以了解所有细节。接下来,我们将把这个文档提供给AI模型。

第二步:让AI生成搜索代码
现在,我们将在Jupyter AI聊天界面中附加上一步创建的API文档,并给出指令。
指令如下:
“请编写一个代码单元格,使用Open Library的搜索端点查找图书。返回一个响应列表,列出每本书的关键信息(如标题、作者名)。将结果数量限制为5条。请使用附加文件中的Open Library API文档。”

执行该指令后,AI生成了调用API的代码。我们将这段代码复制到笔记本中,并尝试搜索“science fiction”来测试它。
import requests
def search_books(query, limit=5):
url = "https://openlibrary.org/search.json"
params = {'q': query, 'limit': limit}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
books = data.get('docs', [])
results = []
for book in books[:limit]:
title = book.get('title', 'N/A')
author = book.get('author_name', ['N/A'])[0]
results.append({'title': title, 'author': author})
return results
else:
return f"Error: {response.status_code}"
# 测试函数
results = search_books("science fiction")
for book in results:
print(f"Title: {book['title']}, Author: {book['author']}")
运行代码后,我们成功获取了关于科幻小说的前5条结果。
第三步:将代码封装为函数
上一节我们获得了可工作的代码,本节中我们来看看如何将其转化为一个可重用的函数。我们希望将这个搜索功能包装成一个函数,以便后续可以将其作为“工具”提供给AI助手调用。
我们可以通过提示AI来完成这个任务。提示如下:
“请将上面的代码包装成一个名为 search_books 的函数。为其添加良好的文档字符串。函数的输入参数是查询词 query,并将返回结果数量的默认值设为10。输出一个JSON字符串格式的结果。”
AI根据提示生成了封装好的函数代码,其中包含了清晰的文档说明。我们将新生成的函数定义复制到笔记本中并测试。
import requests
import json
def search_books(query, limit=10):
"""
使用Open Library API搜索图书。
参数:
query (str): 搜索关键词。
limit (int): 返回的最大结果数,默认为10。
返回:
str: 包含图书标题和作者的JSON格式字符串。
"""
url = "https://openlibrary.org/search.json"
params = {'q': query, 'limit': limit}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
books = data.get('docs', [])
results = []
for book in books[:limit]:
title = book.get('title', 'N/A')
# author_name 是一个列表,取第一个作者
author_list = book.get('author_name', [])
author = author_list[0] if author_list else 'N/A'
results.append({'title': title, 'author': author})
return json.dumps(results, indent=2)
else:
return json.dumps({"error": f"API请求失败,状态码: {response.status_code}"})
# 测试新函数
results = search_books("science fiction")
print(results)
测试成功,函数返回了10本图书的信息。
第四步:将函数作为工具集成到AI助手
我们已经有了一个可用的搜索函数,接下来需要让AI助手能够调用它。我们将使用一个名为 ai-suite 的开源库,它简化了让大语言模型使用工具的过程。
由于 ai-suite 是一个较新的库,AI模型可能不熟悉其语法。与其编写完整的API文档,我们发现提供一个简单的代码示例通常就足够了。
以下是我们提供给AI的 ai-suite 使用示例:
# ai-suite 工具调用示例
from ai_suite import ToolSet, chat_with_tools
# 1. 定义可用工具
tools = ToolSet()
# 假设我们有一个搜索函数
tools.add_tool(search_books, description="根据关键词搜索图书")
# 2. 创建聊天处理器
def chat_handler(user_message):
response = chat_with_tools(user_message, tools)
return response
我们将包含此示例的单元格拖入聊天界面,并给出指令:“请参考此示例,创建一个名为 chat_with_tools 的简单聊天处理器函数。该函数接收用户消息,并可以使用上面定义的 search_books 工具。”
AI生成了集成代码。我们将其复制到笔记本中并运行,从而定义了 chat_with_tools 函数。
第五步:测试与调试AI助手
现在,让我们来测试这个集成了搜索工具的AI助手。我们输入查询:“请推荐一些关于龙的书籍。”
在测试过程中,为了确认AI确实调用了我们定义的函数(而不是仅凭自身知识编造答案),我们在 search_books 函数中添加了一个打印语句作为调试信息。
修改函数的提示如下:“请修改 search_books 函数,在开始执行时添加一个打印语句,输出状态信息‘正在搜索图书...’。”
AI生成了修改后的代码。我们更新函数定义后再次进行测试。这次,在返回结果之前,我们看到了“正在搜索图书...”的调试信息,这证实了函数被成功调用。

总结
在本节课中,我们一起学习了如何利用Jupyter AI构建一个智能图书研究助手。我们经历了完整的流程:
- 准备上下文:为AI编写API文档,指导其生成正确代码。
- 生成与封装:让AI生成API调用代码,并将其封装成可重用的函数。
- 工具集成:使用
ai-suite库将函数作为“工具”提供给AI助手。 - 测试与迭代:测试助手功能,并通过添加调试信息等方式迭代改进代码。
你可以访问课程提供的Jupyter Lab环境,亲自动手实践,并尝试使用Open Library的其他API来构建功能更复杂的助手,例如在检索到图书列表后进一步查询某本书的详细信息。希望你能享受使用Jupyter AI构建应用的乐趣,并发现一些你想阅读的好书!
004:探索股票市场数据

在本节课中,我们将学习如何使用 Jupyter AI 进行数据分析和可视化。具体来说,我们将通过 API 调用获取股票数据,并利用 Jupyter AI 协助完成分析与可视化任务。
获取股票数据
首先,假设我们想分析苹果公司(Apple)在 2024年10月24日 至 2025年10月23日 期间的股票数据。为此,我们定义了分析周期的起止日期,并指定了苹果公司的股票代码 AAPL。
为了获取这些股票数据,我们将使用 yfinance 这个 Python 包,它可以从雅虎财经获取金融数据。这与你在之前练习中看到的方法类似。
我已经准备了一个包含 yfinance 文档的 Markdown 文件。









在聊天窗口中,我将附加这个 Markdown 文件,然后要求 Jupyter AI 使用 yfinance 下载我感兴趣时间段内的苹果股票数据,并将结果保存到一个数据框中。



以下是生成的代码。我将点击此处将代码转移到单元格并运行它。
这是数据框的前五行。每一行显示了特定一天的四种价格类型:
- Open:当天市场开盘时的价格。
- High:当天交易期间达到的最高价格。
- Low:当天交易期间达到的最低价格。
- Close:当天市场收盘时的价格。
- Volume:当天交易的股票数量。
现在,你可以看到每一列都有两个索引:价格类型和股票代码。如果你打印数据框的列,可以更清楚地看到这一点。
由于我们只关注苹果股票数据,我想移除第二个索引。因此,我告诉 Jupyter AI 我的列是多级索引的,并询问如何将其扁平化。
好的,让我们将生成的代码应用到数据框上。很好。现在,我的数据框是单级索引了。
初步数据探索
在加载数据之后,你可能希望快速探索数据框的形状和各列的值。Pandas 数据框有许多方法可以帮助快速探索,但假设我忘记了语法。所以,我将要求 Jupyter AI 显示数据框的形状和统计摘要。
很好。让我们获取代码并运行它。行数是 249,这代表了分析期间内的交易日数量。这是合理的,因为交易日不包括周末和节假日。从各列的计数中,我可以看到没有缺失值,其余的统计数据看起来都很好。
计算总回报率
现在,让我们计算第一个指标:总回报率,以了解过去一年价格的总体变化。为此,我将使用收盘价,因为它通常被用作分析股票价值随时间变化的参考点。
因此,我将要求 Jupyter AI 使用数据框中的收盘价,根据起始价格和结束价格计算总回报率(百分比)。
让我们找出过去一年的总回报率:12.61%。过去一年的总体回报是正的,但这并不意味着收盘价一直处于上升趋势。所以,让我们通过绘制图表来查看收盘价的每日波动。
可视化收盘价趋势
我将要求 Jupyter AI 帮助我编写代码来可视化苹果的收盘价。我指定要使用 matplotlib,并澄清了一些要求,如轴标签、网格和适当的颜色。
让我们运行生成的代码。这是生成的折线图。
你可以看到,在三月和四月期间存在下降趋势,但之后更多的是上升趋势。现在,我很好奇想了解更多关于这个最低点和最高点的日期。
识别关键日期
我将要求 Jupyter AI 帮助我找到这些确切的日期,并将它们标记在同一张图上。
好的。所以,最高价格出现在 2025年10月21日,最低价格出现在 2025年4月8日。
为了获取一些背景信息,我将使用 Serper 对这些日期进行网络搜索,查找相关新闻。Serper 是一个 API,允许你以编程方式访问谷歌搜索结果。
因此,我将要求 Jupyter AI 帮助我处理语法,依靠底层模型(在本例中是 GPT-4)的内部知识。由于 Serper 需要 API 密钥,我在此说明 API 密钥保存在 .env 文件中,并要求它为每个日期返回新闻摘要。
让我们生成代码。这是代码。让我将其转移到这个代码单元格,然后运行它。
从返回的结果来看,最高价格似乎是由 iPhone 17 销售和积极的公司盈利报告推动的。而最低价格则发生在与关税相关的担忧期间。在同一时期,股票价格出现了较高的波动。
量化波动性
为了量化这一点,我将计算一个波动性指标。波动性有不同的衡量标准。最简单的方法是找出每日百分比变化的标准差。这可以是整个期间的总体衡量,也可以是基于滚动窗口的衡量。让我们两者都计算。
首先,我将要求 Jupyter AI 帮助我找到总体波动性。这是代码。让我们运行它。总体波动性约为 2%。例如,你可以找到另一家公司或某个基准(如代表美国整体股市的标普 500 指数)的波动性,并进行比较。
最后,我将要求 Jupyter AI 帮助我基于 20 天的窗口找到滚动波动性,识别高波动性时期,并将这些日期保存在一个数据框中,以便稍后在我的见解总结中使用。
很好。让我们转移并运行这段代码。正如我所料,高波动性日期主要发生在四月。
生成分析报告
现在,我想将所有计算出的指标整合到一份报告中,以总结这些见解。为此,我将进行一次 LLM 调用来生成报告,并请 Jupyter AI 帮助我处理语法。
因此,我将要求它生成代码,使用 GPT-4 模型,输入股票代码、起止日期、总回报率、波动性指标以及最高和最低日期的新闻摘要,并提供一个见解总结。
让我们运行代码,这是生成的总结。你可以考虑额外的分析步骤和要计算的指标,以及如何自动化整个工作流程。现在,请在本视频之后的下一个练习中尝试相同的步骤,然后我和 Andrew 将在最后一个视频中与你见面。
课程总结
在本节课中,我们一起学习了如何利用 Jupyter AI 进行股票数据分析。我们从获取数据开始,逐步完成了数据清洗、初步探索、关键指标计算、趋势可视化、关键日期识别、背景信息搜索、波动性量化,并最终生成了分析报告。这个过程展示了 Jupyter AI 如何辅助数据科学家高效地完成从数据获取到洞察呈现的完整工作流。


浙公网安备 33010602011771号