Ab Claude 4-Modellen geben Streaming-Antworten von Claudes API stop_reason: "refusal" zurück, wenn Streaming-Klassifizierer eingreifen, um potenzielle Richtlinienverletzungen zu behandeln. Diese neue Sicherheitsfunktion trägt zur Aufrechterhaltung der Inhaltskonformität während des Echtzeit-Streaming bei.
Weitere Informationen zu Ablehnungen, die durch API-Sicherheitsfilter für Claude Sonnet 4.5 ausgelöst werden, finden Sie unter Understanding Sonnet 4.5's API Safety Filters.
Wenn Streaming-Klassifizierer Inhalte erkennen, die gegen Anthropics Richtlinien verstoßen, gibt die API diese Antwort zurück:
{
"role": "assistant",
"content": [
{
"type": "text",
"text": "Hello.."
}
],
"stop_reason": "refusal"
}Es ist keine zusätzliche Ablehnungsmeldung enthalten. Sie müssen die Antwort verarbeiten und eine angemessene benutzerfreundliche Meldung bereitstellen.
Wenn Sie stop_reason: refusal erhalten, müssen Sie den Gesprächskontext zurücksetzen, indem Sie den abgelehnten Zug entfernen oder aktualisieren, bevor Sie fortfahren. Der Versuch, ohne Zurücksetzen fortzufahren, führt zu weiteren Ablehnungen.
Nutzungsmetriken werden auch bei abgelehnten Antworten in der Antwort bereitgestellt, um Abrechnungszwecke zu erfüllen.
Ihnen werden Ausgabe-Token bis zur Ablehnung in Rechnung gestellt.
Wenn Sie bei der Verwendung von Claude Sonnet 4.5 oder Opus 4.1 häufig auf refusal-Stopgründe stoßen, können Sie versuchen, Ihre API-Aufrufe zu aktualisieren, um Haiku 4.5 (claude-haiku-4-5-20251001) zu verwenden, das unterschiedliche Nutzungsbeschränkungen hat. Erfahren Sie mehr über understanding Sonnet 4.5's API safety filters.
So erkennen und behandeln Sie Streaming-Ablehnungen in Ihrer Anwendung:
client = anthropic.Anthropic()
messages = []
def reset_conversation():
"""Gesprächskontext nach Ablehnung zurücksetzen"""
global messages
messages = []
print("Conversation reset due to refusal")
try:
with client.messages.stream(
max_tokens=1024,
messages=messages + [{"role": "user", "content": "Hello"}],
model="claude-sonnet-4-6",
) as stream:
for event in stream:
# Überprüfung auf Ablehnung in Nachrichtenänderung
if hasattr(event, "type") and event.type == "message_delta":
if event.delta.stop_reason == "refusal":
reset_conversation()
break
except Exception as e:
print(f"Error: {e}")Die API behandelt Ablehnungen derzeit auf drei verschiedene Arten:
| Ablehnungstyp | Antwortformat | Wann es auftritt |
|---|---|---|
| Streaming-Klassifizierer-Ablehnungen | stop_reason: refusal | Während des Streaming, wenn Inhalte gegen Richtlinien verstoßen |
| API-Eingabe- und Urheberrechtsvalidierung | 400-Fehlercodes | Wenn die Eingabe Validierungsprüfungen nicht besteht |
| Modellgenerierte Ablehnungen | Standard-Textantworten | Wenn das Modell selbst beschließt, abzulehnen |
Zukünftige API-Versionen werden das stop_reason: refusal-Muster erweitern, um die Ablehnungsbehandlung über alle Typen hinweg zu vereinheitlichen.
stop_reason: refusal-Überprüfungen in Ihre Fehlerbehandlung einWas this page helpful?