BUG: Overlapping scorer-evaluation globs duplicate CSVs and change accuracy
Les mainteneurs répondent en général sous 2 jours
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 78/100
Piste de recherche
Commencez dans pyrit/score/scorer_evaluation/scorer_evaluator.py, à run_evaluation_async(), et suivez la manière dont les motifs human_labeled_datasets_files sélectionnent les fichiers CSV. Ajoutez une couverture de régression pour les motifs qui se chevauchent et ceux qui sont répétés, tout en préservant les fichiers distincts ayant des chaînes de version identiques ; vérifiez que les deux configurations évaluent deux réponses avec une précision de 0.5.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Describe the bug
Overlapping human_labeled_datasets_files patterns load the same CSV more than once in run_evaluation_async(), changing sample weights and reported accuracy. For the same two files and deterministic scorer, adding an already-matched filename changes accuracy from 0.5 to 0.6667.
Steps/Code to Reproduce
No model API or external dataset needed. Only the dataset root is redirected; loading, scoring, and metrics use the real implementations.
import asyncio
from pathlib import Path
from tempfile import TemporaryDirectory
from unittest.mock import patch
from pyrit.memory import CentralMemory, SQLiteMemory
from pyrit.score import RegistryUpdateBehavior, SubStringScorer
from pyrit.score.scorer_evaluation import scorer_evaluator as se
async def run_async(root: Path) -> None:
try:
with patch.object(se, "SCORER_EVALS_PATH", root):
for patterns in (["*.csv"], ["*.csv", "a.csv"]):
evaluator = se.ObjectiveScorerEvaluator(SubStringScorer(substring="marker"))
result = await evaluator.run_evaluation_async(
dataset_files=se.ScorerEvalDatasetFiles(
human_labeled_datasets_files=patterns, result_file="unused.jsonl"
),
num_scorer_trials=1,
update_registry_behavior=RegistryUpdateBehavior.NEVER_UPDATE,
)
print(patterns, result.num_responses, round(float(result.accuracy), 4))
finally:
await CentralMemory.get_memory_instance().dispose_engine_async()
with TemporaryDirectory() as directory:
root = Path(directory)
for name, label in [("a.csv", 1), ("b.csv", 0)]:
(root / name).write_text(
"# dataset_version=1.0\nassistant_response,objective,human_score\n"
f"marker,Synthetic objective,{label}\n",
encoding="utf-8",
)
CentralMemory.set_memory_instance(SQLiteMemory(db_path=":memory:", silent=True))
asyncio.run(run_async(root))
Expected Results
Both configurations evaluate the same two responses, with accuracy 0.5.
Actual Results
['*.csv'] 2 0.5
['*.csv', 'a.csv'] 3 0.6667
Would deduplicating matched paths before loading be appropriate? I'd keep distinct files with equal version strings intact and add regression tests for overlapping and repeated patterns. I'd like to take this if you mark it ready for contribution; I'll wait for triage before preparing a PR.
Versions
macOS ARM64, Python 3.12.13, PyRIT 1.2.0.dev0 (ac196e57, main), numpy 2.4.6, pandas 3.0.6, scipy 1.17.1. Dependencies installed with uv sync --locked --no-dev.
AI-assisted investigation; the reproduction above was executed locally against unmodified source.
- Langage dominant
- Python
- Étoiles
- 4.7k
- Forks
- 1k
- Merge moyen
- 2 j 6 h
- PR mergées (30 j)
- 513
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: HuggingFaceChatTarget runs model.generate() on the event loopPeut-être pris @Shizoqua l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 2 jours
-
BUG: CharacterSpaceConverter introduces whitespace holes and trailing whitespacePeut-être pris @Kaap10 l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 2 jours
-
BUG: StaticPromptInjectionScorer misses modern frontier chat template delimiters (DeepSeek, Cohere Command R, Mistral)Peut-être pris @Kaap10 l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 2 jours
-
Parameter required status is lost after wire round-tripPeut-être pris @its-amann l’a pris il y a 4 jours. OuverteBug: triage help wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
microsoft/PyRIT#3854 · 2 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
-
BUG: LLMGenericTextConverter identifier changes between processes for set-valued template parametersPeut-être pris @samrudhi03 l’a pris il y a 4 jours. OuverteBug: triage
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
microsoft/PyRIT#3841 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de microsoft/PyRIT
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
Les mainteneurs répondent en général sous 1 jour
-
[Bug] vllm-sr config migrate drops providers.models[].deploymentPeut-être pris @Bevisy l’a pris aujourd’hui. Ouverteneeds-acceptance wg/developer-experience-ecosystem
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
vllm-project/semantic-router#5996 ·
Les mainteneurs répondent en général sous 2 jours
-
bugfix low-priority plugin:abstract plugin:leyline small-effort source:discussion
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
athola/claude-night-market#1132 ·
-
Add support for Sinhala languageOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
WeblateOrg/language-data#2773 ·
Les mainteneurs répondent en général sous 1 jour
-
[yugabyted] xcluster set_up and add_to_replication fail for database names containing - . or (Ouvertekind/bug priority/medium qa_automation
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
yugabyte/yugabyte-db#37324 ·
Les mainteneurs répondent en général sous 1 jour