DLAI JupyterAI 笔记(一) 📅 2026/7/22 6:16:15 001课程介绍 https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/d914dc99e8c253198f1db2b0e8e9082b_0.pnghttps://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/d914dc99e8c253198f1db2b0e8e9082b_0.png在本节课中我们将要学习 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 辅助编码工具中熟悉的任务例如编写代码和回答关于代码的问题。但它不止于此还拥有专门为编码笔记本工作而设计的功能。https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/d914dc99e8c253198f1db2b0e8e9082b_2.png让我为你展示。使用 Jupyter AI你会在笔记本旁边看到一个名为 “Jupyter Chat” 的聊天机器人。https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/d914dc99e8c253198f1db2b0e8e9082b_3.pnghttps://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/d914dc99e8c253198f1db2b0e8e9082b_4.png我可以打招呼说“你好Jupyter Chat”并得到回复。或者更实用一点我可以说“编写代码来实现抛硬币并以 50/50 的概率打印正面或反面”它就会生成代码。我不需要手动复制粘贴代码到笔记本中只需点击一下就可以将代码插入我的笔记本。看它运行了。或者如果我忘记了调用 OpenAI API 的语法我也可以问它。我还可以让它编写标准代码来获取我的 OpenAI 秘密 API 密钥然后调用 API。https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/d914dc99e8c253198f1db2b0e8e9082b_2.pnghttps://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/d914dc99e8c253198f1db2b0e8e9082b_3.pnghttps://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/d914dc99e8c253198f1db2b0e8e9082b_4.png如果我在查看别人的笔记本我可以将一个单元格拖到这里然后问“这个单元格是做什么的” 甚至可以问“这个整个笔记本是做什么的” 从而快速获得总结帮助我理解笔记本。所有这些功能都与 Jupyter 深度集成使得在笔记本中使用 AI 编码的工作流程变得更加容易。你可以将 Jupyter AI 视为你在 Jupyter 中所做一切工作的 AI 协作者无论是在 Jupyter Notebook 中探索数据、原型化 LLM 工作流程还是构建集成到 JupyterLab 聊天体验中的自定义智能体。课程内容与结构概述事实上Jupyter AI 的功能远不止我们今天有时间涵盖的这些。但本课程将为你提供一个良好的开端。https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/d914dc99e8c253198f1db2b0e8e9082b_6.png我在想也许我们在这门课程之后需要开设一门后续课程。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。https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/d914dc99e8c253198f1db2b0e8e9082b_8.pnghttps://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/d914dc99e8c253198f1db2b0e8e9082b_8.png002使用Jupyter AI进行编程 https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/e58a46db44ea7f5bf523d435e34501ae_0.png在本节课中我们将学习Jupyter AI的基础知识包括如何使用聊天功能生成代码、如何询问关于代码的问题以及如何为聊天模型提供额外的上下文。我们将通过几个示例来演示这些功能包括调用OpenAI API和执行基础数据分析。启动聊天窗口 https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/e58a46db44ea7f5bf523d435e34501ae_2.pnghttps://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/e58a46db44ea7f5bf523d435e34501ae_3.png上一节我们介绍了课程概述本节中我们来看看如何开始使用Jupyter AI。首先我们需要打开聊天窗口。以下是启动新聊天的步骤在Jupyter界面中寻找并点击气泡图标。这将打开聊天环境。点击“ 新聊天”按钮开始一个新对话。为聊天命名例如“chat1”。https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/e58a46db44ea7f5bf523d435e34501ae_5.png第一个示例Hello World 现在让我们从一个简单的“Hello World”示例开始体验代码生成功能。https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/e58a46db44ea7f5bf523d435e34501ae_7.png我输入提示“创建一个打印‘hello world’的代码单元格。”Jupyter AI会花一点时间生成代码单元格。生成代码后无需手动复制粘贴。我可以选择右侧笔记本中的一个单元格然后选择将生成的代码插入到活动单元格上方、下方或者替换活动单元格。我选择将其插入到活动单元格上方然后运行它。成功打印出“hello world”。第二个示例调用OpenAI API 接下来我们看一个更复杂的例子使用OpenAI的API来生成有趣的幸运饼干消息。我新建了一个聊天chat2并输入了以下提示“创建一个使用OpenAI的GPT-4模型来编写有趣幸运饼干消息的代码单元格。使用Python的.env文件加载我的秘密API密钥。”然后我提供了生成幸运饼干消息的具体提示词。运行后Jupyter AI生成了一段代码。我快速浏览后将其插入并运行。代码成功执行并输出了一个消息“你的圣诞节像Wi-Fi。哦这很好。只有我知道密码。”这很有趣。我建议你在观看本视频后立即在随附的Jupyter笔记本环境中尝试这个过程。点击气泡图标打开聊天环境尝试像我一样生成代码或者尝试生成不同的功能代码。https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/e58a46db44ea7f5bf523d435e34501ae_9.png第三个示例用于数据分析 现在我想展示第三个也是最后一个示例使用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这就是我们刚才进行的完整对话历史记录。这便于日后回溯聊天内容甚至可以将这些聊天记录作为未来与聊天机器人对话的上下文。https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/e58a46db44ea7f5bf523d435e34501ae_11.png本节课中我们一起学习了Jupyter AI的基础操作如何启动聊天、生成简单和复杂的代码、利用上下文理解现有代码以及如何通过详细的提示词指导AI完成复杂的数据分析任务。同时我们也了解了聊天记录会被保存便于后续查阅和使用。希望你能在平台上亲自尝试这些功能我们将在下一个视频中探讨更高级的Jupyter AI代码编写技巧。003构建AI图书研究助手 https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/c7e8bc9c3f5bb009243086fe51325312_0.png在本节课中我们将学习如何更高级地使用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://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/c7e8bc9c3f5bb009243086fe51325312_2.png ## 搜索图书 端点https://openlibrary.org/search.json 参数 - q搜索查询词例如“lord of the rings” - limit返回结果数量https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/c7e8bc9c3f5bb009243086fe51325312_4.png你可以自由浏览这个Markdown文件以了解所有细节。接下来我们将把这个文档提供给AI模型。https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/c7e8bc9c3f5bb009243086fe51325312_6.png第二步让AI生成搜索代码现在我们将在Jupyter AI聊天界面中附加上一步创建的API文档并给出指令。指令如下“请编写一个代码单元格使用Open Library的搜索端点查找图书。返回一个响应列表列出每本书的关键信息如标题、作者名。将结果数量限制为5条。请使用附加文件中的Open Library API文档。”https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/c7e8bc9c3f5bb009243086fe51325312_8.png执行该指令后AI生成了调用API的代码。我们将这段代码复制到笔记本中并尝试搜索“science fiction”来测试它。importrequestsdefsearch_books(query,limit5):urlhttps://openlibrary.org/search.jsonparams{q:query,limit:limit}responserequests.get(url,paramsparams)ifresponse.status_code200:dataresponse.json()booksdata.get(docs,[])results[]forbookinbooks[:limit]:titlebook.get(title,N/A)authorbook.get(author_name,[N/A])[0]results.append({title:title,author:author})returnresultselse:returnfError:{response.status_code}# 测试函数resultssearch_books(science fiction)forbookinresults:print(fTitle:{book[title]}, Author:{book[author]})运行代码后我们成功获取了关于科幻小说的前5条结果。第三步将代码封装为函数上一节我们获得了可工作的代码本节中我们来看看如何将其转化为一个可重用的函数。我们希望将这个搜索功能包装成一个函数以便后续可以将其作为“工具”提供给AI助手调用。我们可以通过提示AI来完成这个任务。提示如下“请将上面的代码包装成一个名为search_books的函数。为其添加良好的文档字符串。函数的输入参数是查询词query并将返回结果数量的默认值设为10。输出一个JSON字符串格式的结果。”AI根据提示生成了封装好的函数代码其中包含了清晰的文档说明。我们将新生成的函数定义复制到笔记本中并测试。importrequestsimportjsondefsearch_books(query,limit10): 使用Open Library API搜索图书。 参数: query (str): 搜索关键词。 limit (int): 返回的最大结果数默认为10。 返回: str: 包含图书标题和作者的JSON格式字符串。 urlhttps://openlibrary.org/search.jsonparams{q:query,limit:limit}responserequests.get(url,paramsparams)ifresponse.status_code200:dataresponse.json()booksdata.get(docs,[])results[]forbookinbooks[:limit]:titlebook.get(title,N/A)# author_name 是一个列表取第一个作者author_listbook.get(author_name,[])authorauthor_list[0]ifauthor_listelseN/Aresults.append({title:title,author:author})returnjson.dumps(results,indent2)else:returnjson.dumps({error:fAPI请求失败状态码:{response.status_code}})# 测试新函数resultssearch_books(science fiction)print(results)测试成功函数返回了10本图书的信息。第四步将函数作为工具集成到AI助手我们已经有了一个可用的搜索函数接下来需要让AI助手能够调用它。我们将使用一个名为ai-suite的开源库它简化了让大语言模型使用工具的过程。由于ai-suite是一个较新的库AI模型可能不熟悉其语法。与其编写完整的API文档我们发现提供一个简单的代码示例通常就足够了。以下是我们提供给AI的ai-suite使用示例# ai-suite 工具调用示例fromai_suiteimportToolSet,chat_with_tools# 1. 定义可用工具toolsToolSet()# 假设我们有一个搜索函数tools.add_tool(search_books,description根据关键词搜索图书)# 2. 创建聊天处理器defchat_handler(user_message):responsechat_with_tools(user_message,tools)returnresponse我们将包含此示例的单元格拖入聊天界面并给出指令“请参考此示例创建一个名为chat_with_tools的简单聊天处理器函数。该函数接收用户消息并可以使用上面定义的search_books工具。”AI生成了集成代码。我们将其复制到笔记本中并运行从而定义了chat_with_tools函数。第五步测试与调试AI助手现在让我们来测试这个集成了搜索工具的AI助手。我们输入查询“请推荐一些关于龙的书籍。”在测试过程中为了确认AI确实调用了我们定义的函数而不是仅凭自身知识编造答案我们在search_books函数中添加了一个打印语句作为调试信息。修改函数的提示如下“请修改search_books函数在开始执行时添加一个打印语句输出状态信息‘正在搜索图书…’。”AI生成了修改后的代码。我们更新函数定义后再次进行测试。这次在返回结果之前我们看到了“正在搜索图书…”的调试信息这证实了函数被成功调用。https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/c7e8bc9c3f5bb009243086fe51325312_10.png总结在本节课中我们一起学习了如何利用Jupyter AI构建一个智能图书研究助手。我们经历了完整的流程准备上下文为AI编写API文档指导其生成正确代码。生成与封装让AI生成API调用代码并将其封装成可重用的函数。工具集成使用ai-suite库将函数作为“工具”提供给AI助手。测试与迭代测试助手功能并通过添加调试信息等方式迭代改进代码。你可以访问课程提供的Jupyter Lab环境亲自动手实践并尝试使用Open Library的其他API来构建功能更复杂的助手例如在检索到图书列表后进一步查询某本书的详细信息。希望你能享受使用Jupyter AI构建应用的乐趣并发现一些你想阅读的好书004探索股票市场数据https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/4f573eb493bfe2c23400666022fe75e5_0.png在本节课中我们将学习如何使用 Jupyter AI 进行数据分析和可视化。具体来说我们将通过 API 调用获取股票数据并利用 Jupyter AI 协助完成分析与可视化任务。获取股票数据首先假设我们想分析苹果公司Apple在 2024年10月24日 至 2025年10月23日 期间的股票数据。为此我们定义了分析周期的起止日期并指定了苹果公司的股票代码AAPL。为了获取这些股票数据我们将使用yfinance这个 Python 包它可以从雅虎财经获取金融数据。这与你在之前练习中看到的方法类似。我已经准备了一个包含yfinance文档的 Markdown 文件。https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/4f573eb493bfe2c23400666022fe75e5_2.pnghttps://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/4f573eb493bfe2c23400666022fe75e5_3.pnghttps://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/4f573eb493bfe2c23400666022fe75e5_2.pnghttps://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/4f573eb493bfe2c23400666022fe75e5_4.pnghttps://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/4f573eb493bfe2c23400666022fe75e5_3.pnghttps://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/4f573eb493bfe2c23400666022fe75e5_6.pnghttps://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/4f573eb493bfe2c23400666022fe75e5_4.pnghttps://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/4f573eb493bfe2c23400666022fe75e5_7.pnghttps://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/4f573eb493bfe2c23400666022fe75e5_8.png在聊天窗口中我将附加这个 Markdown 文件然后要求 Jupyter AI 使用yfinance下载我感兴趣时间段内的苹果股票数据并将结果保存到一个数据框中。https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/4f573eb493bfe2c23400666022fe75e5_6.pnghttps://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/4f573eb493bfe2c23400666022fe75e5_7.pnghttps://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-jptai/img/4f573eb493bfe2c23400666022fe75e5_8.png以下是生成的代码。我将点击此处将代码转移到单元格并运行它。这是数据框的前五行。每一行显示了特定一天的四种价格类型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 如何辅助数据科学家高效地完成从数据获取到洞察呈现的完整工作流。