Skip to content

Add Simple Assistive Task Linkage (SATA) masking technique #2354

Description

Is your feature request related to a problem? Please describe.

Following #511, I found a potential feature-parity gap with Garak's Simple Assistive Task Linkage (SATA) probe.

SATA masks selected terms in an objective with [MASK] tokens, then presents the masked objective as a simple assistive infill task. I could not find an equivalent SATA or POS-aware mask-and-infill technique in PyRIT's current converters, issues, or pull requests.

PyRIT already has the HarmBench dataset and TaskFramingConverter, so the missing functionality appears to be the masking and word-selection step rather than a new dataset or scorer.

Describe the solution you'd like

Add a reusable text transformation that can:

  • select a configurable number of candidate words or phrases;
  • replace them with a configurable mask token such as [MASK];
  • compose with TaskFramingConverter to reproduce the SATA masked-infill technique;
  • support deterministic behavior for testing; and
  • include unit tests and a short example using an existing dataset such as HarmBench.

One possible implementation would be a part-of-speech word-selection strategy used with SelectiveTextConverter. A dedicated SATA converter is another option if that better fits the project architecture.

I would appreciate maintainer guidance on the preferred API and NLP dependency before implementing this, particularly whether to use an optional POS tagger or keep the selection logic dependency-free.

Describe alternatives you've considered, if relevant

An exact port of Garak's NLTK-based probe would be straightforward, but it would introduce model-data download behavior and be less reusable.

A complete SATA-specific scenario also seems unnecessarily broad because PyRIT already provides the relevant dataset, task-framing, attack, and scoring components.

Additional context

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions