Generation Configuration Reference#
This page lists the YAML keys accepted by the BFCL generation config, as validated by
BfclConfig.from_yaml in
src/nemotron/steps/byob/runtime/benchmark_families/bfcl/config.py. The bundled
configurations named below all live in src/nemotron/steps/byob/bfcl/config/. Start from
default.yaml, which carries the same keys with inline commentary, or from tiny.yaml,
smoke.example.yaml, publication.example.yaml, or publication.paraphrase.example.yaml
for worked examples at different scales.
For how the fields fit together, refer to Pipeline Overview.
Important
Every section is closed, and the pipeline refuses a config it will not honor rather
than ignoring the key. An unknown key inside any block is an error naming the block
and the key. Separately, a correctly spelled key that no enabled stage would apply is
also refused: enabling semantic_deduplication_config is what makes the balancing
targets in task_generation legal, and input_dir, generation_model_config,
judge_model_config, translation_config_path, eval_config_path, and an inline
eval block are all refused by stage=generate. See
Troubleshooting for the refusal messages.
Path Resolution#
Relative paths in this file resolve against the BYOB root, src/nemotron/steps/byob, not
against the config file’s own directory. Absolute paths are used as written, and every
resolved path is normalized before validation. Two placement rules apply:
output_dir/expt_name must resolve outside the oracle pack root, so generated artifacts
cannot change the pack fingerprint, and any pack or reference file must sit under an
oracle_runtime.allowed_roots entry.
Top-Level Identity#
Field |
Type |
Default |
Controls |
|---|---|---|---|
|
string |
none, required |
Must be |
|
string |
none, required |
The run directory name under |
|
path string |
none, required |
The parent directory of the run tree. |
|
string |
|
Which stage to run: |
|
integer |
|
Seeds every deterministic binding. Recorded in the manifest as |
|
integer ≥ 1 |
|
Batch size for model-facing generation calls. |
|
string |
|
The benchmark row schema the run promises to write. This build writes only |
|
|
|
Declares whether the file is finished. |
oracle_pack, oracle_runtime, and lineage are the three required mappings. Every
other section may be omitted, in which case it is treated as empty.
oracle_pack#
Paths into the executable oracle pack. Only manifest_path is required; the pack’s own
manifest names the rest, and these keys exist to override individual files.
Field |
Type |
Default |
Controls |
|---|---|---|---|
|
path string |
none, required |
The pack’s |
|
path string |
|
The Python backend module for a |
|
path string |
|
The immutable endpoint configuration for an |
|
path string |
|
Fixture collections, conversation templates, and success assertions. |
|
path string |
|
Pack validation cases used by |
oracle_runtime#
Process-worker bounds, the frozen clock, and the pack trust roots.
Field |
Type |
Default |
Controls |
|---|---|---|---|
|
quoted ISO-8601 string |
none, required |
The frozen clock every oracle session receives. It must parse as ISO-8601 and must carry a UTC offset, so a run stays reproducible. Quote it, or YAML delivers a |
|
number > 0 |
|
Per tool call. |
|
number > 0 |
|
Per assertion evaluation. |
|
number > 0 |
|
Importing pack code inside the worker. |
|
number > 0 |
|
Establishing clean state for a task. |
|
number > 0 |
|
A whole replay episode. |
|
|
|
Isolation for pack code. Gold eligibility requires |
|
list of path strings |
|
Trust roots for pack and reference files. An absent or empty list resolves to the checked-in BYOB |
lineage#
Field |
Type |
Default |
Controls |
|---|---|---|---|
|
|
none, required |
|
|
bool |
|
Declares that an enabled profile role shaped the published surface text. It may be true only when the |
|
bool or |
|
Must be |
|
mapping |
|
Accepts only |
Each role accepts exactly enabled (bool, default false) and model_config
(mapping or null). Pinning a model identity means the model_config of an enabled
role carries non-empty strings for all four of alias, provider, model, and
canonical_id; a role that is enabled without them is refused. Credentials are refused
anywhere inside model_config: any key named like api_key, token, password,
secret, or authorization, or ending in one of those suffixes, is rejected before the
config is hashed or logged. Name the environment variable instead. Enabling the
profile role also requires a reference_benchmark block.
reference_benchmark accepts name, samples_path, and content_hash, and requires
all three as non-empty strings when it is present. The samples file must sit under an
allowed root, must exist, and its bytes must hash to the declared
sha256:<64 lowercase hex> value. Each line is validated as a style-only sample:
a unique sample_id, a language, a non-empty messages list, and no oracle-truth
fields such as tools, tool_calls, expected_tool_calls, or oracle_state.
surface_generation#
Field |
Type |
Default |
Controls |
|---|---|---|---|
|
non-empty string |
pack’s |
The language the pack’s templates are rendered in. A language the pack does not offer is refused. |
|
bool |
|
Must equal |
|
integer ≥ 0 |
|
Guarded model variants per eligible binding. Must be positive when paraphrasing is enabled and zero when it is not, and may not exceed the number of declared style axes. |
|
bool |
type-checked only |
Declare the |
|
non-empty list of unique strings |
the 20 framework axes |
Replaces the framework register list with axes suited to the domain or language. Each axis must select phrasing only. |
surface_quality_validation#
Field |
Type |
Default |
Controls |
|---|---|---|---|
|
string |
|
Must equal the contract version this build implements. |
|
bool |
|
Enables the |
|
bool |
|
Grants the surface judge authority to drop rows. Requires an enabled |
task_generation#
Budgets are per category, and a category budget is shared by every template in that category, so it may not fall below the template count of the widest category.
Field |
Type |
Default |
Controls |
|---|---|---|---|
|
integer ≥ 1 |
|
The maximum selected rows per category. |
|
integer ≥ 1 |
|
The over-generated candidate pool per category. Must be greater than or equal to |
|
integer ≥ 1 |
none |
The total row count the run promises. Declaring it lets balancing abort instead of publishing short. |
|
integer ≥ 1 |
none |
Turn ceiling for selection. Honored only when semantic deduplication is enabled. |
|
integer ≥ 1 |
none |
Tool-call ceiling for selection. Honored only when semantic deduplication is enabled. |
|
number in (0, 1] |
none |
The within-category intent target. Honored only when semantic deduplication is enabled. |
The four mixes below are probability mappings: every value must be a number between 0 and 1, and the values must sum to 1. Each is honored only when deduplication is enabled.
Mix |
Accepted keys |
|---|---|
|
any non-empty string keys |
|
|
|
|
|
|
semantic_deduplication_config#
Field |
Type |
Default |
Controls |
|---|---|---|---|
|
string |
|
Must equal the contract version this build implements. |
|
bool |
|
Enables the |
|
non-empty string |
none |
The embedding model used for clustering. |
|
integer ≥ 1 |
none |
Cluster count. |
|
number in (0, 1) |
none |
Similarity threshold. |
|
bool |
none |
Whether semantic duplicates are dropped or only recorded. |
|
integer ≥ 1 |
none |
How often one exact surface string may repeat. |
|
number in (0, 1] |
none |
Floor on the share of rows keeping exact template wording. |
|
integer ≥ 1 |
none |
Hard caps on rows owned by a single intent, and on repeats of one executable case. |
|
list of |
none |
Cluster representative preference order. Sources may not repeat. |
|
|
|
What happens when a declared balancing target cannot be met. |
exports#
Field |
Type |
Default |
Controls |
|---|---|---|---|
|
bool |
|
Writes the BFCL question and answer JSONL pair. |
|
bool |
|
Writes the six-file NeMo Evaluator input bundle. |
Both writers derive from one canonical projection of the published table, are read back for equivalence, and are recorded in the run manifest. An export name that no writer implements is refused.