BUG: ComicJailbreak max_examples counts goals that render nothing, so templates=["code"] with max_examples=10 fails
Maintainer antworten meist innerhalb von 2 Tagen
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 76/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- python
- Bereich
- testing-qa
Rechercherichtung
Lies pyrit/datasets/seed_datasets/remote/comic_jailbreak_dataset.py, insbesondere _fetch_dataset_async, und verfolge, wie Ziele gegen max_examples gezählt werden, wenn der Text der ausgewählten Vorlage fehlt. Prüfe zuerst die gemeldeten Fälle für code, instruction und eine Obergrenze von null. Fertig ist die Arbeit, wenn das Limit gerenderte Ziele zählt und Werte unter 1 den angegebenen ValueError auslösen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Describe the bug
_ComicJailbreakDataset (pyrit/datasets/seed_datasets/remote/comic_jailbreak_dataset.py) documents max_examples as the "maximum number of source goals to render", but _fetch_dataset_async counts every goal it looks at, including goals that have no text for any of the selected templates and so render nothing. In the dataset, 213 of the 300 goals have no Code text, 61 have no Instruction text and 59 have no Speech text, so the cap is used up by goals that produce no seeds:
templates=["code"], max_examples=10: none of the first 10 goals hasCodetext, so nothing is rendered and loading fails withSeedDataset cannot be empty.templates=["instruction"], max_examples=10: only 2 goals are rendered.
The cap is also checked only after a goal has been rendered, so max_examples=0 (or a negative value) still renders one goal.
Steps/Code to Reproduce
import asyncio
from pyrit.datasets.seed_datasets.remote.comic_jailbreak_dataset import _ComicJailbreakDataset
from pyrit.models import SeedObjective
from pyrit.setup.initialization import IN_MEMORY, initialize_pyrit_async
async def main():
await initialize_pyrit_async(memory_db_type=IN_MEMORY)
for templates, max_examples in ((["code"], 10), (["instruction"], 10), (["article"], 0)):
try:
loader = _ComicJailbreakDataset(templates=templates, max_examples=max_examples)
dataset = await loader.fetch_dataset_async(cache=False)
except ValueError as e:
print(f"templates={templates} max_examples={max_examples}: ValueError: {str(e).splitlines()[0]}")
continue
goals = {s.value for s in dataset.seeds if isinstance(s, SeedObjective)}
print(f"templates={templates} max_examples={max_examples}: {len(goals)} goals")
asyncio.run(main())
Expected Results
max_examples goals are rendered for each template, and a cap below 1 is rejected:
templates=['code'] max_examples=10: 10 goals
templates=['instruction'] max_examples=10: 10 goals
templates=['article'] max_examples=0: ValueError: max_examples must be at least 1 or None, got 0
Actual Results
templates=['code'] max_examples=10: ValueError: 1 validation error for SeedDataset
templates=['instruction'] max_examples=10: 2 goals
templates=['article'] max_examples=0: 1 goals
The first error is SeedDataset cannot be empty.
Screenshots
N/A
Versions
- OS: Windows 11
- Python version: 3.11.9
- PyRIT version: installed from main (6224d531) in editable mode
- Vorherrschende Sprache
- Python
- Sterne
- 4.7k
- Forks
- 980
- Ø Merge
- 2 T. 9 Std.
- Gemergte PRs (30 T.)
- 422
Entwicklungsumgebung
Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Kein Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus microsoft/PyRIT
-
BUG: Garak and ML-VLSU loaders still load one example when max_examples is 0 or negativeEvtl. vergeben @ShivamSharma43 hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 2 Tagen
-
BUG: SeedDatasetFilter matches harm_categories, modalities and size case-sensitively, unlike tagsEvtl. vergeben @ShivamSharma43 hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 2 Tagen
-
Conversation drawer shows the previous attack's conversations after switching attacksEvtl. vergeben @ManoharPaturi hat das vor 1 Tag übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
microsoft/PyRIT#3575 · 2 Kommentare · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Conversation draft turns permanently dirty when applied conversions match no pieceEvtl. vergeben @ManoharPaturi hat das vor 1 Tag übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
microsoft/PyRIT#3573 · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Analytics page treats a bare # fragment as a malformed link and disables the dashboardEvtl. vergeben @ManoharPaturi hat das vor 1 Tag übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 79/100
microsoft/PyRIT#3571 · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 2 Tagen
Alle Issues in microsoft/PyRIT
Ähnliche Issues
-
backlog
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 91/100
EchoTools/nevr-runtime#1108 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
btclib-org/btclib-wallet#587 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
documentation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Judgment-Pack/judgment-pack-spec#275 ·
Maintainer antworten meist innerhalb von 1 Tag