Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die in Microsoft Foundry verfügbaren konfigurierbaren Guardrails und Steuerelemente sind für die meisten Inhaltsmoderationsanforderungen ausreichend. Möglicherweise müssen Sie jedoch spezifische Ausdrücke für Ihren Anwendungsfall filtern , z. B. Wettbewerbernamen, interne Projektnamen oder domänenspezifische vertrauliche Ausdrücke. Dazu können Sie benutzerdefinierte Blocklisten erstellen, die automatisch Inhalte filtern, die Ihre angegebenen Ausdrücke enthalten.
In diesem Artikel erfahren Sie, wie Sie:
- Erstellen und Verwalten von benutzerdefinierten Blocklisten
- Hinzufügen von Ausdrücken mit exakten Übereinstimmungs- oder Regex-Mustern
- Anwenden von Blocklisten auf Ihre Inhaltsfilter
- Testen des Blocklistenverhaltens mit Ihren Bereitstellungen
Voraussetzungen
- Ein Azure-Abonnement. Erstellen Sie eine kostenlos.
- Sobald Sie Ihr Azure-Abonnement haben, erstellen Sie eine Ressource für Foundry Services. Weitere Informationen finden Sie unter Create a Foundry Services resource.
- Modellimplementierung. Weitere Informationen finden Sie unter Hinzufügen und Konfigurieren von Modellen zu Foundry-Diensten.
Hinweis
Die Blocklistenunterstützung ist auf Azure OpenAI-Modelle beschränkt.
Verwenden von Blocklisten
Sie können Blocklisten mit der Azure OpenAI-API erstellen. Die folgenden Schritte helfen Ihnen bei den ersten Schritten.
Holen Sie sich Ihr Token
Zunächst müssen Sie ein Token für den Zugriff auf die APIs zum Erstellen, Bearbeiten und Löschen von Blocklisten abrufen. Sie können dieses Token mit dem folgenden Azure CLI Befehl abrufen:
az account get-access-token
Erstellen oder Ändern einer Blockliste
Kopieren Sie den befehl cURL unten in einen Text-Editor, und nehmen Sie die folgenden Änderungen vor:
- Ersetzen Sie {subscriptionId} durch Ihre Abonnement-ID.
- Ersetzen Sie {resourceGroupName} durch ihren Ressourcengruppennamen.
- Ersetzen Sie {accountName} durch Ihren Ressourcennamen.
- Ersetzen Sie {raiBlocklistName} (in der URL) durch einen benutzerdefinierten Namen für Ihre Liste. Zulässige Zeichen:
0-9, A-Z, a-z, - . _ ~. - Ersetzen Sie {token} durch das Token, das Sie aus dem obigen Schritt "Token abrufen" erhalten haben.
- Ersetzen Sie optional den Wert des Felds "beschreibung" durch eine benutzerdefinierte Beschreibung.
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiBlocklists/{raiBlocklistName}?api-version=2024-10-01' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"properties": {
"description": "This is a prompt blocklist"
}
}'
Der Antwortcode sollte 201 (eine neue Liste erstellt) oder 200 (eine vorhandene Liste aktualisiert) sein.
Anwenden einer Blockliste auf einen Inhaltsfilter
Wenn Sie noch keinen Inhaltsfilter erstellt haben, können Sie dies in Foundry tun. Siehe Inhaltsfilterung.
Verwenden Sie den folgenden cURL-Befehl, um eine Vervollständigungsblockliste auf einen Inhaltsfilter anzuwenden:
- Ersetzen Sie {subscriptionId} durch Ihre Unter-ID.
- Ersetzen Sie {resourceGroupName} durch ihren Ressourcengruppennamen.
- Ersetzen Sie {accountName} durch Ihren Ressourcennamen.
- Ersetzen Sie {raiPolicyName} durch den Namen des Inhaltsfilters.
- Ersetzen Sie {token} durch das Token, das Sie aus dem obigen Schritt "Token abrufen" erhalten haben.
- Ändern Sie optional den
"completionBlocklists"Titel in"promptBlocklists", um die Blockliste auf Benutzeraufforderungen statt auf KI-Modellabschlüsse anzuwenden. - Ersetzen Sie
"raiBlocklistName"im Textkörper durch einen benutzerdefinierten Namen für Ihre Liste. Zulässige Zeichen:0-9, A-Z, a-z, - . _ ~.
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiPolicies/{raiPolicyName}?api-version=2024-10-01' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"properties": {
"basePolicyName": "Microsoft.Default",
"completionBlocklists": [{
"blocklistName": "raiBlocklistName",
"blocking": true
}],
"contentFilters": [ ]
}
}'
Hinzufügen von BlockItems zur Liste
Hinweis
In einer Liste sind maximal 10.000 Ausdrücke zulässig.
Kopieren Sie den befehl cURL unten in einen Text-Editor, und nehmen Sie die folgenden Änderungen vor:
- Ersetzen Sie {subscriptionId} durch Ihre Unter-ID.
- Ersetzen Sie {resourceGroupName} durch ihren Ressourcengruppennamen.
- Ersetzen Sie {accountName} durch Ihren Ressourcennamen.
- Ersetzen Sie {raiBlocklistName} (in der URL) durch einen benutzerdefinierten Namen für Ihre Liste. Zulässige Zeichen:
0-9, A-Z, a-z, - . _ ~. - Ersetzen Sie {raiBlocklistItemName} durch einen benutzerdefinierten Namen für Ihr Listenelement.
- Ersetzen Sie {token} durch das Token, das Sie aus dem obigen Schritt "Token abrufen" erhalten haben.
- Ersetzen Sie den Wert des
"pattern"Felds durch das Element, das Sie Ihrer Blockliste hinzufügen möchten. Die maximale Länge eines BlockItem beträgt 1.000 Zeichen. Geben Sie auch an, ob das Muster „RegEx“ oder eine genaue Übereinstimmung ist.
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiBlocklists/{raiBlocklistName}/raiBlocklistItems/{raiBlocklistItemName}?api-version=2024-10-01' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"properties": {
"pattern": "blocking pattern",
"isRegex": false
}
}'
Hinweis
Es kann etwa 5 Minuten dauern, bis eine neue Benennung der Blockliste hinzugefügt wird. Testen Sie die Blockliste nach 5 Minuten.
Der Antwortcode sollte sein 200.
{
"name": "raiBlocklistItemName",
"id": "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.CognitiveServices/accounts/accountName/raiBlocklists/raiBlocklistName/raiBlocklistItems/raiBlocklistItemName",
"properties": {
"pattern": "blocking pattern",
"isRegex": false
}
}
Analysieren von Text mit einer Blockliste
Jetzt können Sie Ihre Bereitstellung testen, für die die Blockliste vorhanden ist. Anweisungen zum Aufrufen der Azure OpenAI-Endpunkte finden Sie unter Quickstart.
Im folgenden Beispiel blockiert eine GPT-35-Turbo-Bereitstellung mit einer Blockliste die Eingabeaufforderung. Die Antwort gibt einen 400 Fehler zurück.
{
"error": {
"message": "The response was filtered due to the prompt triggering Azure OpenAI's content management policy. Please modify your prompt and retry. To learn more about our content filtering policies please read our documentation: https://go.microsoft.com/fwlink/?linkid=2198766",
"type": null,
"param": "prompt",
"code": "content_filter",
"status": 400,
"innererror": {
"code": "ResponsibleAIPolicyViolation",
"content_filter_result": {
"custom_blocklists": {
"details": [{ "filtered": true, "id": "pizza" }],
"filtered": true
}
}
}
}
}
Wenn die Vervollständigung selbst blockiert ist, wird die Antwort als 200 zurückgegeben, da die Vervollständigung nur abgeschnitten wird, wenn der Inhalt der Blockliste abgeglichen wird. Die Anmerkungen zeigen, dass ein Blocklistenelement abgeglichen wurde.
{
"id": "chatcmpl-85NkyY0AkeBMunOjyxivQSiTaxGAl",
"object": "chat.completion",
"created": 1696293652,
"model": "gpt-35-turbo",
"prompt_filter_results": [
{
"prompt_index": 0,
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"choices": [
{
"index": 0,
"finish_reason": "content_filter",
"message": {
"role": "assistant"
},
"content_filter_results": {
"custom_blocklists": [
{
"filtered": true,
"id": "myBlocklistName"
}
],
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"usage": {
"completion_tokens": 75,
"prompt_tokens": 27,
"total_tokens": 102
}
}
Schlüsselfelder in der Antwort:
-
finish_reason: "content_filter"gibt an, dass der Abschluss durch eine Blocklisten-Übereinstimmung beendet wurde. -
custom_blocklists[].idzeigt an, welche Blockliste den Filter ausgelöst hat -
custom_blocklists[].filtered: truebestätigt, dass der Inhalt blockiert wurde
Löschen eines Blocklistenelements
Verwenden Sie den folgenden cURL-Befehl, um ein Blocklistenelement zu löschen:
- Ersetzen Sie {subscriptionId} durch Ihre Abonnement-ID.
- Ersetzen Sie {resourceGroupName} durch ihren Ressourcengruppennamen.
- Ersetzen Sie {accountName} durch Ihren Ressourcennamen.
- Ersetzen Sie {raiBlocklistName} durch den Namen Ihrer Blockliste.
- Ersetzen Sie {raiBlocklistItemName} durch den Namen des zu löschenden Elements.
- Ersetzen Sie {token} durch das Token, das Sie aus dem obigen Schritt "Token abrufen" erhalten haben.
curl --location --request DELETE 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiBlocklists/{raiBlocklistName}/raiBlocklistItems/{raiBlocklistItemName}?api-version=2024-10-01' \
--header 'Authorization: Bearer {token}'
Der Antwortcode sollte (Element gelöscht) oder 200 (kein Inhalt) sein 204 .
Löschen einer Blockliste
Verwenden Sie den folgenden cURL-Befehl, um eine gesamte Blockliste zu löschen:
- Ersetzen Sie {subscriptionId} durch Ihre Abonnement-ID.
- Ersetzen Sie {resourceGroupName} durch ihren Ressourcengruppennamen.
- Ersetzen Sie {accountName} durch Ihren Ressourcennamen.
- Ersetzen Sie {raiBlocklistName} durch den Namen der zu löschenden Blockliste.
- Ersetzen Sie {token} durch das Token, das Sie aus dem obigen Schritt "Token abrufen" erhalten haben.
curl --location --request DELETE 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiBlocklists/{raiBlocklistName}?api-version=2024-10-01' \
--header 'Authorization: Bearer {token}'
Warnung
Durch das Löschen einer Blockliste werden alle Elemente in dieser Liste entfernt und können nicht rückgängig gemacht werden.
Problembehandlung
403 Verbotener Fehler
Stellen Sie sicher, dass Ihr Azure AD-Token über die richtigen Berechtigungen verfügt. Das Konto muss über Cognitive Services Contributor oder Owner Rolle für die Azure OpenAI-Ressource verfügen.
Blockliste zeigt keine Wirkung
Neue Blocklistenbegriffe können bis zu 5 Minuten dauern, bis sie verteilt werden. Warten Sie, und testen Sie es erneut. Wenn das Problem weiterhin besteht, überprüfen Sie, ob die Blockliste ordnungsgemäß auf Den Inhaltsfilter angewendet wurde.
Muster stimmt nicht mit erwartetem Inhalt überein
Stellen Sie bei Verwendung von regex-Mustern sicher, dass die Mustersyntax gültig ist. Testen Sie ihr regex-Muster separat, bevor Sie es der Blockliste hinzufügen. Häufige Probleme sind:
- Sonderzeichen ohne Escape-Zeichen
- Groß-/Kleinschreibung (Bei Mustern wird standardmäßig die Groß-/Kleinschreibung beachtet)
- Anchors (
^und$) verhalten sich möglicherweise nicht wie erwartet in Streamingszenarien
Kontingentgrenze erreicht
Jede Blockliste kann maximal 10.000 Ausdrücke enthalten. Wenn Sie mehr benötigen, erstellen Sie weitere Blocklisten, und wenden Sie sie auf denselben Inhaltsfilter an.
Verwandte Inhalte
Erfahren Sie mehr über verantwortungsvolle KI-Praktiken für Azure OpenAI: Overview of Responsible AI practices for Azure OpenAI models.
Weitere Informationen zu Inhaltsfilterkategorien und Schweregraden mit Azure OpenAI in Foundry-Modellen.
Erfahren Sie mehr über Red Teaming in unserem Artikel: Introduction to Red Teaming Large Language Models (LLMs).