Structured Outputs, Jinja Expressions, and Conditional Generation
🎨 Data Designer Tutorial: Structured Outputs, Jinja Expressions, and Conditional Generation
📚 What you'll learn
In this notebook, we will continue our exploration of Data Designer, demonstrating more advanced data generation using structured outputs, Jinja expressions, and conditional generation with skip.when.
If this is your first time using Data Designer, we recommend starting with the first notebook in this tutorial series.
📦 Import Data Designer
-
data_designer.configprovides access to the configuration API. -
DataDesigneris the main interface for data generation.
⚙️ Initialize the Data Designer interface
-
DataDesigneris the main object that is used to interface with the library. -
When initialized without arguments, the default model providers are used.
🎛️ Define model configurations
-
Each
ModelConfigdefines a model that can be used during the generation process. -
The "model alias" is used to reference the model in the Data Designer config (as we will see below).
-
The "model provider" is the external service that hosts the model (see the model config docs for more details).
-
By default, we use build.nvidia.com as the model provider.
🏗️ Initialize the Data Designer Config Builder
-
The Data Designer config defines the dataset schema and generation process.
-
The config builder provides an intuitive interface for building this configuration.
-
The list of model configs is provided to the builder at initialization.
🧑🎨 Designing our data
-
We will again create a product review dataset, but this time we will use structured outputs and Jinja expressions.
-
Structured outputs let you specify the exact schema of the data you want to generate.
-
Data Designer supports schemas specified using either json schema or Pydantic data models (recommended).
We'll define our structured outputs using Pydantic data models
💡 Why Pydantic?
Pydantic models provide better IDE support and type validation.
They are more Pythonic than raw JSON schemas.
They integrate seamlessly with Data Designer's structured output system.
Next, let's design our product review dataset using a few more tricks compared to the previous notebook.
[16:03:11] [INFO] ✅ Validation passed
Next, we will use more advanced Jinja expressions to create new columns.
Jinja expressions let you:
-
Access nested attributes:
{{ customer.first_name }} -
Combine values:
{{ customer.first_name }} {{ customer.last_name }} -
Use conditional logic:
{% if condition %}...{% endif %}
🔎 Identified 1 validation issue in your Data Designer column definitions ──────────────────────────────────────────────── Column: product ──────────────────────────────────────────────── ⚠️ WARNING | PARQUET_STORAGE Native Parquet storage at $['price'] combines schema branches whose native storage depends on generated values. Add 'x-data-designer-storage': 'json' to this field or an enclosing schema node, or set storage_encoding='json' on the column. This is a schema risk, not a prediction that every generated batch will fail. ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
🚦 Conditional generation with skip.when
So far, every column is generated for every row. But sometimes an expensive LLM column only makes sense for a subset of rows — for example, a detailed complaint analysis is only useful when the review is negative.
Data Designer lets you skip column generation on a per-row basis using SkipConfig.
Skipped rows receive None by default, but you can provide a sentinel value with
skip=dd.SkipConfig(when="...", value="N/A") to write a specific value instead.
There are three patterns to know:
| Pattern | How | Effect |
|---|---|---|
| Expression gate | skip=dd.SkipConfig(when="...") |
Skip this column when the Jinja2 expression is truthy |
| Skip propagation (default) | Downstream column depends on a skipped column | Automatically skipped too (propagate_skip=True by default) |
| Propagation opt-out | propagate_skip=False on the downstream column |
Always generates, even if an upstream was skipped |
Pattern 1 — Expression gate. Only generate a detailed complaint analysis when the customer gave a low rating (1 or 2 stars).
Rows where the rating is 3 or higher will get None for this column.
DataDesignerConfigBuilder( sampler_columns: [ "customer", "product_category", "product_subcategory", "target_age_range", "review_style" ] llm_text_columns: ['complaint_analysis'] llm_structured_columns: ['product', 'customer_review'] expression_columns: ['customer_name', 'customer_age'] )
Pattern 2 — Skip propagation. action_items depends on complaint_analysis.
When complaint_analysis is skipped, action_items auto-skips too because
propagate_skip defaults to True.
DataDesignerConfigBuilder( sampler_columns: [ "customer", "product_category", "product_subcategory", "target_age_range", "review_style" ] llm_text_columns: ['complaint_analysis', 'action_items'] llm_structured_columns: ['product', 'customer_review'] expression_columns: ['customer_name', 'customer_age'] )
Pattern 3 — Propagation opt-out. review_summary also depends on complaint_analysis,
but sets propagate_skip=False so it always generates. The prompt uses a Jinja conditional
to handle the case where complaint_analysis is None.
🔎 Identified 1 validation issue in your Data Designer column definitions ──────────────────────────────────────────────── Column: product ──────────────────────────────────────────────── ⚠️ WARNING | PARQUET_STORAGE Native Parquet storage at $['price'] combines schema branches whose native storage depends on generated values. Add 'x-data-designer-storage': 'json' to this field or an enclosing schema node, or set storage_encoding='json' on the column. This is a schema risk, not a prediction that every generated batch will fail. ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
🔁 Iteration is key – preview the dataset!
-
Use the
previewmethod to generate a sample of records quickly. -
Inspect the results for quality and format issues.
-
Adjust column configurations, prompts, or parameters as needed.
-
Re-run the preview until satisfied.
[16:03:11] [INFO] 👀 Preview generation in progress
[16:03:11] [INFO] |-- 🔒 Jinja rendering engine: secure
🔎 Identified 1 validation issue in your Data Designer column definitions ──────────────────────────────────────────────── Column: product ──────────────────────────────────────────────── ⚠️ WARNING | PARQUET_STORAGE Native Parquet storage at $['price'] combines schema branches whose native storage depends on generated values. Add 'x-data-designer-storage': 'json' to this field or an enclosing schema node, or set storage_encoding='json' on the column. This is a schema risk, not a prediction that every generated batch will fail. ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[16:03:11] [INFO] ⛓️ Sorting column configs into a Directed Acyclic Graph
[16:03:11] [INFO] Skipping model health checks because DATA_DESIGNER_SKIP_MODEL_HEALTH_CHECKS=1
[16:03:11] [INFO] ⚡ Using async task-queue preview
[16:03:11] [INFO] 🗂️ llm-structured model config for column 'product'
[16:03:11] [INFO] |-- model: 'nvidia/nemotron-3.5-lightning-30b-a3b'
[16:03:11] [INFO] |-- model alias: 'nemotron-lightning'
[16:03:11] [INFO] |-- model provider: 'nvidia'
[16:03:11] [INFO] |-- inference parameters:
[16:03:11] [INFO] | |-- generation_type=chat-completion
[16:03:11] [INFO] | |-- max_parallel_requests=4
[16:03:11] [INFO] | |-- extra_body={'chat_template_kwargs': {'enable_thinking': False}}[16:03:11] [INFO] | |-- temperature=1.00
[16:03:11] [INFO] | |-- top_p=0.95
[16:03:11] [INFO] | |-- max_tokens=2048
[16:03:11] [INFO] 🗂️ llm-structured model config for column 'customer_review'
[16:03:11] [INFO] |-- model: 'nvidia/nemotron-3.5-lightning-30b-a3b'
[16:03:11] [INFO] |-- model alias: 'nemotron-lightning'
[16:03:11] [INFO] |-- model provider: 'nvidia'
[16:03:11] [INFO] |-- inference parameters:
[16:03:11] [INFO] | |-- generation_type=chat-completion
[16:03:11] [INFO] | |-- max_parallel_requests=4
[16:03:11] [INFO] | |-- extra_body={'chat_template_kwargs': {'enable_thinking': False}}[16:03:11] [INFO] | |-- temperature=1.00
[16:03:11] [INFO] | |-- top_p=0.95
[16:03:11] [INFO] | |-- max_tokens=2048
[16:03:11] [INFO] 📝 llm-text model config for column 'complaint_analysis'
[16:03:11] [INFO] |-- model: 'nvidia/nemotron-3.5-lightning-30b-a3b'
[16:03:11] [INFO] |-- model alias: 'nemotron-lightning'
[16:03:11] [INFO] |-- model provider: 'nvidia'
[16:03:11] [INFO] |-- inference parameters:
[16:03:11] [INFO] | |-- generation_type=chat-completion
[16:03:11] [INFO] | |-- max_parallel_requests=4
[16:03:11] [INFO] | |-- extra_body={'chat_template_kwargs': {'enable_thinking': False}}[16:03:11] [INFO] | |-- temperature=1.00
[16:03:11] [INFO] | |-- top_p=0.95
[16:03:11] [INFO] | |-- max_tokens=2048
[16:03:11] [INFO] 📝 llm-text model config for column 'review_summary'
[16:03:11] [INFO] |-- model: 'nvidia/nemotron-3.5-lightning-30b-a3b'
[16:03:11] [INFO] |-- model alias: 'nemotron-lightning'
[16:03:11] [INFO] |-- model provider: 'nvidia'
[16:03:11] [INFO] |-- inference parameters:
[16:03:11] [INFO] | |-- generation_type=chat-completion
[16:03:11] [INFO] | |-- max_parallel_requests=4
[16:03:11] [INFO] | |-- extra_body={'chat_template_kwargs': {'enable_thinking': False}}[16:03:11] [INFO] | |-- temperature=1.00
[16:03:11] [INFO] | |-- top_p=0.95
[16:03:11] [INFO] | |-- max_tokens=2048
[16:03:11] [INFO] 📝 llm-text model config for column 'action_items'
[16:03:11] [INFO] |-- model: 'nvidia/nemotron-3.5-lightning-30b-a3b'
[16:03:11] [INFO] |-- model alias: 'nemotron-lightning'
[16:03:11] [INFO] |-- model provider: 'nvidia'
[16:03:11] [INFO] |-- inference parameters:
[16:03:11] [INFO] | |-- generation_type=chat-completion
[16:03:11] [INFO] | |-- max_parallel_requests=4
[16:03:11] [INFO] | |-- extra_body={'chat_template_kwargs': {'enable_thinking': False}}[16:03:11] [INFO] | |-- temperature=1.00
[16:03:11] [INFO] | |-- top_p=0.95
[16:03:11] [INFO] | |-- max_tokens=2048
[16:03:11] [INFO] ⚡️ Async generation: 5 column(s) (column 'product', column 'customer_review', column 'complaint_analysis', column 'review_summary', column 'action_items'), 10 tasks across 1 row group(s)
[16:03:11] [INFO] 🚀 (1/1) Dispatching with 2 records
[16:03:11] [INFO] 🎲 (1/1) Preparing samplers to generate 2 records across 5 columns
[16:03:11] [INFO] 🧩 (1/1) Generating column `customer_age` from expression
[16:03:11] [INFO] 🧩 (1/1) Generating column `customer_name` from expression
[16:03:18] [INFO] 📊 Progress [6.7s]:
[16:03:18] [INFO] |-- 🦁 column 'product': 2/2 (100%) 0.3 rec/s
[16:03:18] [INFO] |-- 🌗 column 'customer_review': 1/2 (50%) 0.1 rec/s
[16:03:18] [INFO] |-- 🐱 column 'complaint_analysis': 0/2 (0%) 0.0 rec/s
[16:03:18] [INFO] |-- 🚶 column 'review_summary': 0/2 (0%) 0.0 rec/s
[16:03:18] [INFO] |-- 🚶 column 'action_items': 0/2 (0%) 0.0 rec/s
[16:03:20] [INFO] 📊 Progress [8.6s]:
[16:03:20] [INFO] |-- 🦁 column 'product': 2/2 (100%) 0.2 rec/s
[16:03:20] [INFO] |-- 🌕 column 'customer_review': 2/2 (100%) 0.2 rec/s
[16:03:20] [INFO] |-- 🦁 column 'complaint_analysis': 2/2 (100%) 0.2 rec/s, 2 skipped
[16:03:20] [INFO] |-- 🚀 column 'review_summary': 2/2 (100%) 0.2 rec/s
[16:03:20] [INFO] |-- 🚀 column 'action_items': 2/2 (100%) 0.2 rec/s, 2 skipped
[16:03:20] [INFO] ✅ Async generation complete [8.6s]: 6 ok, 0 failed, 4 skipped across 5 column(s)
[16:03:20] [INFO] 📊 Model usage summary:
[16:03:20] [INFO] |-- model: nvidia/nemotron-3.5-lightning-30b-a3b
[16:03:20] [INFO] |-- tokens: input=2323, output=1276, reasoning=0, total=3599, tps=415
[16:03:20] [INFO] |-- requests: success=6, failed=0, total=6, rpm=41
[16:03:20] [INFO] 🙈 Dropping columns: ['customer']
[16:03:20] [INFO] 📐 Measuring dataset column statistics:
[16:03:20] [INFO] |-- 🎲 column: 'product_category'
[16:03:20] [INFO] |-- 🎲 column: 'product_subcategory'
[16:03:20] [INFO] |-- 🎲 column: 'target_age_range'
[16:03:20] [INFO] |-- 🎲 column: 'review_style'
[16:03:20] [INFO] |-- 🧩 column: 'customer_name'
[16:03:20] [INFO] |-- 🧩 column: 'customer_age'
[16:03:20] [INFO] |-- 🗂️ column: 'product'
[16:03:20] [INFO] |-- 🗂️ column: 'customer_review'
[16:03:20] [INFO] |-- 📝 column: 'complaint_analysis'
[16:03:20] [INFO] |-- 📝 column: 'action_items'
[16:03:20] [INFO] |-- 📝 column: 'review_summary'
[16:03:20] [INFO] ☀️ Preview complete!
Generated Columns ┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Name ┃ Value ┃ ┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ product_category │ Electronics │ ├─────────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤ │ product_subcategory │ Laptops │ ├─────────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤ │ target_age_range │ 35-50 │ ├─────────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤ │ review_style │ rambling │ ├─────────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤ │ complaint_analysis │ None │ ├─────────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤ │ action_items │ None │ ├─────────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤ │ review_summary │ This ergonomic aluminum laptop stand with a built-in cooling fan significantly │ │ │ improves posture and heat management while remaining lightweight and portable, │ │ │ making it a highly sensible $79.99 investment for remote workers and travelers. │ ├─────────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤ │ product │ { │ │ │ 'name': 'Ergonomic Wireless Laptop Stand with Cooling Fan', │ │ │ 'description': 'Designed for the professional on the go, this sleek aluminum │ │ │ laptop stand elevates your screen to eye level, reducing neck strain during long │ │ │ work sessions. It features a built-in silent cooling fan with adjustable speed │ │ │ settings to prevent overheating, ensuring peak performance for your device. The │ │ │ compact, foldable design makes it easy to slip into a briefcase or backpack, making │ │ │ it the perfect companion for remote workers and business travelers aged 35-50.', │ │ │ 'price': 79.99 │ │ │ } │ ├─────────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤ │ customer_review │ { │ │ │ 'rating': 5, │ │ │ 'customer_mood': 'happy', │ │ │ 'review': "Dear readers, allow me, Emily Nguyen of New Brianna, Nevada, to │ │ │ expound upon the marvels of this particular laptop stand, a device that has │ │ │ fundamentally altered my approach to mobile computing. The first thing one notices, │ │ │ upon unwrapping this piece of aluminum elegance, is the substantial weight of the │ │ │ materials, which feels reassuringly robust yet surprisingly featherlight when │ │ │ considering its durability. It is a curious engineering feat, truly. The elevation │ │ │ of the screen to eye level is not merely a physical adjustment; it is a revelation │ │ │ for one who spends considerable hours staring into the glowing abyss of a monitor, │ │ │ effectively banishing the nagging, dull ache that invariably settled into my │ │ │ trapezius muscles after a mere two hours of work. I daresay the reduction in neck │ │ │ strain is the stand's most immediate and tangible benefit, a godsend for someone of │ │ │ my advancing years who values comfort as much as productivity. But the engineers out │ │ │ there, and there are many who appreciate such things, will be thrilled to discover │ │ │ the built-in cooling fan. It is a silent, unobtrusive little warrior, humming along │ │ │ in the background with a quiet efficiency that belies its power. The adjustable │ │ │ speed settings are a thoughtful touch, allowing one to tailor the airflow to the │ │ │ specific task at hand, whether one is drafting a tedious spreadsheet or merely │ │ │ browsing the internet for pleasure. The thermal management is impressive; my laptop, │ │ │ which has a tendency to resemble a miniature space heater during intensive use, now │ │ │ remains blessedly cool to the touch, which I can only assume extends the lifespan of │ │ │ the internal components, a worry that often keeps me up at night. And let us not │ │ │ forget the portability, the crowning glory of this purchase. The foldable design is │ │ │ a masterclass in compact engineering; it collapses flat with a satisfying click, │ │ │ slipping effortlessly into my briefcase without adding any discernible bulk or │ │ │ weight. It is the ideal companion for the business traveler, the remote worker, the │ │ │ digital nomad, really, who flits between coffee shops and co-working spaces with the │ │ │ grace of a hummingbird. At the price point of $79.99, one might initially hesitate, │ │ │ thinking perhaps it is a luxury item, but I assure you, it is an investment in one's │ │ │ own well-being and efficiency. It is, without a doubt, the most sensible purchase I │ │ │ have made for my home office setup this year, and I find myself already recommending │ │ │ it to colleagues and friends with a fervor that surprises even myself. In │ │ │ conclusion, if you are in the market for a way to upgrade your posture, protect your │ │ │ hardware, and simplify your travel gear, look no further. This stand is, quite │ │ │ simply, stellar." │ │ │ } │ ├─────────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤ │ customer_name │ Emily Nguyen │ ├─────────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤ │ customer_age │ 37 │ └─────────────────────┴──────────────────────────────────────────────────────────────────────────────────────┘
| product_category | product_subcategory | target_age_range | review_style | customer_name | customer_age | product | customer_review | complaint_analysis | action_items | review_summary | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Electronics | Laptops | 35-50 | rambling | Emily Nguyen | 37 | {'name': 'Ergonomic Wireless Laptop Stand with... | {'rating': 5, 'customer_mood': 'happy', 'revie... | None | None | This ergonomic aluminum laptop stand with a bu... |
| 1 | Clothing | Winter Coats | 25-35 | detailed | Richard Lambert | 44 | {'name': 'Urban Tech-Warm Mid-Length Down Coat... | {'rating': 5, 'customer_mood': 'happy', 'revie... | None | None | This 5-star review praises the Urban Tech-Warm... |
📊 Analyze the generated data
-
Data Designer automatically generates a basic statistical analysis of the generated data.
-
This analysis is available via the
analysisproperty of generation result objects.
──────────────────────────────────────── 🎨 Data Designer Dataset Profile ───────────────────────────────────────── Dataset Overview ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ number of records ┃ number of columns ┃ percent complete records ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ 2 │ 11 │ 100.0% │ └─────────────────────────────────┴─────────────────────────────────┴─────────────────────────────────────────────┘ 🎲 Sampler Columns ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┓ ┃ column name ┃ data type ┃ number unique values ┃ sampler type ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━┩ │ product_category │ string │ 2 (100.0%) │ category │ ├──────────────────────────────────┼──────────────────┼────────────────────────────────────┼──────────────────────┤ │ product_subcategory │ string │ 2 (100.0%) │ subcategory │ ├──────────────────────────────────┼──────────────────┼────────────────────────────────────┼──────────────────────┤ │ target_age_range │ string │ 2 (100.0%) │ category │ ├──────────────────────────────────┼──────────────────┼────────────────────────────────────┼──────────────────────┤ │ review_style │ string │ 2 (100.0%) │ category │ └──────────────────────────────────┴──────────────────┴────────────────────────────────────┴──────────────────────┘ 📝 LLM-Text Columns ┏━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┓ ┃ ┃ ┃ ┃ prompt tokens ┃ completion tokens ┃ ┃ column name ┃ data type ┃ number unique values ┃ per record ┃ per record ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━┩ │ complaint_analysis │ None │ 0 (0.0%) │ 478.0 +/- 125.0 │ 1.0 +/- 0.0 │ ├─────────────────────────┼──────────────┼───────────────────────────┼─────────────────────┼──────────────────────┤ │ action_items │ None │ 0 (0.0%) │ 22.0 +/- 0.0 │ 1.0 +/- 0.0 │ ├─────────────────────────┼──────────────┼───────────────────────────┼─────────────────────┼──────────────────────┤ │ review_summary │ string │ 2 (100.0%) │ 449.0 +/- 125.0 │ 45.5 +/- 9.2 │ └─────────────────────────┴──────────────┴───────────────────────────┴─────────────────────┴──────────────────────┘ 🗂️ LLM-Structured Columns ┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ ┃ ┃ ┃ prompt tokens ┃ completion tokens ┃ ┃ column name ┃ data type ┃ number unique values ┃ per record ┃ per record ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩ │ product │ dict │ 2 (100.0%) │ 265.5 +/- 0.5 │ 110.5 +/- 5.0 │ ├───────────────────────┼───────────────┼────────────────────────────┼───────────────────┼────────────────────────┤ │ customer_review │ dict │ 2 (100.0%) │ 364.5 +/- 3.5 │ 439.0 +/- 173.9 │ └───────────────────────┴───────────────┴────────────────────────────┴───────────────────┴────────────────────────┘ 🧩 Expression Columns ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ column name ┃ data type ┃ number unique values ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ customer_name │ string │ 2 (100.0%) │ ├───────────────────────────────────┼──────────────────────────┼──────────────────────────────────────────────────┤ │ customer_age │ string │ 2 (100.0%) │ └───────────────────────────────────┴──────────────────────────┴──────────────────────────────────────────────────┘ ╭────────────────────────────────────────────────── Table Notes ──────────────────────────────────────────────────╮ │ │ │ 1. All token statistics are based on a sample of max(1000, len(dataset)) records. │ │ 2. Tokens are calculated using tiktoken's cl100k_base tokenizer. │ │ │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────
🆙 Scale up!
-
Happy with your preview data?
-
Use the
createmethod to submit larger Data Designer generation jobs.
[16:03:20] [INFO] OpenTelemetry metrics available at http://127.0.0.1:9464/metrics
[16:03:20] [INFO] 🎨 Creating Data Designer dataset
[16:03:20] [INFO] |-- 🔒 Jinja rendering engine: secure
🔎 Identified 1 validation issue in your Data Designer column definitions ──────────────────────────────────────────────── Column: product ──────────────────────────────────────────────── ⚠️ WARNING | PARQUET_STORAGE Native Parquet storage at $['price'] combines schema branches whose native storage depends on generated values. Add 'x-data-designer-storage': 'json' to this field or an enclosing schema node, or set storage_encoding='json' on the column. This is a schema risk, not a prediction that every generated batch will fail. ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[16:03:20] [INFO] ⛓️ Sorting column configs into a Directed Acyclic Graph
[16:03:20] [INFO] Skipping model health checks because DATA_DESIGNER_SKIP_MODEL_HEALTH_CHECKS=1
[16:03:20] [INFO] ⚡ Using async task-queue builder
[16:03:20] [INFO] 🗂️ llm-structured model config for column 'product'
[16:03:20] [INFO] |-- model: 'nvidia/nemotron-3.5-lightning-30b-a3b'
[16:03:20] [INFO] |-- model alias: 'nemotron-lightning'
[16:03:20] [INFO] |-- model provider: 'nvidia'
[16:03:20] [INFO] |-- inference parameters:
[16:03:20] [INFO] | |-- generation_type=chat-completion
[16:03:20] [INFO] | |-- max_parallel_requests=4
[16:03:20] [INFO] | |-- extra_body={'chat_template_kwargs': {'enable_thinking': False}}[16:03:20] [INFO] | |-- temperature=1.00
[16:03:20] [INFO] | |-- top_p=0.95
[16:03:20] [INFO] | |-- max_tokens=2048
[16:03:20] [INFO] 🗂️ llm-structured model config for column 'customer_review'
[16:03:20] [INFO] |-- model: 'nvidia/nemotron-3.5-lightning-30b-a3b'
[16:03:20] [INFO] |-- model alias: 'nemotron-lightning'
[16:03:20] [INFO] |-- model provider: 'nvidia'
[16:03:20] [INFO] |-- inference parameters:
[16:03:20] [INFO] | |-- generation_type=chat-completion
[16:03:20] [INFO] | |-- max_parallel_requests=4
[16:03:20] [INFO] | |-- extra_body={'chat_template_kwargs': {'enable_thinking': False}}[16:03:20] [INFO] | |-- temperature=1.00
[16:03:20] [INFO] | |-- top_p=0.95
[16:03:20] [INFO] | |-- max_tokens=2048
[16:03:20] [INFO] 📝 llm-text model config for column 'complaint_analysis'
[16:03:20] [INFO] |-- model: 'nvidia/nemotron-3.5-lightning-30b-a3b'
[16:03:20] [INFO] |-- model alias: 'nemotron-lightning'
[16:03:20] [INFO] |-- model provider: 'nvidia'
[16:03:20] [INFO] |-- inference parameters:
[16:03:20] [INFO] | |-- generation_type=chat-completion
[16:03:20] [INFO] | |-- max_parallel_requests=4
[16:03:20] [INFO] | |-- extra_body={'chat_template_kwargs': {'enable_thinking': False}}[16:03:20] [INFO] | |-- temperature=1.00
[16:03:20] [INFO] | |-- top_p=0.95
[16:03:20] [INFO] | |-- max_tokens=2048
[16:03:20] [INFO] 📝 llm-text model config for column 'review_summary'
[16:03:20] [INFO] |-- model: 'nvidia/nemotron-3.5-lightning-30b-a3b'
[16:03:20] [INFO] |-- model alias: 'nemotron-lightning'
[16:03:20] [INFO] |-- model provider: 'nvidia'
[16:03:20] [INFO] |-- inference parameters:
[16:03:20] [INFO] | |-- generation_type=chat-completion
[16:03:20] [INFO] | |-- max_parallel_requests=4
[16:03:20] [INFO] | |-- extra_body={'chat_template_kwargs': {'enable_thinking': False}}[16:03:20] [INFO] | |-- temperature=1.00
[16:03:20] [INFO] | |-- top_p=0.95
[16:03:20] [INFO] | |-- max_tokens=2048
[16:03:20] [INFO] 📝 llm-text model config for column 'action_items'
[16:03:20] [INFO] |-- model: 'nvidia/nemotron-3.5-lightning-30b-a3b'
[16:03:20] [INFO] |-- model alias: 'nemotron-lightning'
[16:03:20] [INFO] |-- model provider: 'nvidia'
[16:03:20] [INFO] |-- inference parameters:
[16:03:20] [INFO] | |-- generation_type=chat-completion
[16:03:20] [INFO] | |-- max_parallel_requests=4
[16:03:20] [INFO] | |-- extra_body={'chat_template_kwargs': {'enable_thinking': False}}[16:03:20] [INFO] | |-- temperature=1.00
[16:03:20] [INFO] | |-- top_p=0.95
[16:03:20] [INFO] | |-- max_tokens=2048
[16:03:20] [INFO] ⚡️ Async generation: 5 column(s) (column 'product', column 'customer_review', column 'complaint_analysis', column 'review_summary', column 'action_items'), 50 tasks across 1 row group(s)
[16:03:20] [INFO] 🚀 (1/1) Dispatching with 10 records
[16:03:20] [INFO] 🎲 (1/1) Preparing samplers to generate 10 records across 5 columns
[16:03:20] [INFO] 🧩 (1/1) Generating column `customer_age` from expression
[16:03:20] [INFO] 🧩 (1/1) Generating column `customer_name` from expression
[16:03:25] [INFO] 📊 Progress [5.1s]:
[16:03:25] [INFO] |-- ⛅ column 'product': 5/10 (50%) 1.0 rec/s
[16:03:25] [INFO] |-- 🐱 column 'customer_review': 0/10 (0%) 0.0 rec/s
[16:03:25] [INFO] |-- 🌧️ column 'complaint_analysis': 0/10 (0%) 0.0 rec/s
[16:03:25] [INFO] |-- 😴 column 'review_summary': 0/10 (0%) 0.0 rec/s
[16:03:25] [INFO] |-- 🚶 column 'action_items': 0/10 (0%) 0.0 rec/s
[16:03:27] [WARNING] Observed retryable model-task error: kind=rate_limit, http_status=429; the row task will be deferred.
[16:03:31] [INFO] 📊 Progress [11.0s]:
[16:03:31] [INFO] |-- ⛅ column 'product': 7/10 (70%) 0.6 rec/s
[16:03:31] [INFO] |-- 🐱 column 'customer_review': 2/10 (20%) 0.2 rec/s
[16:03:31] [INFO] |-- 🌧️ column 'complaint_analysis': 1/10 (10%) 0.1 rec/s, 1 skipped
[16:03:31] [INFO] |-- 😴 column 'review_summary': 1/10 (10%) 0.1 rec/s
[16:03:31] [INFO] |-- 🚶 column 'action_items': 1/10 (10%) 0.1 rec/s, 1 skipped
[16:03:41] [INFO] 🔄 (1/1) Salvaging 9 deferred task(s)
[16:03:43] [WARNING] Provider showing degraded performance: 50% of last 20 task outcomes were retryable errors (rate_limit=10, success=10); cumulative outcomes: rate_limit=10, success=10; deferred_tasks=1. Run may take longer than expected; salvage will retry these.
[16:04:05] [INFO] 📊 Progress [45.4s]:
[16:04:05] [INFO] |-- 🌤️ column 'product': 8/10 (80%) 0.2 rec/s
[16:04:05] [INFO] |-- 🐱 column 'customer_review': 2/10 (20%) 0.0 rec/s
[16:04:05] [INFO] |-- 🌧️ column 'complaint_analysis': 2/10 (20%) 0.0 rec/s, 2 skipped
[16:04:05] [INFO] |-- 😴 column 'review_summary': 1/10 (10%) 0.0 rec/s
[16:04:05] [INFO] |-- 🚶 column 'action_items': 2/10 (20%) 0.0 rec/s, 2 skipped
[16:04:12] [INFO] 📊 Progress [51.7s]:
[16:04:12] [INFO] |-- ☀️ column 'product': 10/10 (100%) 0.2 rec/s
[16:04:12] [INFO] |-- 😺 column 'customer_review': 4/10 (40%) 0.1 rec/s
[16:04:12] [INFO] |-- 🌦️ column 'complaint_analysis': 4/10 (40%) 0.1 rec/s, 4 skipped
[16:04:12] [INFO] |-- 😴 column 'review_summary': 1/10 (10%) 0.0 rec/s
[16:04:12] [INFO] |-- 🐴 column 'action_items': 3/10 (30%) 0.1 rec/s, 3 skipped
[16:04:20] [INFO] 📊 Progress [60.0s]:
[16:04:20] [INFO] |-- ☀️ column 'product': 10/10 (100%) 0.2 rec/s
[16:04:20] [INFO] |-- 😸 column 'customer_review': 6/10 (60%) 0.1 rec/s
[16:04:20] [INFO] |-- ⛅ column 'complaint_analysis': 5/10 (50%) 0.1 rec/s, 5 skipped
[16:04:20] [INFO] |-- 🥱 column 'review_summary': 3/10 (30%) 0.0 rec/s
[16:04:20] [INFO] |-- 🚗 column 'action_items': 5/10 (50%) 0.1 rec/s, 5 skipped
[16:04:28] [INFO] 📊 Progress [68.4s]:
[16:04:28] [INFO] |-- ☀️ column 'product': 10/10 (100%) 0.1 rec/s
[16:04:28] [INFO] |-- 😸 column 'customer_review': 7/10 (70%) 0.1 rec/s
[16:04:28] [INFO] |-- ⛅ column 'complaint_analysis': 6/10 (60%) 0.1 rec/s, 6 skipped
[16:04:28] [INFO] |-- 🥱 column 'review_summary': 3/10 (30%) 0.0 rec/s
[16:04:28] [INFO] |-- 🚗 column 'action_items': 5/10 (50%) 0.1 rec/s, 5 skipped
[16:04:33] [INFO] 📊 Progress [73.5s]:
[16:04:33] [INFO] |-- ☀️ column 'product': 10/10 (100%) 0.1 rec/s
[16:04:33] [INFO] |-- 😼 column 'customer_review': 8/10 (80%) 0.1 rec/s
[16:04:33] [INFO] |-- ⛅ column 'complaint_analysis': 7/10 (70%) 0.1 rec/s, 7 skipped
[16:04:33] [INFO] |-- 😐 column 'review_summary': 5/10 (50%) 0.1 rec/s
[16:04:33] [INFO] |-- 🚗 column 'action_items': 7/10 (70%) 0.1 rec/s, 7 skipped
[16:04:42] [INFO] 📊 Progress [81.6s]:
[16:04:42] [INFO] |-- ☀️ column 'product': 10/10 (100%) 0.1 rec/s
[16:04:42] [INFO] |-- 😼 column 'customer_review': 9/10 (90%) 0.1 rec/s
[16:04:42] [INFO] |-- 🌤️ column 'complaint_analysis': 8/10 (80%) 0.1 rec/s, 8 skipped
[16:04:42] [INFO] |-- 😐 column 'review_summary': 5/10 (50%) 0.1 rec/s
[16:04:42] [INFO] |-- 🚗 column 'action_items': 7/10 (70%) 0.1 rec/s, 7 skipped
[16:04:49] [INFO] 🔄 (1/1) Preserving 4 retryable task(s); records will keep retrying.
[16:04:58] [INFO] 📊 Progress [97.9s]:
[16:04:58] [INFO] |-- ☀️ column 'product': 10/10 (100%) 0.1 rec/s
[16:04:58] [INFO] |-- 🦁 column 'customer_review': 10/10 (100%) 0.1 rec/s
[16:04:58] [INFO] |-- ☀️ column 'complaint_analysis': 10/10 (100%) 0.1 rec/s, 10 skipped
[16:04:58] [INFO] |-- 😐 column 'review_summary': 7/10 (70%) 0.1 rec/s
[16:04:58] [INFO] |-- 🚀 column 'action_items': 10/10 (100%) 0.1 rec/s, 10 skipped
[16:05:01] [INFO] 🔄 (1/1) Preserving 2 retryable task(s); records will keep retrying.
[16:05:05] [INFO] 📊 Progress [105.0s]:
[16:05:05] [INFO] |-- ☀️ column 'product': 10/10 (100%) 0.1 rec/s
[16:05:05] [INFO] |-- 🦁 column 'customer_review': 10/10 (100%) 0.1 rec/s
[16:05:05] [INFO] |-- ☀️ column 'complaint_analysis': 10/10 (100%) 0.1 rec/s, 10 skipped
[16:05:05] [INFO] |-- 😊 column 'review_summary': 9/10 (90%) 0.1 rec/s
[16:05:05] [INFO] |-- 🚀 column 'action_items': 10/10 (100%) 0.1 rec/s, 10 skipped
[16:05:07] [WARNING] Provider showing degraded performance: 50% of last 20 task outcomes were retryable errors (rate_limit=10, success=10); cumulative outcomes: rate_limit=29, success=29; deferred_tasks=1. Run may take longer than expected; salvage will retry these.
[16:05:07] [INFO] 🔄 (1/1) Preserving 1 retryable task(s); records will keep retrying.
[16:05:36] [WARNING] 🔄 (1/1) Preserving 1 retryable task(s) after 10 deferred salvage cycle(s); records will keep retrying.
[16:06:08] [WARNING] Provider showing degraded performance: 100% of last 20 task outcomes were retryable errors (rate_limit=20); cumulative outcomes: rate_limit=58, success=29; deferred_tasks=1. Run may take longer than expected; salvage will retry these.
[16:06:18] [WARNING] 🔄 (1/1) Preserving 1 retryable task(s) after 20 deferred salvage cycle(s); records will keep retrying.
[16:06:59] [WARNING] 🔄 (1/1) Preserving 1 retryable task(s) after 30 deferred salvage cycle(s); records will keep retrying.
[16:07:08] [WARNING] Provider showing degraded performance: 100% of last 20 task outcomes were retryable errors (rate_limit=20); cumulative outcomes: rate_limit=87, success=29; deferred_tasks=1. Run may take longer than expected; salvage will retry these.
[16:07:41] [WARNING] 🔄 (1/1) Preserving 1 retryable task(s) after 40 deferred salvage cycle(s); records will keep retrying.
[16:08:08] [WARNING] Provider showing degraded performance: 100% of last 20 task outcomes were retryable errors (rate_limit=20); cumulative outcomes: rate_limit=116, success=29; deferred_tasks=1. Run may take longer than expected; salvage will retry these.
[16:08:23] [WARNING] 🔄 (1/1) Preserving 1 retryable task(s) after 50 deferred salvage cycle(s); records will keep retrying.
[16:09:04] [WARNING] 🔄 (1/1) Preserving 1 retryable task(s) after 60 deferred salvage cycle(s); records will keep retrying.
[16:09:08] [WARNING] Provider showing degraded performance: 100% of last 20 task outcomes were retryable errors (rate_limit=20); cumulative outcomes: rate_limit=145, success=29; deferred_tasks=1. Run may take longer than expected; salvage will retry these.
[16:09:46] [WARNING] 🔄 (1/1) Preserving 1 retryable task(s) after 70 deferred salvage cycle(s); records will keep retrying.
[16:10:09] [WARNING] Provider showing degraded performance: 100% of last 20 task outcomes were retryable errors (rate_limit=20); cumulative outcomes: rate_limit=174, success=29; deferred_tasks=1. Run may take longer than expected; salvage will retry these.
[16:10:27] [WARNING] 🔄 (1/1) Preserving 1 retryable task(s) after 80 deferred salvage cycle(s); records will keep retrying.
[16:11:09] [WARNING] Provider showing degraded performance: 100% of last 20 task outcomes were retryable errors (rate_limit=20); cumulative outcomes: rate_limit=203, success=29; deferred_tasks=1. Run may take longer than expected; salvage will retry these.
[16:11:09] [WARNING] 🔄 (1/1) Preserving 1 retryable task(s) after 90 deferred salvage cycle(s); records will keep retrying.
[16:11:19] [INFO] 📊 Progress [478.9s]:
[16:11:19] [INFO] |-- ☀️ column 'product': 10/10 (100%) 0.0 rec/s
[16:11:19] [INFO] |-- 🦁 column 'customer_review': 10/10 (100%) 0.0 rec/s
[16:11:19] [INFO] |-- ☀️ column 'complaint_analysis': 10/10 (100%) 0.0 rec/s, 10 skipped
[16:11:19] [INFO] |-- 🤩 column 'review_summary': 10/10 (100%) 0.0 rec/s
[16:11:19] [INFO] |-- 🚀 column 'action_items': 10/10 (100%) 0.0 rec/s, 10 skipped
[16:11:19] [INFO] 🙈 Dropping columns: ['customer']
[16:11:19] [INFO] ✅ Async generation complete [478.9s]: 30 ok, 0 failed, 20 skipped across 5 column(s)
[16:11:19] [INFO] 📊 Model usage summary:
[16:11:19] [INFO] |-- model: nvidia/nemotron-3.5-lightning-30b-a3b
[16:11:19] [INFO] |-- tokens: input=9131, output=3870, reasoning=0, total=13001, tps=27
[16:11:19] [INFO] |-- requests: success=30, failed=205, total=235, rpm=29
[16:11:19] [INFO] 📐 Measuring dataset column statistics:
[16:11:19] [INFO] |-- 🎲 column: 'product_category'
[16:11:19] [INFO] |-- 🎲 column: 'product_subcategory'
[16:11:19] [INFO] |-- 🎲 column: 'target_age_range'
[16:11:19] [INFO] |-- 🎲 column: 'review_style'
[16:11:19] [INFO] |-- 🧩 column: 'customer_name'
[16:11:19] [INFO] |-- 🧩 column: 'customer_age'
[16:11:19] [INFO] |-- 🗂️ column: 'product'
[16:11:19] [INFO] |-- 🗂️ column: 'customer_review'
[16:11:19] [INFO] |-- 📝 column: 'complaint_analysis'
[16:11:19] [INFO] |-- 📝 column: 'action_items'
[16:11:19] [INFO] |-- 📝 column: 'review_summary'
| product_category | product_subcategory | target_age_range | review_style | customer_age | customer_name | product | customer_review | complaint_analysis | action_items | review_summary | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Electronics | Accessories | 18-25 | rambling | 78 | Jeremy Lewis | {'name': 'Smart Ring - NeoTrack', 'description... | {'rating': 4, 'customer_mood': 'excited', 'rev... | None | None | The NeoTrack smart ring is a stylish, comforta... |
| 1 | Clothing | Accessories | 25-35 | brief | 95 | Nicole Cooper | {'name': 'Minimalist Leather Card Holder Walle... | {'rating': 4, 'customer_mood': 'happy', 'revie... | None | None | A high-quality, streamlined wallet that combin... |
| 2 | Books | Non-Fiction | 35-50 | detailed | 106 | Steven Juarez | {'name': 'The Daily Stoic: 366 Meditations on ... | {'rating': 5, 'customer_mood': 'happy', 'revie... | None | None | A meticulously organized and highly accessible... |
| 3 | Home & Kitchen | Appliances | 65+ | detailed | 30 | Courtney House | {'name': 'Large Digital Display Microwave Oven... | {'rating': 5, 'customer_mood': 'happy', 'revie... | None | None | This Large Digital Display Microwave Oven is a... |
| 4 | Clothing | Women's Clothing | 25-35 | brief | 74 | Erika Rios | {'name': 'Luxury Silk Wrap Dress', 'descriptio... | {'rating': 5, 'customer_mood': 'happy', 'revie... | None | None | The Luxury Silk Wrap Dress is a versatile and ... |
──────────────────────────────────────── 🎨 Data Designer Dataset Profile ───────────────────────────────────────── Dataset Overview ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ number of records ┃ number of columns ┃ percent complete records ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ 10 │ 11 │ 100.0% │ └─────────────────────────────────┴─────────────────────────────────┴─────────────────────────────────────────────┘ 🎲 Sampler Columns ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┓ ┃ column name ┃ data type ┃ number unique values ┃ sampler type ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━┩ │ product_category │ string │ 5 (50.0%) │ category │ ├──────────────────────────────────┼──────────────────┼────────────────────────────────────┼──────────────────────┤ │ product_subcategory │ string │ 7 (70.0%) │ subcategory │ ├──────────────────────────────────┼──────────────────┼────────────────────────────────────┼──────────────────────┤ │ target_age_range │ string │ 5 (50.0%) │ category │ ├──────────────────────────────────┼──────────────────┼────────────────────────────────────┼──────────────────────┤ │ review_style │ string │ 4 (40.0%) │ category │ └──────────────────────────────────┴──────────────────┴────────────────────────────────────┴──────────────────────┘ 📝 LLM-Text Columns ┏━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┓ ┃ ┃ ┃ ┃ prompt tokens ┃ completion tokens ┃ ┃ column name ┃ data type ┃ number unique values ┃ per record ┃ per record ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━┩ │ complaint_analysis │ None │ 0 (0.0%) │ 267.0 +/- 107.2 │ 1.0 +/- 0.0 │ ├─────────────────────────┼──────────────┼───────────────────────────┼─────────────────────┼──────────────────────┤ │ action_items │ None │ 0 (0.0%) │ 22.0 +/- 0.0 │ 1.0 +/- 0.0 │ ├─────────────────────────┼──────────────┼───────────────────────────┼─────────────────────┼──────────────────────┤ │ review_summary │ string │ 10 (100.0%) │ 239.5 +/- 107.6 │ 42.0 +/- 9.3 │ └─────────────────────────┴──────────────┴───────────────────────────┴─────────────────────┴──────────────────────┘ 🗂️ LLM-Structured Columns ┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ ┃ ┃ ┃ prompt tokens ┃ completion tokens ┃ ┃ column name ┃ data type ┃ number unique values ┃ per record ┃ per record ┃ ┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩ │ product │ dict │ 10 (100.0%) │ 265.0 +/- 0.6 │ 95.0 +/- 12.6 │ ├──────────────────────┼───────────────┼────────────────────────────┼─────────────────────┼───────────────────────┤ │ customer_review │ dict │ 10 (100.0%) │ 352.0 +/- 11.9 │ 232.5 +/- 112.6 │ └──────────────────────┴───────────────┴────────────────────────────┴─────────────────────┴───────────────────────┘ 🧩 Expression Columns ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ column name ┃ data type ┃ number unique values ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ customer_name │ string │ 10 (100.0%) │ ├───────────────────────────────────┼──────────────────────────┼──────────────────────────────────────────────────┤ │ customer_age │ string │ 9 (90.0%) │ └───────────────────────────────────┴──────────────────────────┴──────────────────────────────────────────────────┘ ╭────────────────────────────────────────────────── Table Notes ──────────────────────────────────────────────────╮ │ │ │ 1. All token statistics are based on a sample of max(1000, len(dataset)) records. │ │ 2. Tokens are calculated using tiktoken's cl100k_base tokenizer. │ │ │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────
⏭️ Next Steps
Check out the following notebook to learn more about: