Skip to main content

Signature

synkro.generate(
    policy: str | Policy,
    traces: int = 20,
    turns: int | str = "auto",
    dataset_type: DatasetType = DatasetType.CONVERSATION,
    generation_model: str = "gpt-4o-mini",
    grading_model: str = "gpt-4o",
    max_iterations: int = 3,
    skip_grading: bool = False,
    reporter: ProgressReporter | None = None,
    return_logic_map: bool = False,
    enable_hitl: bool = True,
    base_url: str | None = None,
    temperature: float = 0.7,
) -> Dataset | GenerationResult

Parameters

policy
str | Policy
required
Policy text or Policy object
traces
int
default:"20"
Number of traces to generate
turns
int | str
default:"auto"
Conversation turns per trace. Use int for fixed turns, or “auto” for complexity-driven
dataset_type
DatasetType
default:"CONVERSATION"
Type of dataset: CONVERSATION, INSTRUCTION, EVALUATION, TOOL_CALL
generation_model
str
default:"gpt-4o-mini"
Model for generating responses
grading_model
str
default:"gpt-4o"
Model for grading responses
max_iterations
int
default:"3"
Max refinement iterations per trace
skip_grading
bool
default:"False"
Skip grading phase for faster generation
return_logic_map
bool
default:"False"
If True, return GenerationResult with Logic Map access
enable_hitl
bool
default:"True"
Enable Human-in-the-Loop editing
temperature
float
default:"0.7"
Sampling temperature (0.0-2.0)

Returns

  • Dataset (default) - Generated dataset
  • GenerationResult (if return_logic_map=True) - Contains dataset, logic_map, and coverage_report

Examples

Basic

import synkro

dataset = synkro.generate("Your policy text...", traces=50)
dataset.save("training.jsonl")

With Logic Map Access

result = synkro.generate(policy, traces=50, return_logic_map=True)

# Inspect rules
for rule in result.logic_map.rules:
    print(f"{rule.rule_id}: {rule.text}")

# Check coverage
print(result.coverage_report)

# Get dataset
dataset = result.dataset

Silent Mode

from synkro import SilentReporter

dataset = synkro.generate(policy, reporter=SilentReporter())

Custom Models

from synkro.models import Anthropic

dataset = synkro.generate(
    policy,
    generation_model=Anthropic.CLAUDE_SONNET,
    grading_model=Anthropic.CLAUDE_OPUS,
)