prodigy-recipes
prodigy-recipes 是专为 Prodigy 标注工具打造的一套开源代码示例库,旨在帮助开发者高效构建自定义的数据标注流程。它提供了一系列针对文本、图像等数据的“食谱”(即脚本模板),覆盖了命名实体识别(NER)等多种常见任务场景。
这套资源主要解决了用户在面对复杂数据时,难以快速搭建灵活、定制化标注界面的痛点。通过提供经过简化和详细注释的代码,它让用户能够轻松理解 Prodigy 的内部运作机制,并在此基础上修改逻辑,例如调整样本排序策略、添加数据过滤规则或集成特定的分词器(如 BERT)。
prodigy-recipes 特别适合拥有 Python 基础的 AI 工程师、数据科学家及研究人员使用。如果你需要为特定领域模型准备高质量训练数据,或者希望深入探索主动学习(Active Learning)在标注中的应用,这将是非常实用的起点。其独特亮点在于不仅提供了开箱即用的脚本,更鼓励用户通过修改生成器函数和回调方法来深度控制标注行为,从而将通用工具转化为契合具体业务需求的专属解决方案。需要注意的是,使用这些脚本前需持有 Prodigy 的合法授权。
使用场景
某医疗科技公司的 NLP 团队正急需构建一个能精准识别临床病历中“药物名称”与“副作用”的实体抽取模型,以辅助药物警戒分析。
没有 prodigy-recipes 时
- 标注效率低下:团队成员只能使用
ner.manual进行全量盲标,面对数万条病历数据,大量时间浪费在确认无实体存在的空白文本上。 - 冷启动困难:在项目初期缺乏训练数据时,无法利用模型反馈来智能推荐高价值样本,导致早期标注方向盲目。
- 领域适配僵化:面对医学专有名词的复杂变体(如缩写、拼写误差),缺乏基于模糊匹配或自定义规则的预高亮功能,完全依赖人工逐字勾选。
- 策略调整成本高:若想尝试“优先标注不确定样本”等主动学习策略,需从零编写复杂的底层逻辑代码,试错周期极长。
使用 prodigy-recipes 后
- 智能聚焦高价值数据:通过
ner.teach食谱引入“人在回路”机制,系统自动根据现有模型预测结果,优先推送最不确定或最具信息量的样本供标注,效率提升数倍。 - 灵活定制预标注规则:利用
ner.fuzzy_manual结合spaczz库,轻松配置模糊匹配规则,自动高亮形似药物名的候选词,大幅减少人工检索负担。 - 快速验证标注策略:直接修改现成的 Python 脚本,将采样策略从
prefer_uncertain()切换为prefer_high_scores(),无需重构即可实时对比不同主动学习方案的效果。 - 无缝集成高级分词:针对医学长词特性,直接调用
ner.manual.bert食谱启用 BERT 分词器,确保子词级别的标注粒度准确无误。
prodigy-recipes 通过提供一系列可脚本化、可定制的“烹饪配方”,将原本需要数周开发的定制化标注流程缩短至几小时,让团队能专注于数据质量而非工具开发。
运行环境要求
未说明
未说明

