Als Entwickler, der täglich mit benutzergenerierten Inhalten arbeitet, stand ich vor der Herausforderung, tausende Bilder automatisch auf unerlaubte Inhalte zu prüfen. Nach vielen Experimenten mit verschiedenen Lösungen habe ich einen effektiven Workflow entwickelt, den ich in diesem Tutorial mit Ihnen teilen möchte.
Was ist AI-Bildinhaltsmoderation?
Unter Bildinhaltsmoderation versteht man die automatische Erkennung von unangemessenen oder policy-verstoßenden Inhalten in Bildern. Dies umfasst:
- Gewalt und Blut – Brutale Szenen, Waffen, Unfälle
- Sexuelle Inhalte – Nacktheit, pornografisches Material
- Hassrede – Diskriminierende Symbole, Beleidigungen
- Illegale Aktivitäten – Drogen, Betrug, Gefahrgut
- Textanalyse – Erkennung von Schimpfwörtern in Bildtexten
Warum multimodale Modelle ideal geeignet sind
Traditionelle Bildmoderation nutzte nur Bildklassifikatoren. Multimodale Modelle wie GPT-4.1 mit Vision oder Claude 3.5 Sonnet verstehen sowohl Bildinhalte als auch Textkontext gleichzeitig. Das bedeutet:
- Kontextreiche Entscheidungen statt einfacher Pixelanalyse
- Erkennung subtiler Verstöße (z.B. Memes mit Hassrede)
- Kombinierte Bild+Text-Analyse in einem Durchgang
Voraussetzungen
- Python 3.8 oder höher
- HolySheep AI API-Key (Jetzt registrieren)
- requests-Bibliothek
pip install requests pillow
Schritt 1: Grundlegende API-Verbindung herstellen
Zunächst richten wir die grundlegende Verbindung zur HolySheep API ein. Die Basis-URL ist https://api.holysheep.ai/v1.
import requests
import json
from typing import Dict, List, Optional
from enum import Enum
============================================
KONFIGURATION
============================================
HOLYSHEEP_API_KEY = "YOUR_HOLYSHEEP_API_KEY"
BASE_URL = "https://api.holysheep.ai/v1"
class ContentCategory(Enum):
"""Definiert die zu prüfenden Inhaltskategorien"""
SEXUAL = "sexual_content"
VIOLENCE = "violence"
HATE = "hate_speech"
ILLEGAL = "illegal_content"
SELF_HARM = "self_harm"
SPAM = "spam"
class ModerationResult:
def __init__(self, category: str, confidence: float, flagged: bool, reason: str):
self.category = category
self.confidence = confidence
self.flagged = flagged
self.reason = reason
def __repr__(self):
status = "🚫 VERSTOSS" if self.flagged else "✓ OK"
return f"{status} | {self.category}: {self.confidence:.2%} - {self.reason}"
def check_api_connection() -> bool:
"""Testet die API-Verbindung"""
headers = {
"Authorization": f"Bearer {HOLYSHEEP_API_KEY}",
"Content-Type": "application/json"
}
try:
response = requests.get(
f"{BASE_URL}/models",
headers=headers,
timeout=10
)
return response.status_code == 200
except Exception as e:
print(f"Verbindungsfehler: {e}")
return False
Verbindung testen
if check_api_connection():
print("✓ API-Verbindung erfolgreich!")
else:
print("✗ Bitte API-Key überprüfen")
Schritt 2: Bildmoderation mit Vision-Modellen
Jetzt kommt der spannende Teil – die eigentliche Bildanalyse. Ich nutze GPT-4.1 Vision, das hervorragende Ergebnisse bei der Inhaltserkennung liefert.
import base64
from pathlib import Path
def encode_image_to_base64(image_path: str) -> str:
"""Konvertiert ein Bild in Base64 für die API-Übertragung"""
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
def moderate_image(image_path: str, strictness: str = "balanced") -> Dict:
"""
Analysiert ein Bild auf policy-verstoßende Inhalte.
Args:
image_path: Pfad zum Bild
strictness: 'strict', 'balanced', 'permissive'
"""
# Bild in Base64 konvertieren
image_base64 = encode_image_to_base64(image_path)
# System-Prompt für Moderation
moderation_prompt = f"""Analysiere dieses Bild strikt auf folgende Verstöße:
1. SEXUAL: Nacktheit, pornografische Inhalte, sexuelle Handlungen
2. VIOLENCE: Gewalt, Blut, Waffen, Brutalität
3. HATE: Hasssymbole, diskriminierende Inhalte, NS-Symbole
4. ILLEGAL: Drogen, illegale Aktivitäten, Betrug
5. SELF_HARM: Selbstverletzung, Suizid
6. SPAM: Irreführende Inhalte, Werbebetrug
Gib JSON zurück im Format:
{{
"flagged": true/false,
"categories": [
{{"name": "KATEGORIE", "confidence": 0.0-1.0, "reason": "Erklärung"}}
],
"overall_confidence": 0.0-1.0,
"recommended_action": "block/warn/allow"
}}
"""
headers = {
"Authorization": f"Bearer {HOLYSHEEP_API_KEY}",
"Content-Type": "application/json"
}
payload = {
"model": "gpt-4.1", # Vision-Modell für Bildanalyse
"messages": [
{
"role": "system",
"content": moderation_prompt
},
{
"role": "user",
"content