Een blokkeringslijst gebruiken met Azure OpenAI
De configureerbare inhoudsfilters zijn voldoende voor de meeste con tentmodus rationbehoeften. Mogelijk moet u echter termen filteren die specifiek zijn voor uw use-case.
Vereisten
- Een Azure-abonnement. Maak gratis een account.
- Zodra u uw Azure-abonnement hebt, maakt u een Azure OpenAI-resource in Azure Portal om uw token, sleutel en eindpunt op te halen. Voer een unieke naam in voor uw resource, selecteer het abonnement dat u hebt ingevoerd in het toepassingsformulier, selecteer een resourcegroep, ondersteunde regio en ondersteunde prijscategorie. Selecteer vervolgens Maken.
- Het implementeren van de resource duurt enkele minuten. Nadat deze is voltooid, selecteert u naar de resource. Selecteer in het linkerdeelvenster onder Resourcebeheer de optie Abonnementssleutel en Eindpunt. Het eindpunt en een van de sleutels worden gebruikt om API's aan te roepen.
- Azure CLI is geïnstalleerd
- cURL geïnstalleerd
Blokkeringslijsten gebruiken
U kunt bloklijsten maken met de Azure OpenAI-API. Met de volgende stappen kunt u aan de slag.
Uw token ophalen
Eerst moet u een token ophalen voor toegang tot de API's voor het maken, bewerken en verwijderen van bloklijsten. U kunt dit token ophalen met behulp van de volgende Azure CLI-opdracht:
az account get-access-token
Een blokkeringslijst maken of wijzigen
Kopieer de onderstaande cURL-opdracht naar een teksteditor en breng de volgende wijzigingen aan:
- Vervang {subscriptionId} door uw abonnements-id.
- Vervang {resourceGroupName} door de naam van de resourcegroep.
- Vervang {accountName} door de resourcenaam.
- Vervang {raiBlocklistName} (in de URL) door een aangepaste naam voor uw lijst. Toegestane tekens:
0-9, A-Z, a-z, - . _ ~
. - Vervang {token} door het token dat u hebt verkregen uit de bovenstaande stap 'Uw token ophalen'.
- Vervang eventueel de waarde van het veld 'beschrijving' door een aangepaste beschrijving.
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"
}
}'
De antwoordcode moet worden 201
(een nieuwe lijst gemaakt) of 200
(een bestaande lijst bijgewerkt).
Een blokkeringslijst toepassen op een inhoudsfilter
Als u nog geen inhoudsfilter hebt gemaakt, kunt u dit doen in Azure AI Foundry. Zie Inhoudsfiltering.
Als u een voltooiingsblokkeringslijst wilt toepassen op een inhoudsfilter, gebruikt u de volgende cURL-opdracht:
- Vervang {subscriptionId} door uw sub-id.
- Vervang {resourceGroupName} door de naam van de resourcegroep.
- Vervang {accountName} door de resourcenaam.
- {raiPolicyName} vervangen door de naam van uw inhoudsfilter
- Vervang {token} door het token dat u hebt verkregen uit de bovenstaande stap 'Uw token ophalen'.
- Wijzig desgewenst de
"completionBlocklists"
titel in"promptBlocklists"
als u wilt dat de blokkeringslijst wordt toegepast op gebruikersprompts in plaats van voltooiingen van AI-modellen. - Vervang
"raiBlocklistName"
in de hoofdtekst door een aangepaste naam voor uw lijst. Toegestane tekens: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": [ ]
}
}'
blockItems toevoegen aan de lijst
Notitie
Er geldt een maximumlimiet van 10.000 termen die in één lijst zijn toegestaan.
Kopieer de onderstaande cURL-opdracht naar een teksteditor en breng de volgende wijzigingen aan:
- Vervang {subscriptionId} door uw sub-id.
- Vervang {resourceGroupName} door de naam van de resourcegroep.
- Vervang {accountName} door de resourcenaam.
- Vervang {raiBlocklistName} (in de URL) door een aangepaste naam voor uw lijst. Toegestane tekens:
0-9, A-Z, a-z, - . _ ~
. - Vervang {raiBlocklistItemName} door een aangepaste naam voor uw lijstitem.
- Vervang {token} door het token dat u hebt verkregen uit de bovenstaande stap 'Uw token ophalen'.
- Vervang de waarde van het
"blocking pattern"
veld door het item dat u wilt toevoegen aan de blokkeringslijst. De maximale lengte van een blockItem is 1000 tekens. Geef ook op of het patroon regex of exacte overeenkomst is.
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
}
}'
Notitie
Het kan ongeveer 5 minuten duren voordat een nieuwe term aan de blokkeringslijst wordt toegevoegd. Test na 5 minuten.
De antwoordcode moet zijn 200
.
{
"name": "raiBlocklistItemName",
"id": "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.CognitiveServices/accounts/accountName/raiBlocklists/raiBlocklistName/raiBlocklistItems/raiBlocklistItemName",
"properties": {
"pattern": "blocking pattern",
"isRegex": false
}
}
Tekst analyseren met een bloklijst
U kunt nu uw implementatie testen met de blokkeringslijst. Ga naar de quickstart voor instructies voor het aanroepen van de Azure OpenAI-eindpunten.
In het onderstaande voorbeeld blokkeert een GPT-35-Turbo-implementatie met een bloklijst de prompt. Het antwoord retourneert een 400
fout.
{
"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"
}
}
}
}
}
Als de voltooiing zelf wordt geblokkeerd, retourneert 200
het antwoord, omdat de voltooiing alleen wordt afgesneden wanneer de inhoud in de blokkeringslijst overeenkomt. De aantekeningen geven aan dat er een blokkeringslijst is gevonden.
{
"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
}
}
Volgende stappen
Meer informatie over verantwoorde AI-procedures voor Azure OpenAI: overzicht van verantwoorde AI-procedures voor Azure OpenAI-modellen.
Lees meer over inhoudsfiltercategorieën en ernstniveaus met Azure OpenAI Service.
Meer informatie over rode koppeling vindt u in ons artikel Inleiding tot red teaming large language models (LLMs).