Blog›Guides

55,000条真实世界AI提示词上的微调

Wikiprompt的公开数据集提供了超过55,000个真实、由人类撰写的提示,并配有输出和质量信号,这是一种不同于合成语料库的训练数据。

55,000条真实世界AI提示词上的微调

在55,000个真实世界AI提示词上进行微调

大多数用于微调和评估的提示词数据集都是合成生成的:由另一个模型生成,由第三个模型过滤,再由第四个模型评分。这种流程成本低且可扩展,但也意味着数据从未触及人类意图。没有人真正需要这些输出。没有人试图完成一项实际工作。

Wikiprompt背后的数据集是另一种类型的产物。它包含超过55,000个由真实用户编写、公开发布并用于产生他们足够在意并愿意分享的结果的提示词:一幅肖像、一个营销标题、一段代码、一份教案。在“为训练模型而写”和“为完成任务而写”之间的差距,正是如果你在构建或评估LLM时,这份数据值得再看一眼的全部原因。

为什么真实提示词携带的信号与合成提示词不同

合成提示词语料库围绕生成模型认为合理的指令聚集:语法干净,主题分布均匀,因为有人设计了分类法并要求模型去填充。真实提示词更杂乱,而这种杂乱本身就是信息。人们会指定不足、指定过度、以奇怪的顺序串联约束条件,并用专有名词而不是描述来引用某种风格。如果你在训练一个真正有用的模型,而不是仅仅在基准测试上表现良好,那么真实请求的分布更接近你的模型在生产中实际会遇到的情况。

这里还有一个对你有利的选择效应。这个数据集中的每条记录都是一个提示词,有人费心发布它,因为它效果足够好,值得展示。这不同于“人们输入的提示词”的随机样本,但对于微调或少样本检索来说,这可以说是一个更好的样本:一个提示词配上了它产生了好结果的证据。

数据转储中实际包含什么

拉取/dataset/prompts,每条记录会给你:

  • content:实际的提示词文本,也就是你会放进训练示例中的内容。
  • model:提示词针对或运行过的AI模型(GPT Image、Midjourney、Claude、Nano Banana、Kling等),这样你可以按目标模型切片,而不是假设只有一个。
  • category和tags:用于主题条件采样或分层划分的粗粒度和细粒度标签。
  • metadata:结构化字段,包括media_type、aspect_ratio、style,以及如果人工编辑对输出进行了评分,还包括涵盖创造力、实用性和技术执行等方面的质量评估。
  • media:与生成它的提示词相关联的实际输出(图像或视频URL),这是你在实验室之外能获得的最接近真实结果的东西。
  • author和original_source:追溯到原始帖子的来源信息。
  • 最后一组,即媒体加元数据加质量评估,是合成数据集在结构上无法拥有的。一个生成的提示词语料库可以告诉你提示词说了什么。它无法告诉你,基于独立的人类判断,它产生的东西是否真的很好。Wikiprompt的编辑层意味着有意义的记录切片都附带了这种判断,这使得它们可以作为奖励模型或LLM作为评判者的校准集的弱标签,而不仅仅是作为指令调整的输入。

    以这个纪念性砖砌建筑拍摄提示词为例:价值不仅在于文本,还在于文本旁边它实际生成的图像,这让你可以检查候选模型是否可能从相同指令中生成类似内容。像这个武侠剑女唐卡构图或这个唐代肖像提示词这样的风格化作品也是如此:每个都将一个具体、带有观点的指令与一个具体的视觉结果配对,这正是那种在其他方式下难以大规模获取的(指令,输出)对。

    过滤和结构化以便实际使用

    原始转储在设计上未经过滤(除了Wikiprompt自己的审核:只导出活跃、干净的提示词),所以在将微调指向它之前,决定你在优化什么,并相应地进行过滤:

  • 按目标模型,使用model字段,如果你在构建特定模型的适配器,并且不想把Midjourney风格的语法泄漏到Claude提示词集中。
  • 按类别,如果你想要一个特定领域的切片(creative、coding、marketing、research等五个以上),而不是整个目录。在UI中浏览创意提示词是快速了解某个类别实际内容的好方法,然后再决定是否基于它进行过滤。
  • 按质量评估,如果元数据评分较低,则丢弃或降低记录的权重,如果你的目标是奖励信号而不是原始覆盖率。
  • 按时间(`created_at`/`updated_at`),如果你关心反映当前模型能力的提示词,而不是旧一代工具的模式。
  • 在机制上,分页基于键集:每个响应包含一个next URL,你跟随它直到next返回null。每页最多500条记录:

    curl "https://www.wikiprompt.org/dataset/prompts?limit=500"

    一个最小的拉取所有数据的循环在Python中如下:

    import requests

    url = "https://www.wikiprompt.org/dataset/prompts?limit=500"

    records = []

    while url:

    resp = requests.get(url).json()

    records.extend(resp["records"])

    url = resp.get("next")

    print(len(records), "records")

    无需API密钥,已启用CORS,并且有边缘缓存,所以完整爬取目录很快,不会给任何人的源服务器带来压力。如果你想要交互式访问而不是批量拉取,同一个目录可以通过搜索API查询,还有一个MCP服务器,如果你要将其接入代理而不是训练流程。

    归属不是可选的,也不是许可证

    要精确理解这些数据是什么。Wikiprompt聚合了公开帖子;它不持有或授予对底层内容的正式许可证,这个转储也不提供。每个提示词都有一个original_source指向它来源的帖子,以及一个author字段标明编写者。如果你在此数据上进行微调,请发布一个模型卡,注明Wikiprompt作为聚合者,并在你重新分发或直接引用任何内容时保留对原始作者的归属。这是一个低门槛,也是正确的做法:这个数据集之所以存在,是因为成千上万的人选择公开分享他们的作品,而将其视为无限制的训练资源,正是导致产生这类数据的生态系统停止存在的方式。

    如果你在决定“真实但杂乱”是否比“合成但干净”更适合你的用例,诚实的答案是这取决于你在训练什么。如果你的模型需要处理人们实际请求的分布,同时还需要独立判断结果是否良好,那么这是少数几个在同一记录中同时提供两者的公共语料库之一。

    Tags
    open-data·dataset·fine-tuning·machine-learning·ai-prompts·training-data·api