BUG: Garak and ML-VLSU loaders still load one example when max_examples is 0 or negative
Maintainer antworten meist innerhalb von 2 Tagen
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 78/100
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)andmax_examples=-1each load 1 seed._VLSUMultimodalDataset(max_examples=0)loads the first matching example's text and image pair:len(prompts) >= 0 * 2is 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
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: ComicJailbreak max_examples counts goals that render nothing, so templates=["code"] with max_examples=10 failsEvtl. vergeben @ShivamSharma43 hat das vor 2 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Maintainer antworten meist innerhalb von 2 Tagen
-
BUG: SeedDatasetFilter matches harm_categories, modalities and size case-sensitively, unlike tagsEvtl. vergeben @ShivamSharma43 hat das vor 2 Tagen ü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 2 Tagen ü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 2 Tagen ü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
-
New finding dialog loses a severity only edit without an unsaved changes warningEvtl. vergeben @ManoharPaturi hat das vor 2 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
microsoft/PyRIT#3569 · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 2 Tagen
Alle Issues in microsoft/PyRIT
Ähnliche Issues
-
area/profiles comp/cli P3 type/feature
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
NousResearch/hermes-agent#146372 ·
Maintainer antworten meist innerhalb von 1 Tag
-
[BUG] OpenAI-compatible embedding model alias breaks embedder constructionEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
Maintainer antworten meist innerhalb von 1 Tag
-
[oblt-aw][autodoc] Document obs-aw-automerge contract and fix automerge doc inconsistenciesEvtl. vergeben @github-actions hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Maintainer antworten meist innerhalb von 1 Tag
-
GeoSeries scale and skew tests fail with pytest 9.2.0Evtl. vergeben @jiayuasu hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag
-
admission-deferred priority: medium status: ready work-class: scoped
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
melodic-software/claude-code-plugins#10887 · 4 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag