promptsource

GitHub
3k 379 非常简单 1 次阅读 今天Apache-2.0语言模型开发框架
AI 解读 由 AI 自动生成,仅供参考

PromptSource 是一个专为创建、分享和应用自然语言提示词(Prompts)而设计的开源工具包。随着大语言模型在零样本和少样本学习任务中展现出强大能力,如何高效地构建高质量的提示词已成为自然语言处理领域的关键挑战。PromptSource 正是为了解决这一痛点而生,它让研究人员和开发者能够轻松管理成千上万的提示词模板,无需重复造轮子。

该工具内置了名为 P3(Public Pool of Prompts)的大型公共提示词库,截至 2022 年初已收录约 2000 个英文提示词,覆盖 170 多个数据集。其核心技术亮点在于采用简洁的 Jinja 模板语言来定义提示词逻辑,将数据集样本灵活映射为自然语言输入与目标输出。用户只需几行 Python 代码,即可通过简单 API 调用 Hugging Face 数据集并应用这些模板,快速进行模型测试或微调。

PromptSource 特别适合 NLP 研究人员、AI 工程师以及希望探索大模型潜力的开发者使用。无论是想要复现前沿论文实验,还是希望为自己的数据快速生成多样化的训练指令,它都提供了直观的界面和结构化存储方案。此外,项目还托管了在线版本,方便用户直接浏览和体验现有的提示词资源,极大地降低了提示工程的技术门槛。

使用场景

某电商数据团队需要快速构建一个多语言情感分析系统,以处理全球用户的海量评论数据。

没有 promptsource 时

  • 重复造轮子:工程师需手动为每个新数据集(如亚马逊评论、Yelp 评分)编写数十种不同的自然语言提示词模板,耗时且容易出错。
  • 格式混乱难统一:团队成员各自维护本地脚本,提示词格式五花八门,缺乏标准化的模板语言(如 Jinja),导致代码难以复用和协作。
  • 零样本能力受限:由于缺乏经过验证的高质量提示词库,模型在新任务上的零样本(Zero-shot)泛化表现不稳定,需耗费大量算力进行微调。
  • 共享协作困难:优秀的提示词设计散落在个人电脑中,无法像开源代码一样被社区发现、分享或直接调用,造成资源浪费。

使用 promptsource 后

  • 即取即用海量模板:直接调用 P3 公共池中现有的 2000+ 英文提示词模板,覆盖 170+ 数据集,瞬间完成情感分析任务的提示词构建。
  • 标准化开发流程:利用内置的 Jinja 模板语言统一管理输入输出映射,确保所有提示词结构清晰、易于维护和跨项目移植。
  • 激发模型潜能:借助经学术界验证的多任务提示词,大幅提升了大模型在未见过的电商评论数据上的零样本推理准确率,减少微调需求。
  • 高效社区协作:通过简单 API 即可加载他人分享的优秀模板,或将自研的高效提示词上传至托管平台,实现团队内外的知识即时流转。

promptsource 将提示词工程从“手工作坊”升级为“工业化流水线”,让开发者能专注于业务逻辑而非重复构造基础指令。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

未说明

内存

未说明

依赖
notes在 macOS (Darwin) 上若遇到警告或错误,建议将 PyArrow 降级至 3.0.0 版本。部分数据集(如 story_cloze)需要手动下载并放置到 ~/.cache/promptsource 目录,或通过 PROMPTSOURCE_MANUAL_DATASET_DIR 环境变量指定路径。若仅需使用现有提示而非通过界面创建新提示,可修改 setup.py 移除 Python 3.7 的版本限制。
python3.7 (创建新提示时必需;仅使用提示时可移除该限制)
datasets
jinja2
streamlit
pyarrow
promptsource hero image

快速开始

PromptSource

PromptSource 是一个用于创建、分享和使用自然语言提示的工具包。

近期的研究表明,大型语言模型具备在零样本情况下对新任务进行合理泛化的能力。例如,GPT-3 证明了大型语言模型具有强大的零样本和少样本能力。随后,FLANT0 进一步表明,通过大规模多任务微调的预训练语言模型能够实现更强大的零样本性能。这些研究的一个共同点是都使用了提示(prompt),这一方法引起了自然语言处理研究人员和工程师的广泛关注。这也凸显了开发用于创建、分享和使用自然语言提示的新工具的需求。

