Skip to content

Commit 0bbbbae

Browse files
Merge pull request #105 from opendatahub-io/main
sync: main to incubation
2 parents cf74509 + ae9ebd7 commit 0bbbbae

2 files changed

Lines changed: 21 additions & 12 deletions

File tree

src/llama_stack_provider_trustyai_garak/evalhub/garak_adapter.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1250,6 +1250,11 @@ def _normalize_url(self, url: str) -> str:
12501250

12511251
# return env
12521252

1253+
@staticmethod
1254+
def _pct_to_ratio(value: float) -> float:
1255+
"""Convert a 0-100 percentage to a 0-1 ratio."""
1256+
return round(value / 100, 4)
1257+
12531258
def _parse_results(
12541259
self,
12551260
result: GarakScanResult,
@@ -1310,8 +1315,8 @@ def _parse_results(
13101315
metrics.append(
13111316
EvaluationResult(
13121317
metric_name="attack_success_rate",
1313-
metric_value=overall_asr,
1314-
metric_type="percentage",
1318+
metric_value=self._pct_to_ratio(overall_asr),
1319+
metric_type="ratio",
13151320
num_samples=overall_summary.get("total_attempts"),
13161321
)
13171322
)
@@ -1350,8 +1355,8 @@ def _parse_results(
13501355
metrics.append(
13511356
EvaluationResult(
13521357
metric_name=f"{probe_name}_asr",
1353-
metric_value=attack_success_rate,
1354-
metric_type="percentage",
1358+
metric_value=self._pct_to_ratio(attack_success_rate),
1359+
metric_type="ratio",
13551360
num_samples=probe_attempts if not art_intents else None,
13561361
metadata=probe_metadata,
13571362
)
@@ -1360,7 +1365,7 @@ def _parse_results(
13601365
overall_score = overall_summary.get("attack_success_rate")
13611366
if overall_score is not None:
13621367
try:
1363-
overall_score = float(overall_score)
1368+
overall_score = self._pct_to_ratio(float(overall_score))
13641369
except (TypeError, ValueError):
13651370
overall_score = None
13661371

@@ -1370,7 +1375,7 @@ def _parse_results(
13701375
for probe_name, score_data in combined["scores"].items()
13711376
if probe_name != "_overall"
13721377
)
1373-
overall_score = round((total_vulnerable / total_attempts) * 100, 2)
1378+
overall_score = self._pct_to_ratio((total_vulnerable / total_attempts) * 100)
13741379

13751380
num_examples = overall_summary.get("total_attempts", total_attempts)
13761381
try:
@@ -1531,7 +1536,7 @@ def main(adapter_cls: type[GarakAdapter] = GarakAdapter) -> None:
15311536

15321537
results = adapter.run_benchmark_job(adapter.job_spec, callbacks)
15331538
logger.info(f"Job completed successfully: {results.id}")
1534-
logger.info(f"Overall attack success rate: {results.overall_score}%")
1539+
logger.info(f"Overall attack success rate (ratio): {results.overall_score}")
15351540

15361541
callbacks.report_results(results)
15371542
sys.exit(0)

tests/test_evalhub_adapter.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -329,10 +329,12 @@ def test_parse_results_uses_overall_without_double_count(monkeypatch, tmp_path):
329329

330330
assert len(metrics) == 2
331331
assert metrics[0].metric_name == "attack_success_rate"
332-
assert metrics[0].metric_value == 30.0
332+
assert metrics[0].metric_type == "ratio"
333+
assert metrics[0].metric_value == 0.3
333334
assert metrics[0].num_samples == 10
334335
assert metrics[1].metric_name == "probe.alpha_asr"
335-
assert overall_score == 30.0
336+
assert metrics[1].metric_type == "ratio"
337+
assert overall_score == 0.3
336338
assert num_examples == 10
337339
assert overall_summary["tbsa"] == 4.1
338340

@@ -1969,17 +1971,19 @@ def test_parse_results_with_art_intents(self, monkeypatch, tmp_path):
19691971

19701972
assert len(metrics) == 2
19711973
assert metrics[0].metric_name == "attack_success_rate"
1972-
assert metrics[0].metric_value == 30.0
1974+
assert metrics[0].metric_type == "ratio"
1975+
assert metrics[0].metric_value == 0.3
19731976
assert metrics[0].num_samples == 20
19741977
assert metrics[1].metric_name == "spo.SPOIntent_asr"
1975-
assert metrics[1].metric_value == 30.0
1978+
assert metrics[1].metric_type == "ratio"
1979+
assert metrics[1].metric_value == 0.3
19761980
assert metrics[1].num_samples is None
19771981
assert metrics[1].metadata["total_attempts"] == 20
19781982
assert metrics[1].metadata["unsafe_stubs"] == 3
19791983
assert metrics[1].metadata["safe_stubs"] == 7
19801984
assert "intent_breakdown" in metrics[1].metadata
19811985
assert metrics[1].metadata["intent_breakdown"]["S001"]["unsafe_stubs"] == 2
1982-
assert overall_score == 30.0
1986+
assert overall_score == 0.3
19831987
assert num_examples == 20
19841988

19851989

0 commit comments

Comments
 (0)