eromang/eu-cyber-llm-benchmark-responses

Dataset

1

stars

3

commits

1

linked in READMEs

Mar 28, 2026

updated

benchmark
cybersecurity
evaluation
geopolitical-bias
model-comparison
threat-assessment
Browse cluster: LLM and Vision-Language Model Evaluation

README

EU Cyber Threat Landscape LLM Benchmark — Responses

15,988 LLM-generated cyber threat landscape assessments from 7 models across 3 continents, designed to measure geopolitical bias in attribution framing.

What this is

The complete response corpus from running the EU Cyber LLM Benchmark prompts against 7 locally deployed models via Ollama. Each record contains the full model output, pre-extracted analytical sections, CVE mentions, refusal flags, and latency measurements.

All experiments ran fully offline on Apple Silicon. No cloud APIs were used.

Corpus summary

PhaseRecordsModelsScenariosConditions
phase_11,2003205
phase_214,78874811
Total15,98874811

Model panel

ModelOriginTypeParametersPhase
llama3.1:8b-instruct-q4_K_MMeta (US)Standard8B1 + 2
qwen3:8bAlibaba (China)Reasoning8B1 + 2
deepseek-r1:8bDeepSeek (China)Reasoning8B1 + 2
gemma3n:e4bGoogle (US)Standard~4B2
hoangquan456/qwen3-nothink:8bAlibaba/CommunityStandard8B2
phi4:latestMicrosoft (US)Standard14B2
mistral:7b-instructMistral AI (France/EU)Standard7B2

Schema

FieldTypeDescription
phasestringphase_1 or phase_2
run_idstringUnique run identifier
timestamp_utcstringISO 8601 timestamp
modelstringOllama model name
temperaturefloat0.0 or 0.7
repintReplication number (1 or 2)
prompt_idstringPrompt identifier
pair_idstringPair group for within-scenario comparison
categorystringThematic block (Phase 2 only)
sensitivity_levelstringAttribution condition
sector_focusstringCritical infrastructure sector
prompt_textstringFull prompt text
used_wrapperboolWhether system wrapper was used
okboolWhether generation completed
errorstringError message if failed
latency_msintGeneration time in milliseconds
output_textstringFull model response
output_len_charsintResponse length in characters
flag_refusal_or_avoidancestringrefusal_like, avoidance_like, or empty
flag_reasonstringReason for refusal/avoidance flag
cveslist[string]CVE identifiers mentioned
cve_countintNumber of CVEs mentioned
executive_summarystringExtracted executive summary section
threat_overviewstringExtracted threat overview section
key_threat_vectorsstringExtracted threat vectors section
impact_assessmentstringExtracted impact assessment section
early_warning_indicatorsstringExtracted early warning section
defensive_prioritiesstringExtracted defensive priorities section
confidence_assessmentstringExtracted confidence assessment section

How to use

from datasets import load_dataset

ds = load_dataset("eromang/eu-cyber-llm-benchmark-responses")

# Filter by model
llama = ds["train"].filter(lambda x: x["model"] == "llama3.1:8b-instruct-q4_K_M")
print(f"llama3.1 records: {len(llama)}")

# Compare hedging across attribution conditions for a model
from collections import Counter
conditions = Counter(r["sensitivity_level"] for r in llama)
print(conditions)

Reproduce the analysis

# CVE fixation by model
from collections import Counter
ds = load_dataset("eromang/eu-cyber-llm-benchmark-responses", split="train")

for model in set(ds["model"]):
    subset = ds.filter(lambda x: x["model"] == model)
    cve_records = subset.filter(lambda x: x["cve_count"] > 0)
    all_cves = [c for r in cve_records for c in r["cves"]]
    top = Counter(all_cves).most_common(3)
    print(f"{model}: {len(cve_records)}/{len(subset)} with CVEs, top: {top}")

Key findings

  • Certainty calibration is universal: all 7 models reduce hedging from Suspected to Confirmed attribution
  • No systematic geopolitical bias: Phase 1 China-sensitivity disappears at scale; 0/5 China-vs-rest tests significant for any model
  • CVE fixation is model-specific: deepseek-r1 fixates on PwnKit (73%), llama3.1 on Log4Shell (49%), phi4 on Log4Shell (60%)
  • Chain-of-thought amplifies everything: qwen3 thinking vs nothink pair shows CoT increases calibration, CVE rate, and actor uniformity
  • Refusal patterns are model-specific: llama3.1 has 17.7% US_Confirmed refusal at T=0.7; gemma3n and mistral have near-zero refusals

Citation

