SuperAPI AI 工具集

fiftyone-create-notebook

数据与分析

查看项目

更新于 10-16 04:26

技能介绍

用途

该技能用于创建 FiftyOne 工作流的 Jupyter Notebook,包括入门指南、教程、快速配方(recipe)以及完整的机器学习流水线。当用户需要生成 Notebook 时使用。

主要能力

  • 先对用户请求分类:入门(getting started)、教程(tutorial)、配方(recipe)、完整流水线(full pipeline),并对应不同模板文档(GETTING-STARTED-TEMPLATES.md、TUTORIAL-TEMPLATES.md、RECIPE-TEMPLATES.md)。若类型不明确则询问用户。
  • 生成前先起草 Notebook 大纲(章节标题、单元格类型、每格简述),获得用户批准后再生成。
  • 遵循 FiftyOne 代码约定,使用标准导入别名:import fiftyone as fo、import fiftyone.zoo as foz、import fiftyone.brain as fob、import fiftyone.types as fot、from fiftyone import ViewField as F。
  • 要求每个 Notebook 至少包含一个 fo.launch_app(dataset) 可视化单元格。
  • 用户无数据时默认使用 foz.load_zoo_dataset() 加载 zoo 数据集。
  • 生成代码前获取 https://docs.voxel51.com/llms.txt 以使用最新 API,避免过时用法。
  • 生成后读回 Notebook 校验单元格顺序、markdown/code 交替、导入别名与叙事逻辑。
  • 可用 papermill 在隔离虚拟环境中端到端执行 Notebook 并修复运行时错误。

使用方式

工作流分为四个阶段:

  1. 需求阶段:分类 Notebook 类型,确定领域与任务(目标检测、图像分类、实例/语义分割、嵌入与相似度、数据整理等),确定数据来源(zoo 数据集、本地数据、Hugging Face Hub、quickstart),确定流水线阶段(数据加载、探索、Brain 方法、推理、评估、导出),并与用户确认摘要。
  2. 设计阶段:阅读对应模板文档作为结构指南,获取 API 文档,起草带编号的单元格大纲并等待用户批准。
  3. 生成阶段:先用 Write 工具创建合法的空 .ipynb 文件(含 nbformat 4、cells 空数组),再用 NotebookEdit 以 edit_mode: "insert" 逐格插入。首格不带 cell_id(插入到开头),读回 Notebook 获取其 cell_id,后续每格以上一格的 cell_id 链式插入,确保顺序正确。代码单元格建议不超过 15 行,一格一个概念,多用 print() 展示输出。
  4. 验证阶段:读回整个 .ipynb 校验单元格数量、顺序与代码质量;用隔离虚拟环境配合 papermill 执行,修复错误后清理环境;最后向用户汇报路径、单元格数量、覆盖章节、执行状态与运行方式。

适用场景

  • 入门指南:如“创建目标检测入门 Notebook”,典型约 21 格,覆盖安装、导入、加载数据集、App 探索、统计、推理、评估、错误分析、导出与清理。
  • 教程:如“编写查找标注错误的教程”,典型约 29 格,覆盖问题陈述、概念解释、计算嵌入与 mistakenness、探索、hardness 对比、筛选与导出。
  • 配方:如“导出数据集到 COCO 格式的快速配方”,典型约 7 格,允许连续代码单元格以保持简洁。
  • 完整 ML 流水线:典型约 31 格,覆盖加载、探索、去重、推理、评估、可视化、导出与总结。

限制

  • 资料未提供该技能的收费、价格、平台支持范围等信息。
  • 生成代码需依赖 FiftyOne 及其相关包,具体依赖以 Notebook 安装单元格为准。
  • 执行验证需创建隔离虚拟环境并安装 papermill、ipykernel、anywidget 等。
  • 常见问题包括:不带 cell_id 插入导致单元格顺序颠倒;Write 未生成合法 JSON 导致空 Notebook;使用过时 API(如 dataset.count("field") 应改为 dataset.count_values("field"));session.view 需要 DatasetView 而非 Dataset;无头环境中 Plotly 组件需要 anywidget。