Skip to main content

Jazzmine Security

Production-ready security and moderation toolkit for AI applications

Python 3.10+ PyPI version License: MIT

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

Support

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)

Source distribution for jazzmine-security 0.1.12
File Size Uploaded
jazzmine_security-0.1.12.tar.gz 71.3 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for jazzmine-security 0.1.12
File
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

Release history Release notifications | RSS feed

This release

0.1.12 This release

8 release files

0.1.11

8 release files

0.1.10

8 release files

0.1.9

8 release files

0.1.7

2 release files

0.1.6

9 release files

0.1.5

8 release files

0.1.4

8 release files

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page