Sdílet prostřednictvím


Použití seznamu blokovaných položek s Azure OpenAI

Konfigurovatelné filtry obsahu jsou dostatečné pro většinu požadavků na kon režim stanu ration. Možná ale budete muset filtrovat termíny specifické pro váš případ použití.

Požadavky

  • Předplatné Azure. Vytvořte si ho zdarma.
  • Jakmile budete mít předplatné Azure, vytvořte na webu Azure Portal prostředek Azure OpenAI, abyste získali token, klíč a koncový bod. Zadejte jedinečný název vašeho prostředku, vyberte předplatné, které jste zadali ve formuláři aplikace, vyberte skupinu prostředků, podporovanou oblast a podporovanou cenovou úroveň. Pak vyberte Vytvořit.
    • Nasazení prostředku trvá několik minut. Po dokončení vyberte přejít k prostředku. V levém podokně v části Správa prostředků vyberte Klíč předplatného a koncový bod. Koncový bod a jeden z klíčů se používají k volání rozhraní API.
  • Nainstalované rozhraní Azure CLI
  • Nainstalovaný cURL

Použití seznamů blokovaných položek

Pomocí rozhraní API Azure OpenAI můžete vytvářet seznamy blokovaných adres. Následující kroky vám pomůžou začít.

Získání tokenu

Nejprve musíte získat token pro přístup k rozhraním API pro vytváření, úpravy a odstraňování seznamů blokovaných adres. Tento token můžete získat pomocí následujícího příkazu Azure CLI:

az account get-access-token 

Vytvoření nebo úprava seznamu blokovaných položek

Zkopírujte následující příkaz cURL do textového editoru a proveďte následující změny:

  1. Položku {subscriptionId} nahraďte ID vašeho předplatného.
  2. Položku {resourceGroupName} nahraďte názvem vaší skupiny prostředků.
  3. Položku {accountName} nahraďte názvem vašeho prostředku.
  4. Položku {raiBlocklistName} (v adrese URL) nahraďte vlastním názvem seznamu. Povolené znaky: 0-9, A-Z, a-z, - . _ ~.
  5. Nahraďte {token} tokenem, který jste získali z výše uvedeného kroku Získání tokenu.
  6. Volitelně nahraďte hodnotu pole "description" vlastním popisem.
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"  
    } 
}' 

Kód odpovědi by měl být 201 (vytvořen nový seznam) nebo 200 (aktualizovaný existující seznam).

Použití seznamu blokovaných položek u filtru obsahu

Pokud jste ještě nevytvořili filtr obsahu, můžete to udělat v Azure AI Foundry. Viz Filtrování obsahu.

Pokud chcete u filtru obsahu použít seznam blokovaných dokončení , použijte následující příkaz cURL:

  1. {subscriptionId} nahraďte svým dílčím ID.
  2. Položku {resourceGroupName} nahraďte názvem vaší skupiny prostředků.
  3. Položku {accountName} nahraďte názvem vašeho prostředku.
  4. Nahraďte {raiPolicyName} názvem filtru obsahu.
  5. Nahraďte {token} tokenem, který jste získali z výše uvedeného kroku Získání tokenu.
  6. Volitelně můžete změnit "completionBlocklists" název, pokud "promptBlocklists" chcete, aby seznam blokovaných adres byl aplikován na výzvy uživatele místo dokončení modelu AI.
  7. V textu nahraďte "raiBlocklistName" vlastním názvem seznamu. Povolené znaky: 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": [ ] 
    } 
}' 

Přidání blockItems do seznamu

Poznámka:

V jednom seznamu je povolený maximální limit 10 000 termínů.

Zkopírujte následující příkaz cURL do textového editoru a proveďte následující změny:

  1. {subscriptionId} nahraďte svým dílčím ID.
  2. Položku {resourceGroupName} nahraďte názvem vaší skupiny prostředků.
  3. Položku {accountName} nahraďte názvem vašeho prostředku.
  4. Položku {raiBlocklistName} (v adrese URL) nahraďte vlastním názvem seznamu. Povolené znaky: 0-9, A-Z, a-z, - . _ ~.
  5. Položku seznamu nahraďte názvem {raiBlocklistItemName} vlastním názvem.
  6. Nahraďte {token} tokenem, který jste získali z výše uvedeného kroku Získání tokenu.
  7. Nahraďte hodnotu "blocking pattern" pole položkou, kterou chcete přidat do seznamu blokovaných položek. Maximální délka blockItem je 1000 znaků. Určete také, jestli je vzor regulární výraz nebo přesná shoda.
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  
    }  
}' 

Poznámka:

Přidání nového termínu do seznamu blokovaných může trvat přibližně 5 minut. Otestujte prosím po 5 minutách.

Kód odpovědi by měl být 200.

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

Analýza textu pomocí seznamu blokovaných položek

Teď můžete otestovat nasazení, které obsahuje seznam blokovaných položek. Pokyny k volání koncových bodů Azure OpenAI najdete v rychlém startu.

V následujícím příkladu blokuje výzva nasazení GPT-35-Turbo se seznamem blokování. Odpověď vrátí 400 chybu.

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

Pokud je samotné dokončení zablokované, vrátí 200se odpověď, protože dokončení se přeruší pouze při porovnávání obsahu seznamu blokovaných položek. Poznámky ukazují, že se seznam blokovaných položek shodoval.

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

Další kroky