Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

BUG: ComicJailbreak max_examples counts goals that render nothing, so templates=["code"] with max_examples=10 fails

Offen Anfängerfreundlich
#3,589 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 2 Tagen

@ShivamSharma43 arbeitet bereits daran.

Seit 27.10.2026.

  • #3590 von @ShivamSharma43 — offen

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 has Code text, so nothing is rendered and loading fails with SeedDataset 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

In Codespaces öffnen

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

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus microsoft/PyRIT

Alle Issues in microsoft/PyRIT

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.