Generators

class sim_panel.generators.GeneratorConfig(schema_version='0.1.0', seed=0, n_periods=1, policy=<factory>, selection=<factory>, execution=<factory>, outcome=None, validate_on_finish=True, max_errors=50, include_panelist_features_in_events=True, include_product_features_in_events=True, include_product_features_in_selection_prompt=True, event_namespace='sim_panel.v0', max_workers=1, prompting_strategy='persona', row_meta=<factory>)[source]

Bases: object

Top-level generation config (YAML-governed in the CLI).

Generators orchestrate:
  • policy exposure decisions

  • panelist selection/evaluation calls

  • outcome parsing/validation

  • schema event construction

  • optional schema validation

Notes

  • schema_version is stored per row and validated against schema registry.

  • seed governs RNG for exposure decisions and deterministic event ids.

Parameters:
  • schema_version (str)

  • seed (int)

  • n_periods (int)

  • policy (PolicyConfig)

  • selection (SelectionConfig)

  • execution (ExecutionConfig)

  • outcome (OutcomeConfig | None)

  • validate_on_finish (bool)

  • max_errors (int)

  • include_panelist_features_in_events (bool)

  • include_product_features_in_events (bool)

  • include_product_features_in_selection_prompt (bool)

  • event_namespace (str)

  • max_workers (int)

  • prompting_strategy (str)

  • row_meta (Dict[str, Any])

schema_version: str = '0.1.0'
seed: int = 0
n_periods: int = 1
policy: PolicyConfig
selection: SelectionConfig
execution: ExecutionConfig
outcome: OutcomeConfig | None = None
validate_on_finish: bool = True
max_errors: int = 50
include_panelist_features_in_events: bool = True
include_product_features_in_events: bool = True
include_product_features_in_selection_prompt: bool = True
event_namespace: str = 'sim_panel.v0'
max_workers: int = 1
prompting_strategy: str = 'persona'
row_meta: Dict[str, Any]
class sim_panel.generators.ExecutionConfig(rules=ExecutionRules(enforce_subset_of_choice_set=True, max_evals_per_panelist_per_t=None, allow_empty=True, keep_strategy='keep_first'))[source]

Bases: object

Generator-side operational rules (NOT panelist constraints). This controls how many evaluations we actually execute after parsing selection.

Parameters:

rules (ExecutionRules)

rules: ExecutionRules = ExecutionRules(enforce_subset_of_choice_set=True, max_evals_per_panelist_per_t=None, allow_empty=True, keep_strategy='keep_first')
class sim_panel.generators.EventGenerator(cfg)[source]

Bases: object

Orchestrates policy exposure + panelist selection/evaluation + outcomes into schema rows.

Expectations:
  • panelists: Sequence[Panelist] runtime agents (LLM-capable)

  • products: Sequence[Product] runtime wrappers (record + display())

Parameters:

cfg (GeneratorConfig)

cfg: GeneratorConfig
generate(*, panelists, products, progress=True, resume_from_period=0, prior_rows=None, on_period_complete=None)[source]
Return type:

List[Dict[str, Any]]

Parameters:
  • panelists (Sequence[Panelist])

  • products (Sequence[Product])

  • progress (bool)

  • resume_from_period (int)

  • prior_rows (List[Dict[str, Any]] | None)

  • on_period_complete (Callable[[int, List[Dict[str, Any]]], None] | None)

class sim_panel.generators.pipeline.EventGenerator(cfg)[source]

Bases: object

Orchestrates policy exposure + panelist selection/evaluation + outcomes into schema rows.

Expectations:
  • panelists: Sequence[Panelist] runtime agents (LLM-capable)

  • products: Sequence[Product] runtime wrappers (record + display())

Parameters:

cfg (GeneratorConfig)

cfg: GeneratorConfig
generate(*, panelists, products, progress=True, resume_from_period=0, prior_rows=None, on_period_complete=None)[source]
Return type:

List[Dict[str, Any]]

Parameters:
  • panelists (Sequence[Panelist])

  • products (Sequence[Product])

  • progress (bool)

  • resume_from_period (int)

  • prior_rows (List[Dict[str, Any]] | None)

  • on_period_complete (Callable[[int, List[Dict[str, Any]]], None] | None)

class sim_panel.generators.types.ExecutionConfig(rules=ExecutionRules(enforce_subset_of_choice_set=True, max_evals_per_panelist_per_t=None, allow_empty=True, keep_strategy='keep_first'))[source]

Bases: object

Generator-side operational rules (NOT panelist constraints). This controls how many evaluations we actually execute after parsing selection.

Parameters:

rules (ExecutionRules)

rules: ExecutionRules = ExecutionRules(enforce_subset_of_choice_set=True, max_evals_per_panelist_per_t=None, allow_empty=True, keep_strategy='keep_first')
class sim_panel.generators.types.GeneratorConfig(schema_version='0.1.0', seed=0, n_periods=1, policy=<factory>, selection=<factory>, execution=<factory>, outcome=None, validate_on_finish=True, max_errors=50, include_panelist_features_in_events=True, include_product_features_in_events=True, include_product_features_in_selection_prompt=True, event_namespace='sim_panel.v0', max_workers=1, prompting_strategy='persona', row_meta=<factory>)[source]

Bases: object

Top-level generation config (YAML-governed in the CLI).

Generators orchestrate:
  • policy exposure decisions

  • panelist selection/evaluation calls

  • outcome parsing/validation

  • schema event construction

  • optional schema validation

Notes

  • schema_version is stored per row and validated against schema registry.

  • seed governs RNG for exposure decisions and deterministic event ids.

Parameters:
  • schema_version (str)

  • seed (int)

  • n_periods (int)

  • policy (PolicyConfig)

  • selection (SelectionConfig)

  • execution (ExecutionConfig)

  • outcome (OutcomeConfig | None)

  • validate_on_finish (bool)

  • max_errors (int)

  • include_panelist_features_in_events (bool)

  • include_product_features_in_events (bool)

  • include_product_features_in_selection_prompt (bool)

  • event_namespace (str)

  • max_workers (int)

  • prompting_strategy (str)

  • row_meta (Dict[str, Any])

schema_version: str = '0.1.0'
seed: int = 0
n_periods: int = 1
policy: PolicyConfig
selection: SelectionConfig
execution: ExecutionConfig
outcome: OutcomeConfig | None = None
validate_on_finish: bool = True
max_errors: int = 50
include_panelist_features_in_events: bool = True
include_product_features_in_events: bool = True
include_product_features_in_selection_prompt: bool = True
event_namespace: str = 'sim_panel.v0'
max_workers: int = 1
prompting_strategy: str = 'persona'
row_meta: Dict[str, Any]
sim_panel.generators.rng.make_rng(seed)[source]
Return type:

Generator

Parameters:

seed (int)

sim_panel.generators.rng.stable_event_id(namespace, payload)[source]

Deterministic event id from a namespace + canonicalized payload.

Return type:

str

Parameters:
  • namespace (str)

  • payload (Dict[str, Any])