BUG: SelfAskGeneral scorers leave their output keys out of the identifier
Los mantenedores suelen responder en 2 días
@Hrushikesh-ramilla ya está trabajando en esto.
Desde el 3/11/2026.
- #3847 de @Hrushikesh-ramilla — abierto
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 72/100
Línea de trabajo
Empieza por _build_identifier en pyrit/score/self_ask_general_true_false_scorer.py (alrededor de la línea 136) y el método correspondiente en pyrit/score/self_ask_general_float_scale_scorer.py (alrededor de la línea 137), y revisa cuáles de los cinco argumentos *_output_key ya se registran. Añade las claves que faltan a ambos identificadores y luego ejecuta el script de reproducción del issue para confirmar que las distintas output keys ahora generan distintos hashes de unique_name. Está terminado cuando los identificadores de los dos scorers difieren para cada clave y las pruebas existentes de los scorers siguen pasando.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the bug
The five *_output_key arguments of SelfAskGeneralTrueFalseScorer and SelfAskGeneralFloatScaleScorer decide which field of the judge's JSON becomes the score, the rationale and the rest. _build_identifier records none of them (self_ask_general_true_false_scorer.py:136, self_ask_general_float_scale_scorer.py:137), so two scorers that read different fields share one hash. Split out of #3477, which only closes the converter side.
Steps/Code to Reproduce
Run on main at 5fb4fb977.
import asyncio
from pyrit.prompt_target import OpenAIChatTarget
from pyrit.score import NumericRange, SelfAskGeneralFloatScaleScorer, SelfAskGeneralTrueFalseScorer
from pyrit.setup import IN_MEMORY, initialize_pyrit_async
async def main() -> None:
await initialize_pyrit_async(memory_db_type=IN_MEMORY, silent=True)
target = OpenAIChatTarget(endpoint="https://example.invalid/v1", api_key="unused", model_name="model-a")
for key in ("score_value", "verdict"):
kwargs = {"chat_target": target, "system_prompt_format_string": "Score this.", "score_value_output_key": key}
print(key, SelfAskGeneralTrueFalseScorer(**kwargs).get_identifier().unique_name)
print(key, SelfAskGeneralFloatScaleScorer(scale=NumericRange(minimum_value=0, maximum_value=100), **kwargs).get_identifier().unique_name)
asyncio.run(main())
Expected Results
Different output keys, different identifiers.
Actual Results
score_value SelfAskGeneralTrueFalseScorer::ddd340c4
score_value SelfAskGeneralFloatScaleScorer::61870892
verdict SelfAskGeneralTrueFalseScorer::ddd340c4
verdict SelfAskGeneralFloatScaleScorer::61870892
Versions
- OS: Windows 11
- Python version: 3.12.0
- PyRIT version: source checkout of
mainat5fb4fb977
System:
python: 3.12.0 (tags/v3.12.0:0fb18b0, Oct 2 2023, 13:03:39) [MSC v.1935 64 bit (AMD64)]
executable: C:\dev\pyr-main\Scripts\python.exe
machine: Windows-11-10.0.26300-SP0
Python dependencies:
pyrit: 1.2.0.dev0
Cython: None
numpy: 2.4.6
openai: 2.54.0
packaging: 26.3
pip: 23.2.1
scipy: 1.17.1
setuptools: 84.2.1
sqlite3: None
torch: None
transformers: 5.20.2
The scorer side of the registry-wide test can pick this up once #3312 lands.
- Lenguaje dominante
- Python
- Estrellas
- 4.7k
- Forks
- 1k
- Merge medio
- 2 d 3 h
- PR fusionados (30 d)
- 450
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de microsoft/PyRIT
-
Scenario objective previews can split supplementary Unicode during truncationPosiblemente ocupada @Aadithya-kl la tomó hoy. AbiertoBug: triage help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
microsoft/PyRIT#3870 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
URLDataTypeSerializer treats mixed-case HTTP(S) schemes as local pathsPosiblemente ocupada @akhil9tiet la tomó hoy. AbiertoBug: triage help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
microsoft/PyRIT#3861 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
Parameter required status is lost after wire round-tripPosiblemente ocupada @its-amann la tomó hoy. AbiertoBug: triage help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
microsoft/PyRIT#3854 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
BUG: LLMGenericTextConverter identifier changes between processes for set-valued template parametersAbiertoBug: triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 2 días
-
GUI rejects valid empty-string SearchReplaceConverter settings, preventing deletion convertersPosiblemente ocupada @Darshika140 la tomó hace 1 día. Abiertohelp wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
microsoft/PyRIT#3749 · 3 comentarios · 1 asignado ·
Los mantenedores suelen responder en 2 días
Todos los issues de microsoft/PyRIT
Issues similares
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 78/100
QuantConnect/Documentation#2838 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
awslabs/route53-dynamic-dns-with-lambda#67 · 1 comentario ·
-
`SubAgents` returns a child run's `DeferredToolRequests` to the parent as a successful tool resultAbiertobug pkg:harness
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
pydantic/pydantic-ai#12405 ·
Los mantenedores suelen responder en 1 día
-
good first issue help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
good first issue help wanted
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100