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

BUG: Garak and ML-VLSU loaders still load one example when max_examples is 0 or negative

Offen Anfängerfreundlich
#3,591 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.

  • #3592 von @ShivamSharma43 — offen

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
78/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
python
Bereich
data

Rechercherichtung

Lies garak_dataset.py und vlsu_multimodal_dataset.py und vergleiche dann ihre Validierung von max_examples mit der in #3589 referenzierten Korrektur des ComicJailbreak-Loaders. Prüfe, ob jeder Loader bei der Konstruktion Null und negative Werte zurückweist; fertig ist die Aufgabe, wenn beide den angegebenen ValueError auslösen und gültige positive Obergrenzen weiterhin funktionieren.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Describe the bug

The Garak loaders (_GarakRemoteDataset in pyrit/datasets/seed_datasets/remote/garak_dataset.py and every subclass, such as the package hallucination, system prompt and audio datasets) and _VLSUMultimodalDataset (vlsu_multimodal_dataset.py) accept any integer for max_examples. They compare against the cap only after appending, so a cap below 1 never stops the first item:

  • _GarakNpmDataset(max_examples=0) and max_examples=-1 each load 1 seed.
  • _VLSUMultimodalDataset(max_examples=0) loads the first matching example's text and image pair: len(prompts) >= 0 * 2 is only checked after the pair is added.

This is the same pattern as max_examples in the ComicJailbreak loader (#3589).

Steps/Code to Reproduce
import asyncio
from unittest.mock import AsyncMock, patch

from pyrit.datasets.seed_datasets.remote.garak_package_hallucination_dataset import _GarakNpmDataset
from pyrit.datasets.seed_datasets.remote.vlsu_multimodal_dataset import _VLSUMultimodalDataset
from pyrit.setup.initialization import IN_MEMORY, initialize_pyrit_async

ROWS = [{"text": f"pkg{i}", "package_first_seen": "2010-01-01"} for i in range(3)]


async def main():
    await initialize_pyrit_async(memory_db_type=IN_MEMORY)
    for max_examples in (0, -1):
        try:
            loader = _GarakNpmDataset(max_examples=max_examples)
            with patch.object(loader, "_fetch_from_huggingface_async", new=AsyncMock(return_value=ROWS)):
                dataset = await loader.fetch_dataset_async()
            print(f"garak npm max_examples={max_examples}: {len(dataset.seeds)} seeds")
        except ValueError as e:
            print(f"garak npm max_examples={max_examples}: ValueError: {e}")
        try:
            _VLSUMultimodalDataset(max_examples=max_examples)
            print(f"ml_vlsu max_examples={max_examples}: accepted")
        except ValueError as e:
            print(f"ml_vlsu max_examples={max_examples}: ValueError: {e}")


asyncio.run(main())
Expected Results

A cap below 1 is rejected when the loader is created, as the ComicJailbreak fix for #3589 does:

garak npm max_examples=0: ValueError: max_examples must be at least 1 or None, got 0
ml_vlsu max_examples=0: ValueError: max_examples must be at least 1 or None, got 0
garak npm max_examples=-1: ValueError: max_examples must be at least 1 or None, got -1
ml_vlsu max_examples=-1: ValueError: max_examples must be at least 1 or None, got -1
Actual Results
garak npm max_examples=0: 1 seeds
ml_vlsu max_examples=0: accepted
garak npm max_examples=-1: 1 seeds
ml_vlsu max_examples=-1: accepted
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. 7 Std.
Gemergte PRs (30 T.)
446

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.