Verwenden einer Blockliste mit Azure OpenAI
Die konfigurierbaren Inhaltsfilter sind für die meisten Anforderungen an die Inhaltsmoderation ausreichend. Möglicherweise müssen Sie jedoch bestimmte Ausdrücke für Ihren Anwendungsfall filtern.
Voraussetzungen
- Ein Azure-Abonnement. Erstellen Sie ein kostenloses Konto.
- Sobald Sie über Ihr Azure-Abonnement verfügen, erstellen Sie im Azure-Portal eine Azure OpenAI-Ressource, um Ihren Token, Schlüssel und Endpunkt zu erhalten. Geben Sie für Ihre Ressource einen eindeutigen Namen ein. Wählen Sie das Abonnement aus, das Sie im Antragsformular eingegeben haben, und dann eine Ressourcengruppe, eine unterstützte Region und einen unterstützten Tarif. Klicken Sie anschließend auf Erstellen.
- Die Bereitstellung der Ressource dauert einige Minuten. Wählen Sie im Anschluss Zu Ressource wechseln aus. Wählen Sie im linken Bereich unter Ressourcenverwaltung die Option Abonnementschlüssel und Endpunkt aus. Der Endpunkt und einer der Schlüssel werden verwendet, um APIs aufzurufen.
- Die Azure CLI muss installiert sein.
- cURL muss installiert sein.
Verwenden von Blocklisten
Sie können Blocklisten mit der Azure OpenAI-API erstellen. Die folgenden Schritte helfen Ihnen bei den ersten Schritten.
Abrufen Ihres Tokens
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 Sperrliste
Kopieren Sie den nachstehenden cURL-Befehl in einen Text-Editor, und nehmen Sie folgende Ä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 Feldes „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-04-01-preview' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"properties": {
"description": "This is a prompt blocklist"
}
}'
Der Antwortcode sollte 201
(neue Liste erstellt) oder 200
(vorhandene Liste aktualisiert) sein.
Anwenden einer Blockliste auf einen Inhaltsfilter
Wenn Sie noch keinen Inhaltsfilter erstellt haben, können Sie dies in Azure AI 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"
, wenn die Blockliste für Benutzerprompts anstelle von KI-Modellvervollständigungen gelten soll. - Ersetzen Sie im Text
"raiBlocklistName"
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-04-01-preview' \
--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 Benennungen zulässig.
Kopieren Sie den nachstehenden cURL-Befehl in einen Text-Editor, und nehmen Sie folgende Ä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 Felds
"blocking pattern"
durch den Begriff, den Sie Ihrer Sperrliste hinzufügen möchten. Ein blockItem darf maximal 1000 Zeichen lang sein. 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-04-01-preview' \
--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. Bitte testen Sie nach 5 Minuten.
Der Antwortcode muss 200
sein.
{
"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 Sperrliste
Jetzt können Sie Ihre Bereitstellung testen, für die die Blockliste vorhanden ist. Anweisungen zum Aufrufen der Azure OpenAI-Endpunkte finden Sie im Schnellstart.
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": [
{
"filtered": true,
"id": "raiBlocklistName"
}
],
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
}
}
Wenn der Abschluss selbst blockiert ist, wird die Antwort zurückgegeben 200
, da der Abschluss nur abgeschnitten wird, wenn der Blocklisteninhalt abgeglichen wird. Die Anmerkungen zeigen, dass eine Blockliste 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
}
}
Nächste Schritte
Erfahren Sie mehr über Verantwortungsvolle KI-Methoden für Azure OpenAI: Übersicht über verantwortungsvolle KI-Methoden für Azure OpenAI-Modelle.
Erfahren Sie mehr über Inhaltsfilterkategorien und Schweregrade mit dem Azure OpenAI Service.
Erfahren Sie mehr über Rote Teams in unserem Artikel: Einführung in das Red Teaming großer Sprachmodelle (LLMs).