zen-guard-stream / README.md
zeekay's picture
Update model card: add zen/zenlm tags, fix branding
9f708c3 verified
---
license: apache-2.0
tags:
- zen
- zenlm
- safety
- moderation
- content-classification
pipeline_tag: text-classification
library_name: transformers
---
<p align="center">
<img src="https://zenlm.org/logo.png" width="200"/>
</p>
<h1 align="center">Zen Guard Stream</h1>
<p align="center">
<strong>4B Real-Time Streaming Safety Moderation</strong>
</p>
<p align="center">
🌐 <a href="https://zenlm.org">Website</a>
🤗 <a href="https://huggingface.co/zenlm/zen-guard-stream">Hugging Face</a>
📄 <a href="https://zenlm.org/papers/zen-guard.pdf">Paper</a>
📖 <a href="https://docs.zenlm.org">Documentation</a>
</p>
---
## Introduction
**Zen Guard Stream** is a 4B parameter token-level streaming classifier that evaluates each generated token in real time. It's optimized for real-time content moderation during LLM response generation.
## Features
-**5ms/token Latency**: Ultra-fast real-time classification
- 🔄 **Token-Level Analysis**: Continuous stream monitoring
- 🌍 **119 Languages**: Multilingual support
- 🚦 **Three-Tier Classification**: Safe, Controversial, Unsafe
- 🛡️ **Early Detection**: Stop unsafe content mid-generation
## How It Works
```
User Prompt → Zen Guard Stream (safety check)
If Safe, continue
LLM Response → Token by Token → Real-time Classification
Immediate intervention if unsafe
```
## Model Specifications
| Specification | Value |
|---------------|-------|
| Parameters | 4B |
| Type | Streaming Classifier |
| Base Model | Zen Guard |
| Context Length | 32,768 tokens |
| Languages | 119 |
| Latency | 5ms/token |
| VRAM (FP16) | 8GB |
| VRAM (INT8) | 4GB |
## Quick Start
```python
import torch
from transformers import AutoModel, AutoTokenizer
model_path = "zenlm/zen-guard-stream"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModel.from_pretrained(
model_path,
device_map="auto",
torch_dtype=torch.bfloat16,
trust_remote_code=True,
).eval()
# Simulate streaming moderation
user_message = "Hello, how are you?"
assistant_message = "I'm doing well, thank you for asking!"
messages = [
{"role": "user", "content": user_message},
{"role": "assistant", "content": assistant_message}
]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=False)
inputs = tokenizer(text, return_tensors="pt")
token_ids = inputs.input_ids[0]
# Initialize stream state
stream_state = None
# Process tokens one by one (simulating streaming)
for i, token_id in enumerate(token_ids):
result, stream_state = model.stream_moderate_from_ids(
token_id,
role="assistant" if i > len(user_message) else "user",
stream_state=stream_state
)
token_str = tokenizer.decode([token_id])
risk = result['risk_level'][-1]
print(f"Token: {repr(token_str)} → Risk: {risk}")
model.close_stream(stream_state)
```
## Integration Pattern
### With Streaming LLM
```python
from transformers import AutoModel, AutoTokenizer, TextIteratorStreamer
import threading
# Load both models
llm = AutoModelForCausalLM.from_pretrained("zenlm/zen-next")
guard = AutoModel.from_pretrained("zenlm/zen-guard-stream", trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained("zenlm/zen-next")
def safe_generate(prompt):
# Initial prompt check
result, state = guard.stream_moderate_from_ids(
tokenizer.encode(prompt, return_tensors="pt")[0],
role="user",
stream_state=None
)
if result['risk_level'][-1] != "Safe":
return "I cannot process this request."
# Stream generation with real-time moderation
streamer = TextIteratorStreamer(tokenizer)
inputs = tokenizer(prompt, return_tensors="pt")
thread = threading.Thread(target=llm.generate, kwargs={**inputs, "streamer": streamer})
thread.start()
output = []
for token in streamer:
token_id = tokenizer.encode(token, add_special_tokens=False)
if token_id:
result, state = guard.stream_moderate_from_ids(
token_id[0], role="assistant", stream_state=state
)
if result['risk_level'][-1] == "Unsafe":
thread.join()
return "".join(output) + " [Content moderated]"
output.append(token)
guard.close_stream(state)
return "".join(output)
```
## Performance
| Metric | Zen Guard Stream |
|--------|------------------|
| Accuracy | 95.2% |
| F1 Score | 93.1% |
| False Positive | 2.8% |
| Latency | 5ms/token |
## Related Models
- [zen-guard](https://huggingface.co/zenlm/zen-guard) - 4B base model
- [zen-guard-gen](https://huggingface.co/zenlm/zen-guard-gen) - 8B generative model
## License
Apache 2.0
## Citation
```bibtex
@misc{zenguardstream2025,
title={Zen Guard Stream: Real-Time Token-Level Safety Moderation},
author={Hanzo AI and Zoo Labs Foundation},
year={2025},
publisher={HuggingFace},
howpublished={\url{https://huggingface.co/zenlm/zen-guard-stream}}
}
```
tags:
- zen
- zenlm
---
<p align="center">
<strong>Zen AI</strong> - Clarity Through Intelligence<br>
<a href="https://zenlm.org">zenlm.org</a>
</p>