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 text or Policy object
Number of traces to generate
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
Model for generating responses
Model for grading responses
Max refinement iterations per trace
Skip grading phase for faster generation
If True, return GenerationResult with Logic Map access
Enable Human-in-the-Loop editing
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,
)