BUG: SelfAskGeneral scorers leave their output keys out of the identifier

Abierto Apto para principiantes
#3,839 0 comentarios 0 reacciones 0 asignados Ver en GitHub

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
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
python
Área
ai

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

Bug: triage
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 main at 5fb4fb977
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

Abrir en Codespaces

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

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de microsoft/PyRIT

Todos los issues de microsoft/PyRIT

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.