@misc{romang2026eucyberbenchmark,
  author       = {Eric Romang},
  title        = {EU Cyber Threat Landscape LLM Benchmark: Geopolitical Bias in Local Language Models},
  year         = {2026},
  url          = {https://github.com/eromang/researches/tree/main/LLM-Benchmark},
  note         = {Research benchmark for evaluating actor-asymmetric framing in local LLMs}
}

License

MIT

Contributors

eromang

3 commits

eromang/eu-cyber-llm-benchmark-responses

Dataset

1

stars

3

commits

1

linked in READMEs

Mar 28, 2026

updated

benchmark
cybersecurity
evaluation
geopolitical-bias
model-comparison
threat-assessment
Browse cluster: LLM and Vision-Language Model Evaluation

README

EU Cyber Threat Landscape LLM Benchmark — Responses

15,988 LLM-generated cyber threat landscape assessments from 7 models across 3 continents, designed to measure geopolitical bias in attribution framing.

What this is

The complete response corpus from running the EU Cyber LLM Benchmark prompts against 7 locally deployed models via Ollama. Each record contains the full model output, pre-extracted analytical sections, CVE mentions, refusal flags, and latency measurements.

All experiments ran fully offline on Apple Silicon. No cloud APIs were used.

Corpus summary

PhaseRecordsModelsScenariosConditions
phase_11,2003205
phase_214,78874811
Total15,98874811

Model panel

ModelOriginTypeParametersPhase
llama3.1:8b-instruct-q4_K_MMeta (US)Standard8B1 + 2
qwen3:8bAlibaba (China)Reasoning8B1 + 2
deepseek-r1:8bDeepSeek (China)Reasoning8B1 + 2
gemma3n:e4bGoogle (US)Standard~4B2
hoangquan456/qwen3-nothink:8bAlibaba/CommunityStandard8B2
phi4:latestMicrosoft (US)Standard14B2
mistral:7b-instructMistral AI (France/EU)Standard7B2

Schema

FieldTypeDescription
phasestringphase_1 or phase_2
run_idstringUnique run identifier
timestamp_utcstringISO 8601 timestamp
modelstringOllama model name
temperaturefloat0.0 or 0.7
repintReplication number (1 or 2)
prompt_idstringPrompt identifier
pair_idstringPair group for within-scenario comparison
categorystringThematic block (Phase 2 only)
sensitivity_levelstringAttribution condition
sector_focusstringCritical infrastructure sector
prompt_textstringFull prompt text
used_wrapperboolWhether system wrapper was used
okboolWhether generation completed
errorstringError message if failed
latency_msintGeneration time in milliseconds
output_textstringFull model response
output_len_charsintResponse length in characters
flag_refusal_or_avoidancestringrefusal_like, avoidance_like, or empty
flag_reasonstringReason for refusal/avoidance flag
cveslist[string]CVE identifiers mentioned
cve_countintNumber of CVEs mentioned
executive_summarystringExtracted executive summary section
threat_overviewstringExtracted threat overview section
key_threat_vectorsstringExtracted threat vectors section
impact_assessmentstringExtracted impact assessment section
early_warning_indicatorsstringExtracted early warning section
defensive_prioritiesstringExtracted defensive priorities section
confidence_assessmentstringExtracted confidence assessment section

How to use

from datasets import load_dataset

ds = load_dataset("eromang/eu-cyber-llm-benchmark-responses")

# Filter by model
llama = ds["train"].filter(lambda x: x["model"] == "llama3.1:8b-instruct-q4_K_M")
print(f"llama3.1 records: {len(llama)}")

# Compare hedging across attribution conditions for a model
from collections import Counter
conditions = Counter(r["sensitivity_level"] for r in llama)
print(conditions)

Reproduce the analysis

# CVE fixation by model
from collections import Counter
ds = load_dataset("eromang/eu-cyber-llm-benchmark-responses", split="train")

for model in set(ds["model"]):
    subset = ds.filter(lambda x: x["model"] == model)
    cve_records = subset.filter(lambda x: x["cve_count"] > 0)
    all_cves = [c for r in cve_records for c in r["cves"]]
    top = Counter(all_cves).most_common(3)
    print(f"{model}: {len(cve_records)}/{len(subset)} with CVEs, top: {top}")

Key findings

  • Certainty calibration is universal: all 7 models reduce hedging from Suspected to Confirmed attribution
  • No systematic geopolitical bias: Phase 1 China-sensitivity disappears at scale; 0/5 China-vs-rest tests significant for any model
  • CVE fixation is model-specific: deepseek-r1 fixates on PwnKit (73%), llama3.1 on Log4Shell (49%), phi4 on Log4Shell (60%)
  • Chain-of-thought amplifies everything: qwen3 thinking vs nothink pair shows CoT increases calibration, CVE rate, and actor uniformity
  • Refusal patterns are model-specific: llama3.1 has 17.7% US_Confirmed refusal at T=0.7; gemma3n and mistral have near-zero refusals

Citation

@misc{romang2026eucyberbenchmark,
  author       = {Eric Romang},
  title        = {EU Cyber Threat Landscape LLM Benchmark: Geopolitical Bias in Local Language Models},
  year         = {2026},
  url          = {https://github.com/eromang/researches/tree/main/LLM-Benchmark},
  note         = {Research benchmark for evaluating actor-asymmetric framing in local LLMs}
}

License

MIT

Contributors

eromang

3 commits