Jazzmine Security
Production-ready security and moderation toolkit for AI applications
Jazzmine Security provides a comprehensive suite of tools for protecting AI applications from malicious inputs, toxic outputs, and unsafe content. Built with performance in mind, it combines Python flexibility with Rust speed through optimized bindings.
Features
Input Moderation
- Jailbreak Detection: Identify and block prompt injection attacks
- Toxic Content Detection: Multi-class toxicity classification with SHAP explainability
- Batch Processing: High-throughput classification with GPU acceleration
- HuggingFace Integration: Load pre-trained models directly from the Hub
Output Moderation
- Response Validation: Ensure AI-generated content meets safety guidelines
- Chunk-based Analysis: Handle long-form content with intelligent chunking
- Confidence Scoring: Get detailed confidence metrics for each prediction
Content Sanitization
- PDF Sanitization: Remove JavaScript, embedded files, and malicious content
- CSV Sanitization: Prevent formula injection and XSS attacks
- HTML Sanitization: Strip dangerous tags and attributes while preserving content
Performance
- Rust-Powered: Critical text processing operations accelerated with Rust
- GPU Support: Automatic CUDA acceleration when available
- Async Support: Non-blocking operations for high-concurrency environments
Installation
From PyPI (Recommended)
pip install jazzmine-security
With GPU Support
pip install jazzmine-security torch --index-url https://download.pytorch.org/whl/cu121
From Source
git clone https://github.com/yourorg/jazzmine-security.git
cd jazzmine-security
pip install .
Quick Start
Input Moderation
from jazzmine.security import JazzmineInputModerator
from jazzmine.logging import ConsoleLogger
# Initialize with HuggingFace model
logger = ConsoleLogger()
moderator = JazzmineInputModerator(
"nourmedini1/jazzmine-input-safeguard-v2",
logger=logger
)
# Classify single input
text = "How can I hack into a system?"
label, confidence = moderator.classify(text)
if label == "LABEL_1": # Toxic/Jailbreak detected
print(f"Warning: Blocked - Confidence {confidence:.2%}")
else:
print(f"Safe: Confidence {confidence:.2%}")
# Batch processing
requests = [
{"text": "Tell me a joke"},
{"text": "How to bypass security"},
{"text": "What's the weather like?"}
]
results = moderator.classify_batch(requests, batch_size=32)
Output Moderation
from jazzmine.security import JazzmineOutputModerator
# Initialize output validator
output_mod = JazzmineOutputModerator(
"nourmedini1/jazzmine-response-validator-v2"
)
# Validate AI response
ai_response = "Here's how to create a secure password..."
label, confidence = output_mod.classify(ai_response)
if label == "LABEL_1": # Unsafe content
print("Response blocked due to safety concerns")
else:
print("Response approved")
Content Sanitization
from jazzmine.security import (
JazzminePDFSanitizer,
JazzmineCSVSanitizer,
JazzmineHTMLSanitizer
)
# Sanitize PDF
pdf_sanitizer = JazzminePDFSanitizer()
safe_pdf = pdf_sanitizer.sanitize("document.pdf")
# Sanitize CSV (prevent formula injection)
csv_sanitizer = JazzmineCSVSanitizer()
safe_csv = csv_sanitizer.sanitize("data.csv")
# Sanitize HTML
html_sanitizer = JazzmineHTMLSanitizer()
safe_html = html_sanitizer.sanitize("<script>alert('xss')</script><p>Safe content</p>")
# Output: "<p>Safe content</p>"
Toxicity Detection with Explainability
from jazzmine.security.toxic_content_detector import JazzmineToxicityDetector
# Initialize detector
detector = JazzmineToxicityDetector()
# Train on your data
detector.train(
csv_path="training_data.csv",
text_column="text",
label_column="is_toxic"
)
# Make predictions
text = "This is a test message"
prediction = detector.predict(text)
print(f"Toxic: {prediction['is_toxic']}")
print(f"Confidence: {prediction['confidence']:.2%}")
# Get SHAP explanations
explanation = detector.explain(text, num_samples=100)
print(f"Top contributing features: {explanation['top_features']}")
Architecture
Jazzmine Security is built with a hybrid Python-Rust architecture:
- Python Layer: High-level APIs, model management, ML workflows
- Rust Layer: Text normalization, TF-IDF extraction, semantic analysis
- HuggingFace Integration: Seamless model loading and caching
- PyO3 Bindings: Zero-copy data transfer between Python and Rust
Models
Pre-trained Models on HuggingFace
-
Input Safeguard:
nourmedini1/jazzmine-input-safeguard-v2- Detects jailbreaks, prompt injections, and malicious inputs
- Fine-tuned on diverse attack patterns
-
Response Validator:
nourmedini1/jazzmine-response-validator-v2- Validates AI-generated content for safety
- Identifies unsafe, biased, or harmful outputs
Custom Models
You can train and use your own models:
from jazzmine.security.toxic_content_detector import JazzmineToxicityDetector
detector = JazzmineToxicityDetector()
detector.train("your_data.csv", text_column="text", label_column="label")
detector.save("my_custom_model")
# Later use
detector = JazzmineToxicityDetector()
detector.load("my_custom_model")
Configuration
Logging Integration
from jazzmine.logging import BaseLogger, RequestContext
class MyLogger(BaseLogger):
def info(self, message: str, **kwargs):
print(f"[INFO] {message}: {kwargs}")
moderator = JazzmineInputModerator(
"nourmedini1/jazzmine-input-safeguard-v2",
logger=MyLogger()
)
GPU Configuration
import torch
# Check GPU availability
if torch.cuda.is_available():
print(f"Using GPU: {torch.cuda.get_device_name(0)}")
else:
print("Using CPU")
# Models automatically use GPU when available
Chunking Configuration
moderator = JazzmineInputModerator("model-name")
# Adjust chunk size for long texts
moderator.chunk_size = 512 # tokens
moderator.overlap = 50 # token overlap between chunks
Testing
# Run all tests
pytest tests/
# Run with coverage
pytest --cov=jazzmine.security tests/
# Run specific test file
pytest tests/test_input_moderator.py
Performance
Benchmark on NVIDIA RTX 3090:
| Operation | Throughput | Latency (p50) | Latency (p99) |
|---|---|---|---|
| Input Moderation (batch=32) | 450 texts/sec | 71ms | 120ms |
| Output Validation (batch=32) | 420 texts/sec | 76ms | 130ms |
| Toxicity Detection | 800 texts/sec | 1.2ms | 5ms |
| PDF Sanitization | 15 docs/sec | 65ms | 150ms |
Contributing
We welcome contributions! Please see our Contributing Guide for details.
# Setup development environment
git clone https://github.com/yourorg/jazzmine-security.git
cd jazzmine-security
pip install -e ".[dev]"
# Build Rust components
cd bindings
maturin develop --release
# Run tests
pytest tests/
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Built on Transformers by HuggingFace
- Rust bindings powered by PyO3
- Explainability via SHAP
Support
- Documentation: https://jazzmine-security.readthedocs.io
- Issues: GitHub Issues
- Email: mohamednour.medini@etudiant-isi.utm.tn
Roadmap
- Multi-language support (French, Arabic, Spanish)
- Real-time monitoring dashboard
- Additional sanitizers (JSON, XML, Markdown)
- Model distillation for edge deployment
- Integration with popular LLM frameworks (LangChain, LlamaIndex)
Made with care by the Jazzmine Team
Metadata
Release files for jazzmine-security 0.1.12
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jazzmine_security-0.1.12.tar.gz | 71.3 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| jazzmine_security-0.1.12-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | PyPy 3.11 | PyPy 3.11 7.3 | Linux glibc 2.17+ x86-64 | Details |
| jazzmine_security-0.1.12-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | PyPy 3.10 | PyPy 3.10 7.3 | Linux glibc 2.17+ ARM64 | Details |
| jazzmine_security-0.1.12-cp38-abi3-win_amd64.whl | CPython 3.8 | abi3 | Windows x86-64 | Details |
| jazzmine_security-0.1.12-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.8 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| jazzmine_security-0.1.12-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.8 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| jazzmine_security-0.1.12-cp38-abi3-macosx_11_0_arm64.whl | CPython 3.8 | abi3 | macOS 11.0+ ARM64 | Details |
| jazzmine_security-0.1.12-cp38-abi3-macosx_10_12_x86_64.whl | CPython 3.8 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 11.0 MB
Release files / jazzmine_security-0.1.12.tar.gz
| Download URL | jazzmine_security-0.1.12.tar.gz |
|---|---|
| Size | 71.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1562d62dee5b028e78034938daff0b0405c230c542856d6acf4836dd4b2f887b
|
|
BLAKE2b-256 checksum How to use checksums |
254d9a7da43ada35290475e996c8838c586919292435c3cf80834911271f6e5e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.12.6
|
Release files / jazzmine_security-0.1.12-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | jazzmine_security-0.1.12-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | Linux glibc 2.17+ x86-64 PyPy 3.11 PyPy 3.11 7.3 |
|
SHA-256 checksum How to use checksums |
0203ee758267edfbde27962b2f333dc78b478d64d9391b6c2e2603b2515af40d
|
|
BLAKE2b-256 checksum How to use checksums |
a63092695efb07688aa8c800f91620d4164bbe57edba46229980e783f63d340c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.12.6
|
Release files / jazzmine_security-0.1.12-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | jazzmine_security-0.1.12-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | Linux glibc 2.17+ ARM64 PyPy 3.10 PyPy 3.10 7.3 |
|
SHA-256 checksum How to use checksums |
44da44799d68e0bae61bc3f1806b17a4520efbb98c34137e0c5cd014c2b5c9bd
|
|
BLAKE2b-256 checksum How to use checksums |
efb42fdaa6b8d22a9a0ae36a8b4beb2e496c55adb58d2cd5be65c8d8510a5b82
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.12.6
|
Release files / jazzmine_security-0.1.12-cp38-abi3-win_amd64.whl
| Download URL | jazzmine_security-0.1.12-cp38-abi3-win_amd64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.8 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
214719801f257316360e6d9ae3ab5a307808a85a0665689264cf304a82dbe203
|
|
BLAKE2b-256 checksum How to use checksums |
1bd7c8440aeaf69c58294acb21a3e000f64a39d500feb76b84bcf87216b14d3f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.12.6
|
Release files / jazzmine_security-0.1.12-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | jazzmine_security-0.1.12-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.8 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
fbcaf6fd26c034ee00b03f7649ece6b8091f379dd293039a0eb039975f3438d1
|
|
BLAKE2b-256 checksum How to use checksums |
36f8aeb74a4af023a1d3da7aa1d442d213a2d589f0060d51d016988dd17e4e40
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.12.6
|
Release files / jazzmine_security-0.1.12-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | jazzmine_security-0.1.12-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.8 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
9020af217dae6ac8ed7e501cf2ced0751a2766e4d0499a6f943b47f346f401ba
|
|
BLAKE2b-256 checksum How to use checksums |
9cbdae89e859d81ecd3a5a1efb7fb9a2c3d9ff91076fc657073db6dbf75d6833
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.12.6
|
Release files / jazzmine_security-0.1.12-cp38-abi3-macosx_11_0_arm64.whl
| Download URL | jazzmine_security-0.1.12-cp38-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.8 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
92cb64fb37290a7d8d2a8a2f2d95f74eb6161ada86f9c2e914b168244e8b926b
|
|
BLAKE2b-256 checksum How to use checksums |
362ba3c7729a04c812b756c0eddedc8b60edba5275308409f5f4d86a066865be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.12.6
|
Release files / jazzmine_security-0.1.12-cp38-abi3-macosx_10_12_x86_64.whl
| Download URL | jazzmine_security-0.1.12-cp38-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.8 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
1e6c1b4ba9ba8e3e57b3baea82ddc226769e3bca0a48b829a83fecad72c5379b
|
|
BLAKE2b-256 checksum How to use checksums |
63bed25f23e990da8ce00224ce1f8f6bfc4e8500226a378647d74dbfb999f82d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.12.6
|