Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

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

Ouverte Adaptée aux débutants
#3,591 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 2 jours

@ShivamSharma43 y travaille déjà.

Depuis le 27/10/2026.

  • #3592 par @ShivamSharma43 — ouverte

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
78/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
python
Domaine
data

Piste de recherche

Lisez garak_dataset.py et vlsu_multimodal_dataset.py, puis comparez leur validation de max_examples avec la correction du chargeur ComicJailbreak référencée dans #3589. Vérifiez si chaque chargeur rejette les valeurs nulles et négatives lors de sa construction ; le travail est terminé lorsque les deux produisent le ValueError indiqué et que les limites positives valides continuent de fonctionner.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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
Langage dominant
Python
Étoiles
4.7k
Forks
980
Merge moyen
2 j 9 h
PR mergées (30 j)
433

Préparer son environnement

Ouvrir dans Codespaces

Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.

  • Aucun Dockerfile ni fichier Docker Compose
  • Propose un modèle de pull request
  • Aucun guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de microsoft/PyRIT

Toutes les issues de microsoft/PyRIT

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.