Choosing an LLM¶
Who this is for: anyone about to run Vens and wondering which model to put behind it — and whether the expensive one is worth it. By the end of this page: you have a model to pick for your case, and you know where the cheap ones quietly fail.
Vens makes one LLM call per CVE batch, so the model is a direct cost and quality knob. We benchmarked 12 models on the two things Vens actually does — reading a CVE and using your context — in a companion project, venslabs/vens-benchmark. The full write-up, with confidence intervals and failure cases, is in the paper:
Which LLM Should Score Your CVEs? (PDF)
Recommendation¶
| Your case | Model | Why |
|---|---|---|
| Signed / audited VEX | claude-sonnet-4-6 |
best accuracy, the most reproducible of the accurate models, on the cost/quality Pareto front |
| Best value | gpt-5.4-mini |
top-tier accuracy at a fraction of the cost — but jittery run-to-run, so keep repeats and take the median |
| Throwaway triage | gemini-2.5-flash-lite |
cheapest by far; over-rates and is weak on context — coarse sorting, not final scoring |
| Skip | gpt-5.5, gpt-5.4-nano |
one is Pareto-dominated by sonnet (more expensive, no more accurate), the other is jittery and adds nothing over a rule engine |
Set the model with the provider's *_MODEL env var (OPENAI_MODEL, ANTHROPIC_MODEL, GOOGLE_MODEL, OLLAMA_MODEL) — see vens generate.
Why two things get measured, not one¶
CVE understanding — can the model read a CVE and place its severity? This is nearly a solved, cheap problem: a $0.48 model ties a $4.12 one, and every 2026 model clears 2024's GPT-4.
Context use — does the model actually move the score when your config.yaml changes (exposure, data sensitivity, business criticality, controls)? This is where the money goes, and where cheap models fail silently: some diverge from a non-LLM rule engine by a median of zero — they add nothing over a lookup table while looking fine on the accuracy number.
Local models¶
Not there yet. Every local model tested (via Ollama: llama3.2, qwen2.5:7b, gemma2:9b, deepseek-r1:8b) came out statistically indistinguishable from a constant-guess baseline — their confidence intervals overlap the 1.57 floor — and only the reasoning model engaged the context at all. For context-conditioned scoring today, a small local model is close to not using an LLM.
See the paper for the method, the two showcases (a 10.0 that ends LOW, a 6.5 that ends HIGH), and where the models (and the test itself) break.
See also¶
- Limitations — what Vens deliberately does not do (including reachability)
- Vens vs. alternatives — where Vens fits
vens generate— set the model and run it