pyrit.models.SeedGroup#
- class SeedGroup(*, seeds: Sequence[Seed | Dict[str, Any]])[source]#
Bases:
YamlLoadableA container for grouping prompts that need to be sent together.
This class handles: - Grouping of SeedPrompt, SeedObjective, and SeedSimulatedConversation - Consistent group IDs and roles across seeds - Prepended conversation and next message extraction - Validation of sequence overlaps between SeedPrompts and SeedSimulatedConversation
All prompts in the group share the same prompt_group_id.
- __init__(*, seeds: Sequence[Seed | Dict[str, Any]])[source]#
Initialize a SeedGroup.
- Parameters:
seeds – Sequence of seeds. Can include: - SeedObjective (or dict with seed_type=”objective”) - SeedSimulatedConversation (or dict with seed_type=”simulated_conversation”) - SeedPrompt for prompts (or dict with seed_type=”prompt” or no seed_type) Note: is_objective and is_simulated_conversation are deprecated since 0.13.0.
- Raises:
ValueError – If seeds is empty.
ValueError – If multiple objectives are provided.
ValueError – If SeedPrompt sequences overlap with SeedSimulatedConversation range.
Methods
__init__(*, seeds)Initialize a SeedGroup.
from_yaml_file(file)Create a new object from a YAML file.
Check if this is a single text prompt.
Check if all prompts are in a single sequence.
Check if this is a single-turn group (single request without objective).
render_template_value(**kwargs)Renders seed values as templates with provided parameters.
validate()Validate the seed group state.
Attributes
Returns a deduplicated list of all harm categories from all seeds.
Check if this group uses simulated conversation generation.
Returns a Message containing only the last turn's prompts if it's a user message.
Get the objective for this group.
Returns Messages that should be prepended as conversation history.
Get all SeedPrompt instances from this group.
Get the simulated conversation configuration if set.
Returns all prompts as user Messages, one per sequence.
- property harm_categories: List[str]#
Returns a deduplicated list of all harm categories from all seeds.
- Returns:
List of harm categories with duplicates removed.
- property has_simulated_conversation: bool#
Check if this group uses simulated conversation generation.
- is_single_turn() bool[source]#
Check if this is a single-turn group (single request without objective).
- property next_message: Message | None#
Returns a Message containing only the last turn’s prompts if it’s a user message.
- Returns:
Message for the current/last turn if user role, or None otherwise.
- property objective: SeedObjective | None#
Get the objective for this group.
- property prepended_conversation: List[Message] | None#
Returns Messages that should be prepended as conversation history.
Returns all messages except the last user sequence.
- Returns:
Messages for conversation history, or None if empty.
- property prompts: Sequence[SeedPrompt]#
Get all SeedPrompt instances from this group.
- render_template_value(**kwargs: Any) None[source]#
Renders seed values as templates with provided parameters.
- Parameters:
kwargs – Key-value pairs to replace in seed values.
- property simulated_conversation_config: SeedSimulatedConversation | None#
Get the simulated conversation configuration if set.
- property user_messages: List[Message]#
Returns all prompts as user Messages, one per sequence.
- Returns:
All user messages in sequence order, or empty list if no prompts.
- validate() None[source]#
Validate the seed group state.
This method can be called after external modifications to seeds to ensure the group remains in a valid state. It is automatically called during initialization.
- Raises:
ValueError – If validation fails.