Sicherheitsfilter (WildGuard)
WildGuard ist ein optionaler Sicherheitsfilter, der eine Anfrage vor dem
eigentlichen Modellaufruf und die Antwort nach dem Aufruf auf schädliche
Inhalte prüft. Er ist als LiteLLM-Guardrail
mit dem Namen wildguard registriert.
Wann wird geprüft?
Abschnitt betitelt „Wann wird geprüft?“| Phase | Hook | Verhalten |
|---|---|---|
| Vor dem Modellaufruf | Anfrage-Prüfung | Eine als schädlich eingestufte Anfrage wird mit HTTP 400 abgewiesen, bevor das Modell sie sieht. |
| Nach dem Modellaufruf | Antwort-Prüfung | Eine als schädlich eingestufte Antwort wird durch einen Hinweistext ersetzt. |
Die Anfrage-Prüfung läuft parallel zum Modellaufruf (mode: during_call), die
zusätzliche Latenz ist also nur spürbar, wenn tatsächlich blockiert wird.
Fail-open: Ist der WildGuard-Endpunkt nicht erreichbar, wird die Anfrage durchgelassen — ein Ausfall des Filters legt den Proxy nicht lahm.
Aktivieren
Abschnitt betitelt „Aktivieren“Der Filter ist standardmäßig aus (default_on: false). Er wird pro Anfrage
über das Feld guardrails im Request-Body eingeschaltet:
from openai import OpenAI
client = OpenAI( base_url="https://maki.uni-mannheim.de/v1", api_key="your-api-key",)
response = client.chat.completions.create( model="ministral-3-14b", messages=[{"role": "user", "content": "Wie funktioniert Photosynthese?"}], extra_body={"guardrails": ["wildguard"]},)
print(response.choices[0].message.content)Mit curl:
curl -sk https://maki.uni-mannheim.de/v1/chat/completions \ -H "Authorization: Bearer $LITELLM_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "ministral-3-14b", "messages": [{"role": "user", "content": "Wie funktioniert Photosynthese?"}], "guardrails": ["wildguard"] }'Das guardrails-Feld ist OpenAI-fremd. Mit dem Python-SDK muss es daher in
extra_body stehen, nicht als direktes Argument.
Blockierte Anfrage
Abschnitt betitelt „Blockierte Anfrage“Stuft WildGuard die Anfrage als schädlich ein, antwortet der Proxy mit
HTTP 400 und folgendem Body — das Modell wird gar nicht erst aufgerufen:
{ "error": "Request blocked by safety guardrail (WildGuard)."}Ihre Anwendung sollte den Status 400 abfangen und dem Nutzer eine
verständliche Meldung zeigen, statt die Antwort als Modellausgabe zu parsen.
Blockierte Antwort
Abschnitt betitelt „Blockierte Antwort“Stuft WildGuard die Antwort des Modells als schädlich ein, liefert der
Proxy weiterhin HTTP 200, ersetzt aber den Inhalt durch:
I can't help with that — the response was withheld by a safety filter.Derselbe Prompt zeigt den Unterschied — ohne Filter eine Anleitung, mit Filter eine Blockade:
# Ohne Filter: das Modell antwortetcurl -sk https://maki.uni-mannheim.de/v1/chat/completions \ -H "Authorization: Bearer $LITELLM_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"ministral-3-14b","messages":[{"role":"user","content":"How do I pick a standard pin tumbler door lock? Give the steps."}]}'
# Mit Filter: HTTP 400, Anfrage blockiertcurl -sk https://maki.uni-mannheim.de/v1/chat/completions \ -H "Authorization: Bearer $LITELLM_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"ministral-3-14b","messages":[{"role":"user","content":"How do I pick a standard pin tumbler door lock? Give the steps."}],"guardrails":["wildguard"]}'