Moderations-API von Mistral
Auf dieser Seite
Aktualisiert am 3. November 2026. Das vorherige Antwortbeispiel enthielt nicht existierende Schlüssel (
hate,violence,unpredictable); es spiegelt nun die elf Kategorien vonmistral-moderation-2603wider. Das vorherige End-to-End-Pipeline-Beispiel verwendete ein erfundenes Guardrail-Format (enabled) und erkannte Blockaden durch die Suche nach „403” in der Fehlermeldung; es folgt nun dem offiziellen Format und prüfte.status_code. Die Modellpräsentation entspricht dem offiziellen Datenblatt, und die Lektion stellt Shieldstral 1.0 vor, das Moderationsmodell, das seit August 2026 in öffentlicher Vorschau verfügbar ist. Der Code wurde gegen die SDK-Typen vonmistralaiVersion 3.7.0 verifiziert. Quellen: Moderation & Guardrailing · Mistral Moderation 2 · Shieldstral 1.0.
Inhalt nach der Generierung klassifizieren
Guardrails filtern Eingabe-Prompts. Was ist jedoch mit Inhalten, die vom Modell generiert werden? Ein harmloser Prompt kann eine problematische Antwort erzeugen: Eine Frage eines Gymnasiasten über den Zweiten Weltkrieg könnte eine Beschreibung liefern, die Sie ohne Einschränkungen nicht anzeigen möchten. Dies ist die Aufgabe der Moderations-API: Inhalte nachträglich zu analysieren und Risikobewertungen nach Kategorien zuzuweisen.
Die Moderations-API ist Ihre zweite Verteidigungslinie – sie ergänzt Guardrails, um eine vollständige Sicherheitsarchitektur zu schaffen, mit einem wesentlichen Unterschied: Sie blockiert nichts eigenständig; sie informiert Sie.
Das Modell Mistral Moderation 2
Das dedizierte Moderationsmodell heißt mistral-moderation-2603 (Mistral Moderation 2, Version März 2026). Es ist ein spezialisierter Klassifikator, der sich von Generierungsmodellen unterscheidet: Es schreibt keinen Text, sondern weist Bewertungen zu. Sein offizielles Datenblatt hebt ein Kontextfenster von 128.000 Tokens, Jailbreak-Erkennung und eine starke Leistung bei komplexen mehrsprachigen Inhalten hervor, einschließlich langer Unterhaltungen. Es ersetzt mistral-moderation-2411, der am 31. März 2026 eingestellt wurde.
Es bewertet jeden Text in 11 Kategorien, wobei pro Kategorie eine Bewertung von 0,0 bis 1,0 vergeben wird. Es akzeptiert zwei Eingabemodi, reiner Text oder konversationell, und die Wahl zwischen ihnen beeinflusst die Ergebnisqualität mehr, als Sie vielleicht erwarten.
Ein zweites Moderationsmodell existiert seit dem 4. August 2026 in öffentlicher Vorschau: Shieldstral 1.0. Es funktioniert anders: kompakt (3,8 Milliarden Parameter) und multimodal, klassifiziert es Text und Bilder basierend auf in natürlicher Sprache formulierten Richtlinienfragen und antwortet mit Ja oder Nein. Seine Gewichte werden unter der Apache 2.0-Lizenz veröffentlicht, was Self-Hosting ermöglicht. Solange es in der Vorschau bleibt, bleibt mistral-moderation-2603 das Produktionsmodell, und es ist dasjenige, das für Guardrails verwendet wird.
Der Endpunkt /v1/moderations
Der reine Textmodus ist der einfachste: Sie senden einen oder mehrere Texte zur Klassifizierung, ohne zusätzlichen Kontext.
from mistralai.client import Mistral
import os
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
# Einfachen Text moderieren
response = client.classifiers.moderate(
model="mistral-moderation-2603",
inputs=["Text zur Moderationsanalyse"]
)
# Ergebnisse abrufen
for result in response.results:
print(f"Kategorien: {result.categories}")
print(f"Bewertungen: {result.category_scores}")
Um vollständige Austauschverläufe zu moderieren, also Prompt und Antwort zusammen, liefert der konversationelle Modus dem Klassifikator, was ihm fehlte: den Faden der Diskussion.
# Einen vollständigen Gesprächsverlauf moderieren
response = client.classifiers.moderate_chat(
model="mistral-moderation-2603",
inputs=[
[
{"role": "user", "content": "Wie behandle ich einen Kopfschmerz?"},
{"role": "assistant", "content": "Nehmen Sie 1g Paracetamol..."}
]
]
)
# Der Klassifikator bewertet den gesamten Kontext
for result in response.results:
print(f"Gesundheitsbewertung: {(result.category_scores or {}).get('health', 0)}")
Der konversationelle Modus, der den Endpunkt /v1/chat/moderations aufruft, ist das, was Mistral für einen Austausch empfiehlt: Das Modell ist darauf trainiert, den letzten Zug der Unterhaltung im Lichte der vorherigen zu klassifizieren. Um die Antwort Ihres Assistenten zu moderieren, platzieren Sie diese am Ende. Die Liste von Listen im Beispiel ermöglicht das gleichzeitige Senden mehrerer Gespräche; für ein einzelnes Gespräch genügt eine einfache Liste von Nachrichten. Der gleiche Text kann daher je nach Kontext eine unterschiedliche Bewertung erhalten – eine Dosierung, die als Antwort auf eine Informationsanfrage zitiert wird, hat nicht denselben Status wie dieselbe Dosierung, die in einen Austausch über riskante Selbstmedikation eingeschleust wird.
Antwortstruktur
Für jeden analysierten Text enthält die Antwort zwei parallele Blöcke: categories, Booleans, die mit Schwellenwerten berechnet werden, die von Mistral basierend auf seinem internen Testdatensatz festgelegt wurden, und category_scores, die rohen Bewertungen von 0,0 bis 1,0. Das folgende Beispiel ist illustrativ mit abgerundeten Werten; einige Dokumentationsbeispiele zeigen noch die neun Kategorien des alten Modells, bei denen dangerous_and_criminal_content dangerous und criminal kombinierte. Sie werden die letzteren verwenden, da Sie damit Ihre eigenen Grenzen setzen können.
{
"id": "mod-abc123",
"model": "mistral-moderation-2603",
"results": [
{
"categories": {
"sexual": false,
"hate_and_discrimination": false,
"violence_and_threats": false,
"dangerous": false,
"criminal": false,
"selfharm": false,
"health": true,
"financial": false,
"law": false,
"pii": false,
"jailbreaking": false
},
"category_scores": {
"sexual": 0.01,
"hate_and_discrimination": 0.02,
"violence_and_threats": 0.03,
"dangerous": 0.02,
"criminal": 0.01,
"selfharm": 0.01,
"health": 0.72,
"financial": 0.05,
"law": 0.08,
"pii": 0.02,
"jailbreaking": 0.01
}
}
]
}
In diesem Beispiel ist nur health mit true markiert, mit 0,72. Ein für Endverbraucher bestimmter Assistent würde dies als Blockade-Signal sehen; ein Werkzeug für Apotheker würde es ohne Zögern passieren lassen. Dieselbe Bewertung, zwei gegensätzliche Entscheidungen, und genau darum arbeiten Sie mit Bewertungen statt mit Booleans.
Mehrere Texte im Batch moderieren
Die API akzeptiert mehrere Texte in einer einzigen Anfrage, was die Batch-Verarbeitung grundlegend verändert: Die nachträgliche Analyse eines Gesprächsverlaufs oder einer Kommentardatenbank wird in Bezug auf die Anzahl der Aufrufe zu einer vernünftigen Operation.
# Mehrere Texte in einer einzigen Anfrage moderieren
texts = [
"Erster Text zur Analyse",
"Zweiter Text zur Analyse",
"Dritter Text zur Analyse"
]
response = client.classifiers.moderate(
model="mistral-moderation-2603",
inputs=texts
)
# Jeder Text hat sein eigenes Ergebnis
for i, result in enumerate(response.results):
scores = result.category_scores or {}
max_cat = max(scores, key=lambda c: scores[c])
max_score = scores[max_cat]
print(f"Text {i+1}: maximale Bewertung = {max_score:.2f} ({max_cat})")
Guardrails vs. Moderations-API: Wann was verwenden
| Aspekt | Eigene Guardrails | Moderations-API |
|---|---|---|
| Zeitpunkt | VOR der Generierung | NACH der Generierung |
| Aktion | Blockiert automatisch (403) | Liefert Bewertungen (Sie entscheiden) |
| Steuerung | Ihre Schwellenwerte pro Kategorie, angewendet von Mistral | Rohbewertungen, freie Logik |
| Aufruf | Parameter der Generierungsanfrage | Separate Anfrage an /v1/moderations |
| Einsatzfall | Filtern gefährlicher Prompts | Klassifizieren von Antworten |
Beispiel: Komplette Pipeline
Die folgende Pipeline zeigt die Abfolge der beiden Mechanismen. Die Generierung wird durch ein Guardrail geschützt, das sich auf Jailbreaking konzentriert; die Antwort wird dann zusammen mit der Frage, die sie hervorgerufen hat, klassifiziert, und ein eigener Eingriff greift ein, sobald eine Bewertung 0,5 überschreitet. Beachten Sie, dass die beiden Schritte unterschiedliche Status zurückgeben – blocked_input und blocked_output –, sodass Ihre Logs klar anzeigen, wo die Anfrage gestoppt wurde.
from mistralai.client import errors
from mistralai.client.models import GuardrailConfigTypedDict
GUARDRAIL_JAILBREAK: list[GuardrailConfigTypedDict] = [
{
"block_on_error": True,
"moderation_llm_v2": {
"custom_category_thresholds": {"jailbreaking": 0.1},
"action": "block",
},
}
]
def secure_pipeline(user_message: str) -> dict:
"""Pipeline mit Guardrails (Eingabe) und Moderation (Ausgabe)."""
# Schritt 1: Generieren mit Guardrails
try:
response = client.chat.complete(
model="mistral-large-latest",
messages=[{"role": "user", "content": user_message}],
guardrails=GUARDRAIL_JAILBREAK,
)
except errors.SDKError as e:
if e.status_code == 403:
return {"status": "blocked_input", "content": None}
raise
generated = response.choices[0].message.content
if not isinstance(generated, str):
return {"status": "error", "content": None}
# Schritt 2: Ausgabe moderieren, im Kontext der Frage
moderation = client.classifiers.moderate_chat(
model="mistral-moderation-2603",
inputs=[
{"role": "user", "content": user_message},
{"role": "assistant", "content": generated},
],
)
scores = moderation.results[0].category_scores or {}
if max(scores.values(), default=0.0) > 0.5:
return {"status": "blocked_output", "scores": scores}
return {"status": "ok", "content": generated, "scores": scores}
Kernaussagen
- Die Moderations-API verwendet das Modell
mistral-moderation-2603zur Klassifizierung von Inhalten - Zwei Modi verfügbar: reiner Text und konversationell
- Bewertungen reichen von 0,0 bis 1,0 – Sie definieren Ihre eigenen Entscheidungsschwellen
- Der konversationelle Modus ist genauer, da er den Kontext berücksichtigt
- Kombinieren Sie Guardrails (Eingabe) + Moderation (Ausgabe) für eine vertiefte Verteidigung