提示是一种将数据集中的示例映射为自然语言输入和目标输出的函数。PromptSource 包含一个不断增长的提示集合(我们称之为 P3Public Pool of Prompts)。截至 2022 年 1 月 20 日,P3 中已收录了针对 170 多个英文数据集的约 2,000 条英文提示。

PromptSource 提供了创建和分享自然语言提示的工具(参见 如何创建提示),并通过简单的 API 使用成千上万现有的以及新创建的提示(参见 如何使用提示)。提示以独立的结构化文件形式保存,并采用一种名为 Jinja 的简单模板语言编写。PromptSource 中为 SNLI 提供的提示示例如下:

{{premise}}

问题:这是否意味着“{{hypothesis}}”?是、否,还是也许?||| {{answer_choices[label]}}

您可以在 PromptSource 的托管版本中浏览现有提示:https://huggingface.co/spaces/bigscience/promptsource

设置

如果您不打算创建新提示,只需运行以下命令即可:

pip install promptsource

否则,您需要在本地安装该仓库:

  1. 下载仓库
  2. 导航到仓库的根目录
  3. 运行 pip install -e . 以安装 promptsource 模块

注意:出于稳定性考虑,目前您需要使用 Python 3.7 环境来执行最后一步。然而,如果您只是打算使用提示,而不通过界面创建新提示,则可以在 setup.py 中移除这一限制,并在本地安装该软件包。

如何使用提示

您可以将提示应用于 Hugging Face 数据集库 中的数据集示例。

# 加载 ag_news 数据集中的一个示例
>>> from datasets import load_dataset
>>> dataset = load_dataset("ag_news", split="train")
>>> example = dataset[1]

# 加载该数据集的提示
>>> from promptsource.templates import DatasetTemplates
>>> ag_news_prompts = DatasetTemplates('ag_news')

# 打印该数据集可用的所有提示。字典的键是唯一标识每个提示的 UUID,值则是封装提示的 `Template` 实例。
>>> print(ag_news_prompts.templates)
{'24e44a81-a18a-42dd-a71c-5b31b2d2cb39': <promptsource.templates.Template object at 0x7fa7aeb20350>, '8fdc1056-1029-41a1-9c67-354fc2b8ceaf': <promptsource.templates.Template object at 0x7fa7aeb17c10>, '918267e0-af68-4117-892d-2dbe66a58ce9': <promptsource.templates.Template object at 0x7fa7ac7a2310>, '9345df33-4f23-4944-a33c-eef94e626862': <promptsource.templates.Template object at 0x7fa7ac7a2050>, '98534347-fff7-4c39-a795-4e69a44791f7': <promptsource.templates.Template object at 0x7fa7ac7a1310>, 'b401b0ee-6ffe-4a91-8e15-77ee073cd858': <promptsource.templates.Template object at 0x7fa7ac7a12d0>, 'cb355f33-7e8c-4455-a72b-48d315bd4f60': <promptsource.templates.Template object at 0x7fa7ac7a1110>}

# 根据名称选择一个提示
>>> prompt = ag_news_prompts["classify_question_first"]

# 将提示应用于示例
>>> result = prompt.apply(example)
>>> print("INPUT: ", result[0])
INPUT:  哪个标签最能描述这篇新闻文章?
卡莱集团正着眼于商用航空航天领域(路透社) 路透社——以善于在国防工业领域做出时机把握精准且有时颇具争议性决策而闻名的私募股权投资公司卡莱集团,近日悄然将赌注押向了该市场的另一细分领域。
>>> print("TARGET: ", result[1])
TARGET:  商业

如果您正在寻找某个数据集特定子集的可用提示,则应使用以下语法:

dataset_name, subset_name = "super_glue", "rte"

dataset = load_dataset(f"{dataset_name}/{subset_name}", split="train")
example = dataset[0]

prompts = DatasetTemplates(f"{dataset_name}/{subset_name}")

您还可以收集所有与各自数据集相关的提示:

>>> from promptsource.templates import TemplateCollection

# 获取 PromptSource 中所有可用提示
>>> collection = TemplateCollection()

