BUG: SeedDatasetFilter matches harm_categories, modalities and size case-sensitively, unlike tags
Mantenedores costumam responder em até 2 dias
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 82/100
Direção de pesquisa
Comece em pyrit/datasets/seed_datasets/seed_metadata.py, onde SeedDatasetFilter normaliza tags e SeedDatasetMetadata._coerce_metadata_values normaliza valores de metadados. Verifique os testes de filtro existentes e adicione cobertura para valores em maiúsculas em harm_categories, modalities e size, além das tags. O trabalho estará concluído quando os valores de filtro em maiúsculas e minúsculas retornarem os mesmos conjuntos de dados nesses eixos.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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
- Linguagem predominante
- Python
- Estrelas
- 4.7k
- Forks
- 980
- Merge médio
- 2d 7h
- PRs com merge (30d)
- 446
Preparar o ambiente
Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Sem guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de microsoft/PyRIT
-
BUG: Garak and ML-VLSU loaders still load one example when max_examples is 0 or negativeTalvez já em andamento @ShivamSharma43 assumiu há 2 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 2 dias
-
BUG: ComicJailbreak max_examples counts goals that render nothing, so templates=["code"] with max_examples=10 failsTalvez já em andamento @ShivamSharma43 assumiu há 2 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Mantenedores costumam responder em até 2 dias
-
Conversation drawer shows the previous attack's conversations after switching attacksTalvez já em andamento @ManoharPaturi assumiu há 2 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
microsoft/PyRIT#3575 · 2 comentários · 1 responsável ·
Mantenedores costumam responder em até 2 dias
-
Conversation draft turns permanently dirty when applied conversions match no pieceTalvez já em andamento @ManoharPaturi assumiu há 2 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 83/100
microsoft/PyRIT#3573 · 1 responsável ·
Mantenedores costumam responder em até 2 dias
-
New finding dialog loses a severity only edit without an unsaved changes warningTalvez já em andamento @ManoharPaturi assumiu há 2 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
microsoft/PyRIT#3569 · 1 responsável ·
Mantenedores costumam responder em até 2 dias
Todas as issues de microsoft/PyRIT
Issues semelhantes
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 4 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
ClockGU/clockwork-backend#169 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
aws-samples/sample-per-model-bedrock#616 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
chnm/teachinghistory-hugo#47 ·
-
good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 67/100
pandas-dev/pandas-stubs#2047 · 2 comentários ·
Mantenedores costumam responder em até 1 dia