Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

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

未关闭 适合新手
#3,587 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 2 天内回复

@ShivamSharma43 已经在做这个了。

开始于 2026年10月27日。

  • #3588 来自 @ShivamSharma43 —— 未关闭

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
82/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
python
领域
backend

调研方向

从 pyrit/datasets/seed_datasets/seed_metadata.py 开始,其中 SeedDatasetFilter 会规范化标签,而 SeedDatasetMetadata._coerce_metadata_values 会规范化元数据值。检查现有的筛选器测试,并添加覆盖 harm_categories、modalities 和 size 中大写值的测试,同时覆盖标签。完成标准是:在这些维度上,大写和小写的筛选值返回相同的数据集。

由索引模型根据 Issue 内容生成。

描述

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
主要语言
Python
星标
4.7k
派生
980
平均合并
2 天 7 小时
30 天内合并 PR
446

环境准备

在 Codespaces 中打开

在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。

  • 没有 Dockerfile 或 Docker Compose 文件
  • 有 Pull Request 模板
  • 没有贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

microsoft/PyRIT 的其他 Issue

查看 microsoft/PyRIT 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。