数据设计器Skill data-designer

该技能指导用户利用Data Designer库构建合成数据集、生成合成数据或搭建数据生成流水线。它详细说明了在交互式/自动驾驶模式下如何推进工作流,并提供了列保留规则、使用提示、故障排除方法以及Python输出模板。适用于AI数据开发、数据增强、生成式数据创建和数据管道设计。关键词:合成数据集生成、Data Designer、数据生成管道、数据合成、数据增强。

数据合成 0 次安装 2 次浏览 更新于 9/7/2026
名称 data-designer
描述 当用户想要创建数据集、生成合成数据或构建数据生成管道时使用。 argument-hint: [描述你想要生成的数据集]
开源协议 Apache-2.0 metadata: owner: DataDesigner

开始之前

不要事先探索工作区。工作流的“学习”步骤会给你所需的一切。

目标

使用Data Designer库构建一个符合以下描述的合成数据集:

$ARGUMENTS

工作流

如果用户暗示他们不想回答问题,则使用自动驾驶模式——例如,他们说“有主见”、“你决定”、“做合理假设”、“直接构建吧”、“给我惊喜”等。否则,使用交互式模式(默认)。

只读取与所选模式匹配的工作流文件,然后按照它执行:

  • 交互式 → 读取 workflows/interactive.md
  • 自动驾驶 → 读取 workflows/autopilot.md

规则

  • 默认情况下,保留输出中的所有列。删除列的唯一例外是:(1)用户明确要求,或(2)它是一个辅助列,仅用于派生其他列(例如,一个抽样的人对象,用于提取姓名、城市等)。如有疑问,请保留该列。
  • 不要建议或询问种子数据集。只有当用户明确提供种子数据或要求基于现有记录构建时,才使用种子数据集。使用种子时,请阅读 references/seed-datasets.md
  • 当数据集需要人员数据(姓名、人口统计、地址)时,请阅读 references/person-sampling.md
  • 如果存在与数据集描述匹配的数据集脚本,请询问用户是希望编辑它还是创建新脚本。

使用提示和常见陷阱

  • 采样器和验证列需要同时指定类型和参数。 例如,sampler_type="category" 以及 params=dd.CategorySamplerParams(...)
  • promptsystem_promptexpr 字段中的Jinja2模板: 使用 {{ column_name }} 引用列,使用 {{ column_name.field }} 引用嵌套字段。
  • SamplerColumnConfig 接受 params,而不是 sampler_params
  • LLM评委得分访问: LLMJudgeColumnConfig 生成一个嵌套字典,其中每个得分名称映射到 {reasoning: str, score: int}。要获取数值分数,请使用 .score 属性。例如,对于一个名为 quality 的评委列,其得分为 correctness,请使用 {{ quality.correctness.score }}。使用 {{ quality.correctness }} 将返回完整的字典,而不是数值分数。

故障排除

  • 找不到data-designer命令行工具: 告知用户 data-designer 未在此环境中安装(需要 Python >= 3.10)。询问他们是希望您创建虚拟环境并安装它,还是他们更愿意自己安装。未经用户许可,不要安装任何东西。
  • 预览期间出现网络错误: 沙盒环境可能正在阻止出站请求。获取用户许可,以在禁用沙盒的情况下重试命令。作为最后的手段,如果在沙盒外重试也失败,则告知用户自行运行该命令。

输出模板

编写一个Python文件到当前目录,其中包含一个返回 DataDesignerConfigBuilderload_config_builder() 函数。为文件取一个描述性名称(例如 customer_reviews.py)。使用PEP 723内联元数据来声明依赖项。

# /// script
# dependencies = [
#   "data-designer", # always required
#   "pydantic", # only if this script imports from pydantic
#   # add additional dependencies here
# ]
# ///
import data_designer.config as dd
from pydantic import BaseModel, Field


# Use Pydantic models when the output needs to conform to a specific schema
class MyStructuredOutput(BaseModel):
    field_one: str = Field(description="...")
    field_two: int = Field(description="...")


# Use custom generators when built-in column types aren't enough
@dd.custom_column_generator(
    required_columns=["col_a"],
    side_effect_columns=["extra_col"],
)
def generator_function(row: dict) -> dict:
    # add custom logic here that depends on "col_a" and update row in place
    row["name_in_custom_column_config"] = "custom value"
    row["extra_col"] = "extra value"
    return row


def load_config_builder() -> dd.DataDesignerConfigBuilder:
    config_builder = dd.DataDesignerConfigBuilder()

    # Seed dataset (only if the user explicitly mentions a seed dataset path)
    # config_builder.with_seed_dataset(dd.LocalFileSeedSource(path="path/to/seed.parquet"))

    # config_builder.add_column(...)
    # config_builder.add_processor(...)

    return config_builder

仅当任务需要时,才包含Pydantic模型、自定义生成器、种子数据集和额外依赖项。