Dela via


Använda en blockeringslista med Azure OpenAI

De konfigurerbara innehållsfiltren räcker för de flesta kon tältläge rationsbehov. Du kan dock behöva filtrera termer som är specifika för ditt användningsfall.

Förutsättningar

  • En Azure-prenumeration. Skapa en kostnadsfritt.
  • När du har din Azure-prenumeration skapar du en Azure OpenAI-resurs i Azure Portal för att hämta din token, nyckel och slutpunkt. Ange ett unikt namn för resursen, välj den prenumeration som du angav i programformuläret, välj en resursgrupp, region som stöds och prisnivån som stöds. Välj sedan Skapa.
    • Det tar några minuter att distribuera resursen. När den är klar väljer du Gå till resurs. I den vänstra rutan under Resurshantering väljer du Prenumerationsnyckel och Slutpunkt. Slutpunkten och någon av nycklarna används för att anropa API:er.
  • Azure CLI installerat
  • cURL installerat

Använda blocklistor

Du kan skapa blocklistor med Azure OpenAI-API:et. Följande steg hjälper dig att komma igång.

Hämta din token

Först måste du hämta en token för åtkomst till API:erna för att skapa, redigera och ta bort blocklistor. Du kan hämta den här token med hjälp av följande Azure CLI-kommando:

az account get-access-token 

Skapa eller ändra en blockeringslista

Kopiera cURL-kommandot nedan till en textredigerare och gör följande ändringar:

  1. Ersätt {subscriptionId} med ditt prenumerations-ID.
  2. Ersätt {resourceGroupName} med resursgruppens namn.
  3. Ersätt {accountName} med resursnamnet.
  4. Ersätt {raiBlocklistName} (i URL:en) med ett anpassat namn för listan. Tillåtna tecken: 0-9, A-Z, a-z, - . _ ~.
  5. Ersätt {token} med den token som du fick från steget Hämta din token ovan.
  6. Du kan också ersätta värdet för fältet "description" med en anpassad beskrivning.
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"  
    } 
}' 

Svarskoden ska vara 201 (skapa en ny lista) eller 200 (uppdatera en befintlig lista).

Tillämpa en blockeringslista på ett innehållsfilter

Om du ännu inte har skapat ett innehållsfilter kan du göra det i Azure AI Foundry. Se Innehållsfiltrering.

Använd följande cURL-kommando för att tillämpa en slutförande blocklista på ett innehållsfilter:

  1. Ersätt {subscriptionId} med ditt under-ID.
  2. Ersätt {resourceGroupName} med resursgruppens namn.
  3. Ersätt {accountName} med resursnamnet.
  4. Ersätt {raiPolicyName} med namnet på ditt innehållsfilter
  5. Ersätt {token} med den token som du fick från steget Hämta din token ovan.
  6. Du kan också ändra "completionBlocklists" rubriken till "promptBlocklists" om du vill att blocklistan ska gälla för användarprompter i stället för AI-modellavslut.
  7. Ersätt "raiBlocklistName" i brödtexten med ett anpassat namn för listan. Tillåtna tecken: 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": [ ] 
    } 
}' 

Lägg till blockItems i listan

Kommentar

Det finns en maxgräns på 10 000 termer som tillåts i en lista.

Kopiera cURL-kommandot nedan till en textredigerare och gör följande ändringar:

  1. Ersätt {subscriptionId} med ditt under-ID.
  2. Ersätt {resourceGroupName} med resursgruppens namn.
  3. Ersätt {accountName} med resursnamnet.
  4. Ersätt {raiBlocklistName} (i URL:en) med ett anpassat namn för listan. Tillåtna tecken: 0-9, A-Z, a-z, - . _ ~.
  5. Ersätt {raiBlocklistItemName} med ett anpassat namn för listobjektet.
  6. Ersätt {token} med den token som du fick från steget Hämta din token ovan.
  7. Ersätt värdet för fältet "blocking pattern" med det objekt som du vill lägga till i blocklistan. Den maximala längden på en blockItem är 1 000 tecken. Ange även om mönstret är regex eller exakt matchning.
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  
    }  
}' 

Kommentar

Det kan ta cirka 5 minuter innan en ny term läggs till i blocklistan. Testa efter 5 minuter.

Svarskoden ska vara 200.

{ 
  "name": "raiBlocklistItemName", 
  "id": "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.CognitiveServices/accounts/accountName/raiBlocklists/raiBlocklistName/raiBlocklistItems/raiBlocklistItemName", 
  "properties": { 
    "pattern": "blocking pattern", 
    "isRegex": false 
  } 
} 

Analysera text med en blockeringslista

Nu kan du testa din distribution som har blocklistan. Anvisningar om hur du anropar Azure OpenAI-slutpunkter finns i snabbstarten.

I exemplet nedan blockerar en GPT-35-Turbo-distribution med en blockeringslista prompten. Svaret returnerar ett 400 fel.

{ 
    "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" 
                } 
            } 
        } 
    } 
} 

Om själva slutförandet blockeras returnerar 200svaret , eftersom slutförandet endast avbryts när blocklisteinnehållet matchas. Anteckningarna visar att en blocklista matchades.

{ 
    "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ästa steg