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 à l'aide de la bibliothèque Data Designer qui correspond à cette description :
$ARGUMENTS
Workflow
Utilisez le mode Autopilot si l'utilisateur laisse entendre qu'il ne souhaite pas répondre à des questions — par exemple, s'il dit quelque chose comme « sois péremptoire », « à toi de décider », « fais des hypothèses raisonnables », « construis simplement », « surprends-moi », etc. Sinon, utilisez le mode Interactive (par défaut).
Lisez uniquement le fichier 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 dans la sortie par défaut. Les seules exceptions pour supprimer une colonne sont : (1) l'utilisateur le demande explicitement, ou (2) c'est une colonne d'aide qui existe uniquement pour dériver d'autres colonnes (par exemple, un objet personne échantillonné utilisé pour extraire le nom, la ville, etc.). En cas de doute, conservez la colonne.
- Ne suggérez ni ne posez de questions sur les datasets de seed. Utilisez-en un uniquement si l'utilisateur fournit explicitement des données de seed ou demande de construire à partir de records existants. Lorsque vous utilisez un seed, lisez
references/seed-datasets.md. - Quand le dataset nécessite des données de personne (noms, démographie, 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 souhaite l'éditer ou créer un nouveau.
- Pour les commandes et le contexte spécifiques à ce plugin NeMo Platform (par exemple, l'approvisionnement en configs de modèle auprès de fournisseurs IGW ou les
ModelConfigs in-script, l'installation ou la publication de locales Nemotron Personas, les pointeurs de ressources côté plateforme), lisezreferences/nemo-platform-plugin-additions.md.
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"avecparams=dd.CategorySamplerParams(...). - Templates Jinja2 dans les champs
prompt,system_promptetexpr: référencez les colonnes avec{{ column_name }}, les champs imbriqués avec{{ column_name.field }}. SamplerColumnConfig: Prendparams, passampler_params.- Accès au score du juge LLM:
LLMJudgeColumnConfigproduit un dict imbriqué où chaque nom de score correspond à{reasoning: str, score: int}. Pour obtenir le score numérique, utilisez l'attribut.score. Par exemple, pour une colonne de juge nomméequalityavec un score nommécorrectness, utilisez{{ quality.correctness.score }}. Utiliser{{ quality.correctness }}retourne le dict complet, pas le score numérique.
Dépannage
nemo data-designerCLI introuvable: Dites à l'utilisateur quenemo data-designern'est pas installé dans cet environnement (nécessite Python >= 3.11). Demandez 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 la permission à l'utilisateur pour réessayer la commande avec le sandbox désactivé. En dernier recours seulement, si la réessai en dehors du sandbox échoue également, 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(
# Declaring model configs programmatically here is the portable path:
# it works for both local `run` and cluster `submit`, while the local
# YAML registry alternative only works for `run`. The provider below
# is a common default created during `nemo setup` — confirm it (or
# discover others) with `nemo inference providers list`. See
# references/nemo-platform-plugin-additions.md for the local-YAML alternative.
model_configs=[
dd.ModelConfig(
alias="text",
model="...",
provider="default/nvidia-build",
inference_parameters=dd.ChatCompletionInferenceParams(),
),
],
)
# 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 seed et les dépendances supplémentaires si la tâche l'exige. Préférez l'inclusion de model_configs lorsque le dataset utilise des colonnes LLM — le déclarer dans le script garde la config portable entre run local et submit en cluster, tandis que l'alternative du registre local YAML fonctionne uniquement avec run.