BUG: SeedDatasetFilter matches harm_categories, modalities and size case-sensitively, unlike tags
Les mainteneurs répondent en général sous 2 jours
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 82/100
Piste de recherche
Commencez dans pyrit/datasets/seed_datasets/seed_metadata.py, où SeedDatasetFilter normalise les tags et SeedDatasetMetadata._coerce_metadata_values normalise les valeurs des métadonnées. Examinez les tests de filtre existants et ajoutez des cas couvrant les valeurs en majuscules dans harm_categories, modalities et size, ainsi que dans les tags. Le travail est terminé lorsque les valeurs de filtre en majuscules et en minuscules renvoient les mêmes jeux de données pour ces axes.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Describe the bug
SeedDatasetFilter (pyrit/datasets/seed_datasets/seed_metadata.py) normalizes only tags (strip + lowercase), but dataset metadata is normalized on every axis: SeedDatasetMetadata._coerce_metadata_values lowercases and strips every string value of tags, size, modalities, source_type and harm_categories. So a filter value with an uppercase letter matches on tags but silently matches no dataset on any other axis. For example, SeedDatasetFilter(harm_categories={"Violence"}) returns no datasets, while harm_categories={"violence"} returns 5.
Steps/Code to Reproduce
import asyncio
from pyrit.datasets.seed_datasets.seed_dataset_provider import SeedDatasetProvider
from pyrit.datasets.seed_datasets.seed_metadata import SeedDatasetFilter
async def main():
for kwargs in (
{"tags": {"safety"}}, {"tags": {"Safety"}},
{"harm_categories": {"violence"}}, {"harm_categories": {"Violence"}},
{"modalities": {"text"}}, {"modalities": {"Text"}},
{"size": {"large"}}, {"size": {"Large"}},
):
names = await SeedDatasetProvider.get_all_dataset_names_async(filters=SeedDatasetFilter(**kwargs))
print(kwargs, len(names))
asyncio.run(main())
Expected Results
The case of a filter value does not matter on any axis, as it already does not for tags:
{'tags': {'safety'}} 68
{'tags': {'Safety'}} 68
{'harm_categories': {'violence'}} 5
{'harm_categories': {'Violence'}} 5
{'modalities': {'text'}} 76
{'modalities': {'Text'}} 76
{'size': {'large'}} 28
{'size': {'Large'}} 28
Actual Results
{'tags': {'safety'}} 68
{'tags': {'Safety'}} 68
{'harm_categories': {'violence'}} 5
{'harm_categories': {'Violence'}} 0
{'modalities': {'text'}} 76
{'modalities': {'Text'}} 0
{'size': {'large'}} 28
{'size': {'Large'}} 0
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
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
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de microsoft/PyRIT
-
BUG: Garak and ML-VLSU loaders still load one example when max_examples is 0 or negativePeut-être pris @ShivamSharma43 l’a pris il y a 1 jour. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 2 jours
-
BUG: ComicJailbreak max_examples counts goals that render nothing, so templates=["code"] with max_examples=10 failsPeut-être pris @ShivamSharma43 l’a pris il y a 1 jour. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 2 jours
-
Conversation drawer shows the previous attack's conversations after switching attacksPeut-être pris @ManoharPaturi l’a pris il y a 1 jour. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
microsoft/PyRIT#3575 · 2 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
-
Conversation draft turns permanently dirty when applied conversions match no piecePeut-être pris @ManoharPaturi l’a pris il y a 1 jour. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 83/100
microsoft/PyRIT#3573 · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
-
Analytics page treats a bare # fragment as a malformed link and disables the dashboardPeut-être pris @ManoharPaturi l’a pris il y a 1 jour. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 79/100
microsoft/PyRIT#3571 · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de microsoft/PyRIT
Issues similaires
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
glossyio/traffic-monitor#264 ·
Les mainteneurs répondent en général sous 1 jour
-
Add self-hostOuverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 75/100
Atarity/deploy-your-own-saas#102 ·
-
[Bug]: RDFlex silently drops the covariate adjustment when the outcome or treatment column is integer-typedPeut-être pris @vrjdev l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
DoubleML/doubleml-for-py#424 ·
Les mainteneurs répondent en général sous 1 jour
-
agentic-dmx docs enhancement
Difficulté 1/5 1-3 heures Accessibilité débutants 86/100
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
521xueweihan/HelloGitHub#4150 ·