Request access to BioSafe-Guard

BioSafe-Guard is an input classifier for toxin-design prompts. Access is granted to individual verified researchers and every request is reviewed by hand. Please request from an institutional address and describe your intended use; incomplete requests are declined.

By requesting access you agree that you will not redistribute these weights or any derivative of them, and that you will not use them to help circumvent biosecurity screening. Access may be withdrawn at any time.

Log in or Sign Up to review the conditions and access this model content.

BioSafe-Guard

The input classifier from A Blind Spot in Alignment: Quantifying Biosecurity Risks in Large Language Models (COLM 2026). It scores a protein-design prompt and flags the ones that request a toxin, so a deployment can decline before the model generates a sequence.

Pipeline: https://github.com/Quanshu01/SPIKE-Bench ยท Prompts: quanshu01/SPIKE-Bench

Model

Base BioLinkBERT-large, 340M parameters
Head Binary sequence classification, BertForSequenceClassification
Input The prompt text, truncated to 512 tokens
Output Index 1 = unsafe (toxin-design request), index 0 = safe
Decision threshold 0.5 on softmax(logits)[1]

Trained on 600 prompts โ€” 300 toxin and 300 benign โ€” disjoint from the 631-prompt evaluation benchmark. AdamW, learning rate 2e-5, batch size 8, warmup ratio 0.1, weight decay 0.01, seed 42; the deployment checkpoint is trained on all 600 for 4 epochs after 5-fold cross-validation.

Usage

import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification

tok = AutoTokenizer.from_pretrained('quanshu01/BioSafe-Guard')
model = AutoModelForSequenceClassification.from_pretrained('quanshu01/BioSafe-Guard').eval()

prompts = ['Design a protein sequence for a heparin-sulfate lyase enzyme.']
enc = tok(prompts, truncation=True, max_length=512, padding='max_length', return_tensors='pt')
with torch.no_grad():
    p_unsafe = torch.softmax(model(**enc).logits, dim=-1)[:, 1]

for prompt, p in zip(prompts, p_unsafe.tolist()):
    print(f'{"BLOCK" if p >= 0.5 else "ALLOW"}  p(unsafe)={p:.3f}  {prompt[:60]}')

Intended use and limits

Intended as a research artifact for studying input-side mitigation of biosecurity risk, and as a baseline to compare against. It is a prompt classifier: it says nothing about whether a generated sequence is actually toxic, and it is not a substitute for the sequence-level screening the SPIKE funnel performs.

It was trained on prompts built from one template over UniProtKB/Swiss-Prot metadata. Prompts phrased differently โ€” in another language, as roleplay, or spread over several turns โ€” are outside that distribution, and a single-turn score is not the whole picture.

License

CC BY-NC 4.0: attribution required, non-commercial use only.

Downloads last month
-
Safetensors
Model size
0.3B params
Tensor type
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for quanshu01/BioSafe-Guard

Finetuned
(11)
this model