pyrit.models.SeedGroup#

class SeedGroup(*, seeds: Sequence[Seed | Dict[str, Any]])[source]#

Bases: YamlLoadable

A 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.

is_single_part_single_text_request()

Check if this is a single text prompt.

is_single_request()

Check if all prompts are in a single sequence.

is_single_turn()

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

harm_categories

Returns a deduplicated list of all harm categories from all seeds.

has_simulated_conversation

Check if this group uses simulated conversation generation.

next_message

Returns a Message containing only the last turn's prompts if it's a user message.

objective

Get the objective for this group.

prepended_conversation

Returns Messages that should be prepended as conversation history.

prompts

Get all SeedPrompt instances from this group.

simulated_conversation_config

Get the simulated conversation configuration if set.

user_messages

Returns all prompts as user Messages, one per sequence.

seeds

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_part_single_text_request() bool[source]#

Check if this is a single text prompt.

is_single_request() bool[source]#

Check if all prompts are in a single sequence.

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.

seeds: List[Seed]#
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.