# 打印一个字典,其中键是 (数据集名称, 子集名称) 的组合,值则是 `DatasetTemplates` 的实例。
>>> print(collection.datasets_templates)
{('poem_sentiment', None): <promptsource.templates.DatasetTemplates object at 0x7fa7ac7939d0>, ('common_gen', None): <promptsource.templates.DatasetTemplates object at 0x7fa7ac795410>, ('anli', None): <promptsource.templates.DatasetTemplates object at 0x7fa7ac794590>, ('cc_news', None): <promptsource.templates.DatasetTemplates object at 0x7fa7ac798a90>, ('craigslist_bargains', None): <promptsource.templates.DatasetTemplates object at 0x7fa7ac7a2c10>,...}

您可以在 文档 中了解更多关于 PromptSource API 的信息,以便存储、操作和使用提示。

如何创建提示

PromptSource 提供了一个基于 Web 的图形用户界面,使开发者能够使用模板语言编写提示,并立即在不同示例上查看其输出结果。

该应用包含三种模式:

  • Sourcing:创建和编写新提示
  • Prompted dataset viewer:在整组数据集上检查您编写的(或现有的)提示
  • Helicopter view:汇总 P3 当前状态的高级指标

要本地启动该应用,请先确保您已按照 设置 中的步骤操作,然后从仓库的根目录运行:

streamlit run promptsource/app.py

您也可以在 PromptSource 的托管版本中浏览现有提示:https://bigscience.huggingface.co/promptsource。请注意,托管版本禁用了 Sourcing 模式(streamlit run promptsource/app.py -- --read-only)。

写作提示

在创建新的提示之前,您应该阅读贡献指南,其中逐步介绍了如何为提示集合做出贡献。

需要手动下载的数据集

某些数据集无法由datasets库自动处理,需要用户手动下载(例如story_cloze)。

为了也能支持这些数据集,我们要求用户将数据集下载并放置在~/.cache/promptsource目录下。该目录是所有手动下载数据集的根目录。

您可以通过设置PROMPTSOURCE_MANUAL_DATASET_DIR环境变量来覆盖此默认路径。该变量应指向根目录。

开发结构

PromptSource和P3最初是作为BigScience开放研究项目🌸的一部分开发的,这是一项为期一年、旨在研究大型模型和数据集的倡议。该项目的目标是在大型科技公司之外的公共环境中研究语言模型。目前,该项目共有来自50个国家、250多家机构的600名研究人员参与。

特别是,PromptSource和P3是论文《多任务提示训练实现零样本任务泛化》(arXiv:2110.08207)中的第一步。

您可以在此处找到用于复现该论文结果的官方仓库:https://github.com/bigscience-workshop/t-zero。 我们还发布了T0*(读作“T Zero”),这是一系列基于P3训练并在论文中介绍的模型。检查点可在此处获取。

已知问题

OS X上关于Darwin的警告或错误: 请尝试将PyArrow降级到3.0.0版本。

ConnectionRefusedError: [Errno 61] 连接被拒绝: 偶尔会发生。请尝试重启应用程序。

引用

如果您觉得P3或PromptSource有用,请引用以下文献:

@misc{bach2022promptsource,
      title={PromptSource: 自然语言提示的集成开发环境与存储库},
      author={Stephen H. Bach, Victor Sanh, Zheng-Xin Yong, Albert Webson, Colin Raffel, Nihal V. Nayak, Abheesht Sharma, Taewoon Kim, M Saiful Bari, Thibault Fevry, Zaid Alyafeai, Manan Dey, Andrea Santilli, Zhiqing Sun, Srulik Ben-David, Canwen Xu, Gunjan Chhablani, Han Wang, Jason Alan Fries, Maged S. Al-shaibani, Shanya Sharma, Urmish Thakker, Khalid Almubarak, Xiangru Tang, Mike Tian-Jian Jiang, Alexander M. Rush},
      year={2022},
      eprint={2202.01279},
      archivePrefix={arXiv},
      primaryClass={cs.LG}
}

版本历史

v0.2.32022/07/02
v0.2.22022/03/01
v0.2.12022/02/14
v0.2.02022/02/04
v0.1.02021/10/18

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

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 真正成长为懂上

159.3k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|1周前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像

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 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架