快速开始
Prodigy 食谱
本仓库包含一系列用于 Prodigy 的食谱,Prodigy 是我们一款可脚本化的文本、图像及其他数据的标注工具。要使用此仓库,您需要拥有 Prodigy 的许可证——更多详情请参阅此页面。如有任何问题或错误报告,请使用Prodigy 支持论坛。如果您发现了错误或漏洞,欢迎提交一个pull request。
✨ 重要提示: 本仓库中的食谱与 Prodigy 自带的内置食谱并不完全一致。这些食谱经过编辑,加入了注释和更多信息,并且部分食谱也进行了简化,以便于理解其工作原理,同时也可以作为自定义食谱的基础。
📋 使用方法
安装好 Prodigy 后,您应该能够在终端中直接运行 prodigy 命令,或者通过 python -m 来执行:
python -m prodigy
prodigy 命令会列出所有内置的食谱。若要使用自定义的食谱脚本,只需通过 -F 参数指定文件路径即可:
python -m prodigy ner.teach your_dataset en_core_web_sm ./data.jsonl --label PERSON -F prodigy-recipes/ner/ner_teach.py
您还可以使用 --help 标志来查看某个食谱的可用参数概览,例如 prodigy ner.teach -F ner_teach_.py --help。
一些尝试
您可以编辑食谱脚本中的代码,以自定义 Prodigy 的行为。
- 尝试将
prefer_uncertain()替换为prefer_high_scores()。 - 尝试编写一个自定义排序函数。该函数只需要是一个生成器,接收
(score, example)元组序列,并产出example字典序列。 - 尝试添加一个过滤器,从流中移除某些问题。例如,编写一个只提问实体长度为两个词的问题的过滤器。
- 尝试自定义
update()回调函数,加入额外的日志记录或其他功能。
🍳 食谱
命名实体识别
| 食谱 | 描述 |
|---|---|
ner.teach |
在模型参与循环的情况下,收集可用于命名实体识别模型的最佳训练数据。根据您的标注,Prodigy 会决定接下来提出哪些问题。 |
ner.match |
提供与给定模式文件匹配的短语建议,并标记它们是否为您感兴趣的实体示例。模式文件可以包含精确字符串或适用于 spaCy Matcher 的标记模式。 |
ner.manual |
手动按标记进行实体标注。仅需分词器,无需实体识别器,也不进行主动学习。可选地,根据模式预先高亮显示实体范围。 |
ner.fuzzy_manual |
类似于 ner.manual,但使用来自 spaczz 库的 FuzzyMatcher 来预先高亮候选实体。 |
ner.manual.bert |
使用 BERT 的 WordPiece 分词器,高效地进行面向 Transformer 模型的手动 NER 标注。 |
ner.correct |
通过手动纠正模型预测来创建黄金标准数据。此食谱以前称为 ner.make_gold。 |
ner.silver-to-gold |
获取一个包含二元接受/拒绝标注的现有“银”数据集,合并这些标注以在标注所定义的约束条件下找到最佳分析结果,并手动编辑以创建一个完美且完整的“黄金”数据集。 |
ner.eval_ab |
通过比较两个 NER 模型的预测结果,并从标注流中构建评估集,从而对这两个模型进行评估。 |
ner_fuzzy_manual |
使用来自 spaczz fuzzy 匹配器的建议预先高亮显示后,手动按标记标注实体。 |
文本分类
| 配方 | 描述 |
|---|---|
textcat.manual |
手动标注适用于文本的类别。支持单标签和多标签的标注任务。多标签可选择标记为互斥。 |
textcat.correct |
手动校正 textcat 模型的预测结果。高于接受阈值的预测结果将被自动预选(默认为 0.5)。Prodigy 会根据组件配置推断这些类别是否应互斥。 |
textcat.teach |
在模型参与循环的过程中,收集用于文本分类模型的最佳训练数据。Prodigy 将根据您的标注决定接下来提出哪些问题。 |
textcat.custom-model |
使用主动学习驱动的文本分类,并结合自定义模型。为了演示其工作原理,此示例配方使用了一个简单的虚拟模型,该模型“预测”随机分数。不过,您可以将其替换为您选择的任何模型,例如使用 PyTorch、TensorFlow 或 scikit-learn 实现的文本分类模型。 |
术语
| 配方 | 描述 |
|---|---|
terms.teach |
利用词向量和种子术语来构建术语表。Prodigy 会基于词向量建议相似术语,并相应地更新目标向量。 |
图像
| 配方 | 描述 |
|---|---|
image.manual |
手动标注图像,可在图像上绘制矩形边界框或多边形形状。 |
image-caption |
为图像添加说明文字,预先使用 PyTorch 实现的图像描述模型填充说明,并进行错误分析。 |
image.frozenmodel |
使用 TensorFlow 的目标检测 API 进行模型参与循环的手动标注。 |
image.servingmodel |
使用 TensorFlow 的目标检测 API 进行模型参与循环的手动标注。此处采用 TensorFlow Serving |
image.trainmodel |
使用 TensorFlow 的目标检测 API 进行模型参与循环的手动标注与训练。 |
其他
| 配方 | 描述 |
|---|---|
mark |
点击浏览预先准备好的示例,不涉及模型参与循环。 |
choice |
使用多项选择选项标注数据。标注后的示例将包含额外属性 "accept": [],用于映射所选选项的 ID。 |
question_answering |
使用自定义 HTML 界面标注问答对。 |
社区配方
| 配方 | 作者 | 描述 |
|---|---|---|
phrases.teach |
@kabirkhan | 现已成为 sense2vec 的一部分。 |
phrases.to-patterns |
@kabirkhan | 现已成为 sense2vec 的一部分。 |
records.link |
@kabirkhan | 使用 dedupe 库链接多个数据集中的记录。 |
教程配方
这些配方曾在我们的某个教程中出现过。
| 配方 | 描述 |
|---|---|
span-and-textcat |
同时进行 spancat 和 textcat 标注。非常适合聊天机器人! |
terms.from-ner |
从之前的 NER 标注中生成术语。 |
audio-with-transcript |
处理手动音频标注以及转录任务。 |
progress |
展示一个用于跟踪标注速度的 update 回调函数。 |
📚 示例数据集和模式
为了让大家更轻松地入门,我们还提供了一些
example-datasets,既有原始数据,也有使用 Prodigy 创建的标注数据。如需查看适用于 ner.teach 或 ner.match 等配方的基于标记的匹配模式示例,请参阅
example-patterns 目录。
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备