data-designer

Par nvidia · skills

Utiliser lorsque l'utilisateur souhaite créer un jeu de données, générer des données synthétiques ou construire un pipeline de génération de données.

npx skills add https://github.com/nvidia/skills --skill data-designer

Avant de commencer

N'explorez pas d'abord l'espace de travail. L'étape Learn du workflow vous donne tout ce dont vous avez besoin.

Objectif

Construire un dataset synthétique en utilisant la bibliothèque Data Designer qui correspond à cette description :

$ARGUMENTS

Workflow

Utilisez le mode Autopilot si l'utilisateur implique qu'il ne veut pas répondre à des questions — par exemple, s'il dit quelque chose comme « soyez sans compromis », « vous décidez », « faites des hypothèses raisonnables », « construisez simplement », « surprenez-moi », etc. Sinon, utilisez le mode Interactive (par défaut).

Lisez uniquement le fichier de workflow qui correspond au mode sélectionné, puis suivez-le :

  • Interactive → lisez workflows/interactive.md
  • Autopilot → lisez workflows/autopilot.md

Règles

  • Conservez toutes les colonnes en sortie par défaut. Les seules exceptions pour supprimer une colonne sont : (1) l'utilisateur la demande explicitement, ou (2) c'est une colonne d'assistance qui existe uniquement pour dériver d'autres colonnes (par exemple, un objet personne échantillonné utilisé pour extraire un nom, une ville, etc.). En cas de doute, conservez la colonne.
  • Ne suggérez ou ne posez pas de questions sur les datasets de départ. N'en utilisez un que si l'utilisateur fournit explicitement des données de départ ou demande de construire à partir d'enregistrements existants. Lorsque vous utilisez un seed, lisez references/seed-datasets.md.
  • Quand le dataset nécessite des données de personnes (noms, données démographiques, adresses), lisez references/person-sampling.md.
  • Si un script de dataset qui correspond à la description du dataset existe déjà, demandez à l'utilisateur s'il faut l'éditer ou en créer un nouveau.

Conseils d'utilisation et pièges courants

  • Les colonnes Sampler et validation ont besoin d'un type et de params. Par exemple, sampler_type="category" avec params=dd.CategorySamplerParams(...).
  • Templates Jinja2 dans les champs prompt, system_prompt et expr : référencez les colonnes avec {{ column_name }}, les champs imbriqués avec {{ column_name.field }}.
  • SamplerColumnConfig : Prend params, pas sampler_params.
  • Accès au score du juge LLM : LLMJudgeColumnConfig produit un dict imbriqué où chaque nom de score mappe vers {reasoning: str, score: int}. Pour obtenir le score numérique, utilisez l'attribut .score. Par exemple, pour une colonne de juge nommée quality avec un score nommé correctness, utilisez {{ quality.correctness.score }}. Utiliser {{ quality.correctness }} retourne le dict complet, pas le score numérique.

Dépannage

  • Commande data-designer CLI non trouvée : Informez l'utilisateur que data-designer n'est pas installé dans cet environnement (nécessite Python >= 3.10). Demandez-lui s'il souhaite que vous créiez un environnement virtuel et l'installiez, ou s'il préfère le faire lui-même. N'installez rien sans la permission de l'utilisateur.
  • Erreurs réseau lors de l'aperçu : Un environnement sandbox peut bloquer les requêtes sortantes. Demandez à l'utilisateur la permission de relancer la commande avec le sandbox désactivé. En dernier recours seulement, si la nouvelle tentative en dehors du sandbox échoue aussi, dites à l'utilisateur d'exécuter la commande lui-même.

Modèle de sortie

Écrivez un fichier Python dans le répertoire courant avec une fonction load_config_builder() qui retourne un DataDesignerConfigBuilder. Nommez le fichier de manière descriptive (par exemple, customer_reviews.py). Utilisez les métadonnées inline PEP 723 pour les dépendances.

# /// 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

Incluez uniquement les modèles Pydantic, les générateurs personnalisés, les datasets de départ et les dépendances supplémentaires quand la tâche l'exige.

Skills similaires