Używanie listy bloków z usługą Azure OpenAI
Konfigurowalne filtry zawartości są wystarczające dla większości potrzeb dotyczących con tryb namiotu ration. Może jednak być konieczne filtrowanie terminów specyficznych dla danego przypadku użycia.
Wymagania wstępne
- Subskrypcja platformy Azure. Utwórz je bezpłatnie.
- Po utworzeniu subskrypcji platformy Azure utwórz zasób usługi Azure OpenAI w witrynie Azure Portal, aby uzyskać token, klucz i punkt końcowy. Wprowadź unikatową nazwę zasobu, wybierz subskrypcję wprowadzoną w formularzu aplikacji, wybierz grupę zasobów, obsługiwany region i obsługiwaną warstwę cenową. Następnie wybierz Utwórz.
- Wdrożenie zasobu trwa kilka minut. Po zakończeniu wybierz pozycję Przejdź do zasobu. W okienku po lewej stronie w obszarze Zarządzanie zasobami wybierz pozycję Klucz subskrypcji i punkt końcowy. Punkt końcowy i jeden z kluczy są używane do wywoływania interfejsów API.
- Zainstalowany interfejs wiersza polecenia platformy Azure.
- Zainstalowano bibliotekę cURL
Korzystanie z list blokowych
Listy blokowe można tworzyć za pomocą interfejsu API usługi Azure OpenAI. Poniższe kroki ułatwiają rozpoczęcie pracy.
Uzyskiwanie tokenu
Najpierw musisz uzyskać token umożliwiający uzyskanie dostępu do interfejsów API na potrzeby tworzenia, edytowania i usuwania list zablokowanych. Ten token można uzyskać przy użyciu następującego polecenia interfejsu wiersza polecenia platformy Azure:
az account get-access-token
Tworzenie lub modyfikowanie listy zablokowanych
Skopiuj poniższe polecenie cURL do edytora tekstów i wprowadź następujące zmiany:
- Zastąp ciąg {subscriptionId} identyfikatorem subskrypcji.
- Zastąp ciąg {resourceGroupName} nazwą grupy zasobów.
- Zastąp ciąg {accountName} nazwą zasobu.
- Zastąp ciąg {raiBlocklistName} (w adresie URL) nazwą niestandardową listy. Dozwolone znaki:
0-9, A-Z, a-z, - . _ ~
. - Zastąp element {token} tokenem uzyskanym z powyższego kroku "Pobierz token".
- Opcjonalnie zastąp wartość pola "description" opisem niestandardowym.
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"
}
}'
Kod odpowiedzi powinien być 201
(utworzona nowa lista) lub 200
(zaktualizowana istniejąca lista).
Stosowanie listy zablokowanych do filtru zawartości
Jeśli nie utworzono jeszcze filtru zawartości, możesz to zrobić w usłudze Azure AI Foundry. Zobacz Filtrowanie zawartości.
Aby zastosować listę bloków uzupełniania do filtru zawartości, użyj następującego polecenia cURL:
- Zastąp ciąg {subscriptionId} identyfikatorem podrzędnym.
- Zastąp ciąg {resourceGroupName} nazwą grupy zasobów.
- Zastąp ciąg {accountName} nazwą zasobu.
- Zastąp element {raiPolicyName} nazwą filtru zawartości
- Zastąp element {token} tokenem uzyskanym z powyższego kroku "Pobierz token".
- Opcjonalnie zmień tytuł na
"completionBlocklists"
"promptBlocklists"
, jeśli chcesz, aby lista zablokowanych miała być stosowana do monitów użytkownika zamiast uzupełniania modelu sztucznej inteligencji. - Zastąp
"raiBlocklistName"
element w treści nazwą niestandardową listy. Dozwolone znaki: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": [ ]
}
}'
Dodawanie elementów blockItems do listy
Uwaga
Istnieje maksymalny limit wynoszący 10 000 terminów dozwolonych na jednej liście.
Skopiuj poniższe polecenie cURL do edytora tekstów i wprowadź następujące zmiany:
- Zastąp ciąg {subscriptionId} identyfikatorem podrzędnym.
- Zastąp ciąg {resourceGroupName} nazwą grupy zasobów.
- Zastąp ciąg {accountName} nazwą zasobu.
- Zastąp ciąg {raiBlocklistName} (w adresie URL) nazwą niestandardową listy. Dozwolone znaki:
0-9, A-Z, a-z, - . _ ~
. - Zastąp element {raiBlocklistItemName} niestandardową nazwą elementu listy.
- Zastąp element {token} tokenem uzyskanym z powyższego kroku "Pobierz token".
- Zastąp wartość
"blocking pattern"
pola elementem, który chcesz dodać do listy zablokowanych. Maksymalna długość bloku to 1000 znaków. Określ również, czy wzorzec jest regularny, czy dokładny.
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
}
}'
Uwaga
Dodanie nowego terminu do listy zablokowanych może potrwać około 5 minut. Przetestuj po 5 minutach.
Kod odpowiedzi powinien mieć wartość 200
.
{
"name": "raiBlocklistItemName",
"id": "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.CognitiveServices/accounts/accountName/raiBlocklists/raiBlocklistName/raiBlocklistItems/raiBlocklistItemName",
"properties": {
"pattern": "blocking pattern",
"isRegex": false
}
}
Analizowanie tekstu przy użyciu listy zablokowanych
Teraz możesz przetestować wdrożenie z listą zablokowanych. Aby uzyskać instrukcje dotyczące wywoływania punktów końcowych usługi Azure OpenAI, odwiedź przewodnik Szybki start.
W poniższym przykładzie wdrożenie GPT-35-Turbo z listą zablokowanych blokuje monit. Odpowiedź zwraca 400
błąd.
{
"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"
}
}
}
}
}
Jeśli samo ukończenie jest zablokowane, odpowiedź zwraca wartość 200
, ponieważ ukończenie jest odcinane tylko wtedy, gdy zawartość listy zablokowanych jest zgodna. Adnotacje pokazują, że lista zablokowanych została dopasowana.
{
"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
}
}
Następne kroki
Dowiedz się więcej o praktykach dotyczących odpowiedzialnej sztucznej inteligencji dla usługi Azure OpenAI: omówienie praktyk dotyczących odpowiedzialnej sztucznej inteligencji dla modeli azure OpenAI.
Przeczytaj więcej na temat kategorii filtrowania zawartości i poziomów ważności w usłudze Azure OpenAI Service.
Dowiedz się więcej na temat red teaming from our: Introduction to red teaming large language models (LLMs) (Wprowadzenie do tworzenia zespołu red teaming large language models, LLMs).