import React, { useState, useEffect } from 'react'; const BenchmarkChart = () => { // Real data from your ASR calculations - sorted by highest achievable ASR const benchmarkData = [ { model: "Grok 4", baseline: 68.67, methods: { keyword_objective_combined: 85.15 } }, { model: "Deepseek R1-0528", baseline: 68.67, methods: { keyword_objective_combined: 83.76 } }, { model: "Llama 3.1 405B", baseline: 67.00, methods: { keyword_objective_combined: 80.75 } }, { model: "Gemini 2.5 Pro", baseline: 55.67, methods: { keyword_objective_combined: 74.14, root_problem: 67.19 } }, { model: "Llama 3 8B Instruct Reference", baseline: 58.33, methods: { keyword_objective_combined: 68.86 } }, { model: "Mixtral 8x22B", baseline: 48.00, methods: { keyword_objective_combined: 66.82 } }, { model: "Llama 4 Maverick Instruct", baseline: 45.00, methods: { keyword_objective_combined: 56.46 } }, { model: "GPT o3", baseline: 22.00, methods: { keyword_objective_combined: 30.53 } }, { model: "Claude 4 Sonnet", baseline: 26.33, methods: { keyword_objective_combined: 28.64 } }, { model: "Claude Opus 4.1", baseline: 20.67, methods: { keyword_objective_combined: 23.56 } }, { model: "GPT 5", baseline: 8.33, methods: { keyword_objective_combined: 11.68, root_problem: 12.46 } }, { model: "GPT 5 mini", baseline: 7.67, methods: { keyword_objective_combined: 11.28, root_problem: 10.44 } } ]; const [currentPhase, setCurrentPhase] = useState('baseline'); const [currentMethodIndex, setCurrentMethodIndex] = useState(0); const synthesisMethodsOrder = ['keyword_objective_combined', 'root_problem']; const phases = [ { key: 'baseline', label: 'Human Baseline ASR' }, { key: 'additive_synthesis', label: 'Human + Transformation Methods ASR' } ]; useEffect(() => { const interval = setInterval(() => { setCurrentPhase(prev => prev === 'baseline' ? 'additive_synthesis' : 'baseline'); setCurrentMethodIndex(0); }, 8000); return () => clearInterval(interval); }, []); useEffect(() => { if (currentPhase === 'additive_synthesis') { const methodInterval = setInterval(() => { setCurrentMethodIndex(prev => { const nextIndex = prev + 1; if (nextIndex > synthesisMethodsOrder.length) { return synthesisMethodsOrder.length; } return nextIndex; }); }, 2000); return () => clearInterval(methodInterval); } }, [currentPhase]); const getCurrentValue = (modelData, phase) => { if (phase === 'baseline') { return modelData.baseline; } else if (phase === 'additive_synthesis') { // Show the highest ASR achieved by any transformation method tried so far let maxASR = modelData.baseline; for (let i = 0; i < currentMethodIndex; i++) { const method = synthesisMethodsOrder[i]; if (modelData.methods[method] !== undefined) { maxASR = Math.max(maxASR, modelData.methods[method]); } } return maxASR; } return 0; }; const getCurrentMethod = (modelData, phase) => { if (phase === 'baseline') return 'Human Baseline'; if (currentMethodIndex === 0) return 'Human Baseline'; const availableMethods = []; for (let i = 0; i < currentMethodIndex; i++) { const method = synthesisMethodsOrder[i]; if (modelData.methods[method] !== undefined) { availableMethods.push(method); } } if (availableMethods.length === 0) return 'Human Baseline'; const lastMethod = availableMethods[availableMethods.length - 1]; if (lastMethod === 'keyword_objective_combined') return 'Keyword/Objective Transformation'; if (lastMethod === 'root_problem') return 'Root Problem Transformation'; return lastMethod.replace(/_/g, ' ').replace(/\b\w/g, l => l.toUpperCase()); }; const getBarColor = (modelData, phase) => { if (phase === 'baseline') { return 'from-blue-500 to-blue-600'; } else if (phase === 'additive_synthesis' && currentMethodIndex > 0) { return 'from-green-500 to-green-600'; } else { return 'from-blue-500 to-blue-600'; } }; return (
{/* Header */}

LLM Attack Success Rate with Transformation Methods

SafetyBench Aug 2025 - Real ASR Calculations

{/* Methodology Note */}
⚠️

Methodology Note

Additive Visualization: This chart shows cumulative impact by progressively adding each transformation method's individual attack success rate. Values >100% represent transformation of multiple conversations off one failed, human seed conversation. Results are based on HarmBench Grading methodology and should be interpreted as relative performance indicators.

{/* Chart Container - Scrollable Box */}
{benchmarkData.map((modelData, index) => { const currentValue = getCurrentValue(modelData, currentPhase); const baselineValue = modelData.baseline; const maxValue = 90; const barWidth = (currentValue / maxValue) * 100; const currentMethod = getCurrentMethod(modelData, currentPhase); const gain = currentValue - baselineValue; return (
{/* Model Name and Value */}

{modelData.model}

{currentMethod}

{currentValue.toFixed(1)}% {gain > 0 && (
+{gain.toFixed(1)} points
)}
{/* Progress Bar */}
{currentValue > 8 ? `${currentValue.toFixed(1)}%` : ''}
); })}
{/* Legend */}
Human Baseline
With Transformation Methods
{/* Footer */}

Top performers: Grok 4 (85.15%), Deepseek R1-0528 (83.76%), Llama 3.1 405B (80.75%)

Shows highest ASR achieved when combining human attempts with transformation methods

); }; export default BenchmarkChart;