Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

BUG: SeedDatasetFilter matches harm_categories, modalities and size case-sensitively, unlike tags

Đang mở Phù hợp với người mới
#3,587 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 2 ngày

@ShivamSharma43 đang làm issue này rồi.

Từ ngày 27/10/2026.

  • #3588 của @ShivamSharma43 — đang mở

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
82/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
python
Lĩnh vực
backend

Hướng nghiên cứu

Bắt đầu tại pyrit/datasets/seed_datasets/seed_metadata.py, nơi SeedDatasetFilter chuẩn hóa các thẻ và SeedDatasetMetadata._coerce_metadata_values chuẩn hóa các giá trị siêu dữ liệu. Kiểm tra các bài kiểm thử bộ lọc hiện có và bổ sung kiểm thử cho các giá trị viết hoa trong harm_categories, modalities và size, bên cạnh các thẻ. Hoàn tất khi các giá trị bộ lọc viết hoa và viết thường trả về cùng các tập dữ liệu trên các trục này.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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
Ngôn ngữ chính
Python
Star
4.7k
Fork
980
Merge trung bình
2 ngày 9 giờ
Pull request đã merge (30 ngày)
433

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

  • Không có Dockerfile hay tệp Docker Compose
  • Có mẫu pull request
  • Không có hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của microsoft/PyRIT

Tất cả issue của microsoft/PyRIT

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.