Instructions to use hirundo-io/gemma-4-31B-it-hardened with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use hirundo-io/gemma-4-31B-it-hardened with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="hirundo-io/gemma-4-31B-it-hardened") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("hirundo-io/gemma-4-31B-it-hardened") model = AutoModelForMultimodalLM.from_pretrained("hirundo-io/gemma-4-31B-it-hardened", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.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=256) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use hirundo-io/gemma-4-31B-it-hardened with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "hirundo-io/gemma-4-31B-it-hardened" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "hirundo-io/gemma-4-31B-it-hardened", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/hirundo-io/gemma-4-31B-it-hardened
- SGLang
How to use hirundo-io/gemma-4-31B-it-hardened with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "hirundo-io/gemma-4-31B-it-hardened" \ --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": "hirundo-io/gemma-4-31B-it-hardened", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
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 "hirundo-io/gemma-4-31B-it-hardened" \ --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": "hirundo-io/gemma-4-31B-it-hardened", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use hirundo-io/gemma-4-31B-it-hardened with Docker Model Runner:
docker model run hf.co/hirundo-io/gemma-4-31B-it-hardened
Hirundo Gemma 4 31B Hardened
This repository contains a behaviorally hardened derivative of
google/gemma-4-31B-it. Hirundo modified the model
to reduce prompt-injection susceptibility while preserving its general
capabilities.
This is a model-level intervention. It changes the checkpoint itself rather than adding a runtime prompt, output filter, or external guardrail.
About Hirundo
Hirundo develops machine-unlearning technology for removing unwanted data and reducing unwanted behavior in trained AI models. Hirundo's behavioral-unlearning workflow identifies a target behavior, modifies the model, and evaluates the resulting checkpoint on both behavior-specific and general-capability benchmarks.
Learn more:
What Hirundo changed
The target behavior for this checkpoint was prompt injection: cases where adversarial or untrusted instructions cause the model to disregard its intended task or reveal protected context.
The checkpoint was produced in a Hirundo behavioral-unlearning run with the following configuration:
| Field | Value |
|---|---|
| Base model | google/gemma-4-31B-it |
| Target behavior | Security (prompt injection) |
| Unlearning aggressiveness | 0.7 |
Evaluation summary
Hirundo compared the hardened checkpoint with the unmodified base checkpoint under the same evaluation setup. For the security evaluations below, lower scores indicate fewer successful attacks or leaks and therefore better performance. Utility results are reported as benchmark scores, where higher is better.
Headline result: PurpleLlama prompt injection
On Meta's
PurpleLlama textual prompt-injection benchmark,
attack success rate decreased from 12.35% to 3.98%.
| Benchmark | Base model ASR | Hirundo model ASR | Relative reduction |
|---|---|---|---|
| PurpleLlama prompt injection | 12.35% | 3.98% | 67.74% |
General-capability evaluation
The hardened model was evaluated on 6 general-capability benchmarks.
| Benchmark | Change vs. base model |
|---|---|
| AIME25 | 0.00 pp |
| GPQA | +0.32 pp |
| IFBENCH | +0.34 pp |
| LiveCodeBench | +1.15 pp |
| MMLU-Pro | −0.04 pp |
| SciCode | +0.16 pp |
Across the six tasks, the unweighted mean change was +0.32 percentage points. The largest measured decrease was 0.04 percentage points on MMLU-Pro.
The means are descriptive rather than standardized aggregate scores: the benchmarks measure different capabilities and may use different scoring procedures.
Intended use
This checkpoint is intended for:
- research on model-level prompt-injection mitigation;
- comparative security and robustness evaluation;
- development of applications that require a model with lower measured prompt-injection susceptibility than the upstream checkpoint; and
- further evaluation or fine-tuning by teams that understand the base model and the security requirements of their deployment.
The model should be evaluated in the application's real prompt structure, tooling environment, retrieval pipeline, and threat model before deployment.
Loading with Transformers
from transformers import AutoModelForMultimodalLM, AutoProcessor
model_id = "hirundo-io/gemma-4-31B-it-hardened"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForMultimodalLM.from_pretrained(
model_id, dtype="auto", device_map="auto"
)
messages = [{"role": "user", "content": "Explain the difference between encryption and hashing."}]
inputs = processor.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=512)
print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))
Consult the
google/gemma-4-31B-it model card
for upstream architecture, supported modalities and languages, context length,
generation parameters, and base-model considerations.
License
This derivative retains the license of the upstream model. See the repository's
LICENSE file and the base-model repository
for details.
Citation
If you use this checkpoint, cite the upstream model and identify the checkpoint as Hirundo's prompt-injection-hardened derivative:
@misc{hirundo_gemma_4_31b_hardened_2026,
title = {Hirundo Gemma 4 31B Hardened},
author = {{Hirundo}},
year = {2026},
howpublished = {\url{https://huggingface.co/hirundo-io/gemma-4-31B-it-hardened}},
note = {Prompt-injection-hardened derivative of google/gemma-4-31B-it}
}
- Downloads last month
- 5