CVE-Factory
Collection
3 items • Updated
How to use Luoberta/Abacus-cve with Transformers:
# Use a pipeline as a high-level helper
from transformers import pipeline
pipe = pipeline("text-generation", model="Luoberta/Abacus-cve")
messages = [
{"role": "user", "content": "Who are you?"},
]
pipe(messages) # Load model directly
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("Luoberta/Abacus-cve")
model = AutoModelForCausalLM.from_pretrained("Luoberta/Abacus-cve")
messages = [
{"role": "user", "content": "Who are you?"},
]
inputs = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
outputs = model.generate(**inputs, max_new_tokens=40)
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:]))How to use Luoberta/Abacus-cve with vLLM:
# Install vLLM from pip:
pip install vllm
# Start the vLLM server:
vllm serve "Luoberta/Abacus-cve"
# Call the server using curl (OpenAI-compatible API):
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "Luoberta/Abacus-cve",
"messages": [
{
"role": "user",
"content": "What is the capital of France?"
}
]
}'docker model run hf.co/Luoberta/Abacus-cve
How to use Luoberta/Abacus-cve with SGLang:
# Install SGLang from pip:
pip install sglang
# Start the SGLang server:
python3 -m sglang.launch_server \
--model-path "Luoberta/Abacus-cve" \
--host 0.0.0.0 \
--port 30000
# Call the server using curl (OpenAI-compatible API):
curl -X POST "http://localhost:30000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "Luoberta/Abacus-cve",
"messages": [
{
"role": "user",
"content": "What is the capital of France?"
}
]
}'docker run --gpus all \
--shm-size 32g \
-p 30000:30000 \
-v ~/.cache/huggingface:/root/.cache/huggingface \
--env "HF_TOKEN=<secret>" \
--ipc=host \
lmsysorg/sglang:latest \
python3 -m sglang.launch_server \
--model-path "Luoberta/Abacus-cve" \
--host 0.0.0.0 \
--port 30000
# Call the server using curl (OpenAI-compatible API):
curl -X POST "http://localhost:30000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "Luoberta/Abacus-cve",
"messages": [
{
"role": "user",
"content": "What is the capital of France?"
}
]
}'How to use Luoberta/Abacus-cve with Docker Model Runner:
docker model run hf.co/Luoberta/Abacus-cve
Abacus-cve (Live Agent Coder) is a 32B code model fine-tuned on CVE-Factory agent traces for security vulnerability fixing tasks.
Abacus-cve is based on Qwen3-32B and fine-tuned using 4,078 distilled agent traces from ~900 CVE reproduction tasks. The traces were generated using Claude Opus 4.5 with a Mini SWE-Agent harness through the CVE-Factory pipeline.
Fine-tuning yields dramatic improvements across security benchmarks:
| Model | LiveCVEBench | PatchEval | Terminal-Bench | Avg |
|---|---|---|---|---|
| Qwen3-32B (base) | 5.29 | 5.66 | 12.50 | 7.82 |
| Abacus-cve (Ours) | 35.79 | 23.58 | 28.75 | 29.37 |
| Qwen3-Coder-30B | 10.58 | 9.91 | 13.75 | 11.41 |
| Qwen3-Coder-480B | 19.58 | 19.34 | 36.25 | 25.06 |
| MiniMax-M2 | 24.87 | 19.34 | 37.50 | 27.24 |
| Claude Sonnet 4 | 20.11 | 22.64 | 33.75 | 25.50 |
| Claude Sonnet 4.5 | 34.39 | 28.77 | 45.00 | 36.05 |
| Claude Opus 4.5 | 41.27 | 32.08 | 48.75 | 40.70 |
Key findings:
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("Luoberta/Abacus-cve")
tokenizer = AutoTokenizer.from_pretrained("Luoberta/Abacus-cve")
@misc{luo2026cvefactory,
title={CVE-Factory: Scaling Expert-Level Agentic Tasks for Code Security Vulnerability},
author={Xianzhen Luo and Jingyuan Zhang and Shiqi Zhou and Rain Huang and Chuan Xiao and Qingfu Zhu and Zhiyuan Ma and Xing Yue and Yang Yue and Wencong Zeng and Wanxiang Che},
year={2026},
eprint={2602.03012},
archivePrefix={arXiv},
primaryClass={cs.CR},
url={https://arxiv.org/abs/2602.03012}
}
Base model
Qwen/Qwen3-32B