Jak skonfigurować filtry zawartości (wersja zapoznawcza) dla modeli w usługach Azure AI
Ważne
Elementy oznaczone (wersja zapoznawcza) w tym artykule są obecnie dostępne w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.
System filtrowania zawartości zintegrowany z usługami Azure AI Services działa wraz z podstawowymi modelami. Używa ona zespołu wieloklasowych modeli klasyfikacji do wykrywania czterech kategorii szkodliwych treści (przemoc, nienawiść, seks i samookaleczenia) odpowiednio na czterech poziomach ważności (bezpieczne, niskie, średnie i wysokie). Oferuje opcjonalne klasyfikatory binarne do wykrywania ryzyka jailbreak, istniejącego tekstu i kodu w repozytoriach publicznych. Dowiedz się więcej o kategoriach zawartości, poziomach ważności i zachowaniu systemu filtrowania zawartości w następującym artykule
Domyślna konfiguracja filtrowania zawartości jest ustawiona tak, aby filtrować według średniej ważności progowej dla wszystkich czterech kategorii szkody zawartości dla monitów i uzupełniania. W związku z tym zawartość wykryta na średnim lub wysokim poziomie ważności jest filtrowana, podczas gdy zawartość wykryta na niskim lub bezpiecznym poziomie ważności nie jest filtrowana.
Filtry zawartości można skonfigurować na poziomie zasobu i skojarzyć z co najmniej jednym wdrożeniem.
Wymagania wstępne
Aby ukończyć pracę z tym artykułem, potrzebne są następujące zasoby:
Subskrypcja Azure. Jeśli używasz modeli Usługi GitHub, możesz uaktualnić środowisko i utworzyć subskrypcję platformy Azure w tym procesie. Przeczytaj artykuł Upgrade from GitHub Models to Azure AI model inference if it's your case (Uaktualnianie modeli Usługi GitHub do wnioskowania modelu AI platformy Azure), jeśli tak jest.
Zasób usług AI platformy Azure. Aby uzyskać więcej informacji, zobacz Create an Azure AI Services resource (Tworzenie zasobu usług Azure AI Services).
- Projekt sztucznej inteligencji połączony z zasobem usług Azure AI Services. Wykonaj kroki opisane w temacie Konfigurowanie usługi wnioskowania modelu AI platformy Azure w moim projekcie w rozwiązaniu Azure AI Foundry.
Tworzenie niestandardowego filtru zawartości
Wykonaj następujące kroki, aby utworzyć niestandardowy filtr zawartości:
Przejdź do portalu usługi Azure AI Foundry.
Wybierz pozycję Bezpieczeństwo i zabezpieczenia.
Wybierz kartę Filtry zawartości, a następnie wybierz pozycję Utwórz filtr zawartości.
W obszarze Podstawowe informacje nadaj filtrowi zawartości nazwę.
W obszarze Połączenie wybierz połączenie z zasobem usług Azure AI Services połączonym z projektem.
W obszarze Filtr wejściowy skonfiguruj filtr w zależności od wymagań. Ta konfiguracja jest stosowana przed dotarciem żądania do samego modelu.
W obszarze Filtr danych wyjściowych skonfiguruj filtr w zależności od wymagań. Ta konfiguracja jest stosowana po wykonaniu modelu i wygenerowaniu zawartości.
Wybierz Dalej.
Opcjonalnie można skojarzyć dane wdrożenie z utworzonym filtrem zawartości. Wdrożenia modelu można zmienić w dowolnym momencie.
Po zakończeniu wdrażania nowy filtr zawartości zostanie zastosowany do wdrożenia modelu.
Konto do filtrowania zawartości w kodzie
Po zastosowaniu filtrowania zawartości do wdrożenia modelu żądania mogą być przechwytywane przez usługę w zależności od danych wejściowych i wyjściowych. Po wyzwoleniu filtru zawartości zostanie zwrócony kod błędu 400 z opisem wyzwalanej reguły.
Zainstaluj pakiet azure-ai-inference
przy użyciu menedżera pakietów, takiego jak:
pip install azure-ai-inference>=1.0.0b5
Ostrzeżenie
Zasób usług Azure AI Services wymaga wersji azure-ai-inference>=1.0.0b5
języka Python.
Następnie możesz użyć pakietu do korzystania z modelu. W poniższym przykładzie pokazano, jak utworzyć klienta w celu korzystania z uzupełniania czatu:
import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential
model = ChatCompletionsClient(
endpoint="https://<resource>.services.ai.azure.com/models",
credential=AzureKeyCredential(os.environ["AZUREAI_ENDPOINT_KEY"]),
)
Zapoznaj się z naszymi przykładami i przeczytaj dokumentację referencyjną interfejsu API, aby rozpocząć pracę.
Poniższy przykład przedstawia odpowiedź na żądanie ukończenia czatu, które wyzwoliło bezpieczeństwo zawartości.
from azure.ai.inference.models import AssistantMessage, UserMessage, SystemMessage
from azure.core.exceptions import HttpResponseError
try:
response = model.complete(
messages=[
SystemMessage(content="You are an AI assistant that helps people find information."),
UserMessage(content="Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."),
]
)
print(response.choices[0].message.content)
except HttpResponseError as ex:
if ex.status_code == 400:
response = json.loads(ex.response._content.decode('utf-8'))
if isinstance(response, dict) and "error" in response:
print(f"Your request triggered an {response['error']['code']} error:\n\t {response['error']['message']}")
else:
raise ex
else:
raise ex
Postępuj zgodnie z najlepszymi rozwiązaniami
Zalecamy informowanie o decyzjach dotyczących konfiguracji filtrowania zawartości za pomocą iteracyjnej identyfikacji (na przykład testowania czerwonego zespołu, testowania obciążenia i analizy) oraz procesu pomiaru w celu rozwiązania potencjalnych szkód, które są istotne dla konkretnego modelu, aplikacji i scenariusza wdrażania. Po zaimplementowaniu środków zaradczych, takich jak filtrowanie zawartości, powtórz pomiar w celu przetestowania skuteczności.
Rekomendacje i najlepsze rozwiązania dotyczące odpowiedzialnej sztucznej inteligencji dla usługi Azure OpenAI, zakorzenione w standardzie Odpowiedzialnej sztucznej inteligencji firmy Microsoft, można znaleźć w temacie Odpowiedzialne używanie sztucznej inteligencji — omówienie usługi Azure OpenAI.
Ważne
Elementy oznaczone (wersja zapoznawcza) w tym artykule są obecnie dostępne w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.
System filtrowania zawartości zintegrowany z usługami Azure AI Services działa wraz z podstawowymi modelami. Używa ona zespołu wieloklasowych modeli klasyfikacji do wykrywania czterech kategorii szkodliwych treści (przemoc, nienawiść, seks i samookaleczenia) odpowiednio na czterech poziomach ważności (bezpieczne, niskie, średnie i wysokie). Oferuje opcjonalne klasyfikatory binarne do wykrywania ryzyka jailbreak, istniejącego tekstu i kodu w repozytoriach publicznych. Dowiedz się więcej o kategoriach zawartości, poziomach ważności i zachowaniu systemu filtrowania zawartości w następującym artykule
Domyślna konfiguracja filtrowania zawartości jest ustawiona tak, aby filtrować według średniej ważności progowej dla wszystkich czterech kategorii szkody zawartości dla monitów i uzupełniania. W związku z tym zawartość wykryta na średnim lub wysokim poziomie ważności jest filtrowana, podczas gdy zawartość wykryta na niskim lub bezpiecznym poziomie ważności nie jest filtrowana.
Filtry zawartości można skonfigurować na poziomie zasobu i skojarzyć z co najmniej jednym wdrożeniem.
Wymagania wstępne
Aby ukończyć pracę z tym artykułem, potrzebne są następujące zasoby:
Subskrypcja Azure. Jeśli używasz modeli Usługi GitHub, możesz uaktualnić środowisko i utworzyć subskrypcję platformy Azure w tym procesie. Przeczytaj artykuł Upgrade from GitHub Models to Azure AI model inference if it's your case (Uaktualnianie modeli Usługi GitHub do wnioskowania modelu AI platformy Azure), jeśli tak jest.
Zasób usług AI platformy Azure. Aby uzyskać więcej informacji, zobacz Create an Azure AI Services resource (Tworzenie zasobu usług Azure AI Services).
Dodawanie wdrożenia modelu z niestandardowym filtrowaniem zawartości
Zalecamy tworzenie filtrów zawartości przy użyciu portalu Azure AI Foundry lub w kodzie przy użyciu Bicep. Tworzenie niestandardowych filtrów zawartości lub stosowanie ich do wdrożeń nie jest obsługiwane przy użyciu interfejsu wiersza polecenia platformy Azure.
Konto do filtrowania zawartości w kodzie
Po zastosowaniu filtrowania zawartości do wdrożenia modelu żądania mogą być przechwytywane przez usługę w zależności od danych wejściowych i wyjściowych. Po wyzwoleniu filtru zawartości zostanie zwrócony kod błędu 400 z opisem wyzwalanej reguły.
Zainstaluj pakiet azure-ai-inference
przy użyciu menedżera pakietów, takiego jak:
pip install azure-ai-inference>=1.0.0b5
Ostrzeżenie
Zasób usług Azure AI Services wymaga wersji azure-ai-inference>=1.0.0b5
języka Python.
Następnie możesz użyć pakietu do korzystania z modelu. W poniższym przykładzie pokazano, jak utworzyć klienta w celu korzystania z uzupełniania czatu:
import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential
model = ChatCompletionsClient(
endpoint="https://<resource>.services.ai.azure.com/models",
credential=AzureKeyCredential(os.environ["AZUREAI_ENDPOINT_KEY"]),
)
Zapoznaj się z naszymi przykładami i przeczytaj dokumentację referencyjną interfejsu API, aby rozpocząć pracę.
Poniższy przykład przedstawia odpowiedź na żądanie ukończenia czatu, które wyzwoliło bezpieczeństwo zawartości.
from azure.ai.inference.models import AssistantMessage, UserMessage, SystemMessage
from azure.core.exceptions import HttpResponseError
try:
response = model.complete(
messages=[
SystemMessage(content="You are an AI assistant that helps people find information."),
UserMessage(content="Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."),
]
)
print(response.choices[0].message.content)
except HttpResponseError as ex:
if ex.status_code == 400:
response = json.loads(ex.response._content.decode('utf-8'))
if isinstance(response, dict) and "error" in response:
print(f"Your request triggered an {response['error']['code']} error:\n\t {response['error']['message']}")
else:
raise ex
else:
raise ex
Postępuj zgodnie z najlepszymi rozwiązaniami
Zalecamy informowanie o decyzjach dotyczących konfiguracji filtrowania zawartości za pomocą iteracyjnej identyfikacji (na przykład testowania czerwonego zespołu, testowania obciążenia i analizy) oraz procesu pomiaru w celu rozwiązania potencjalnych szkód, które są istotne dla konkretnego modelu, aplikacji i scenariusza wdrażania. Po zaimplementowaniu środków zaradczych, takich jak filtrowanie zawartości, powtórz pomiar w celu przetestowania skuteczności.
Rekomendacje i najlepsze rozwiązania dotyczące odpowiedzialnej sztucznej inteligencji dla usługi Azure OpenAI, zakorzenione w standardzie Odpowiedzialnej sztucznej inteligencji firmy Microsoft, można znaleźć w temacie Odpowiedzialne używanie sztucznej inteligencji — omówienie usługi Azure OpenAI.
Ważne
Elementy oznaczone (wersja zapoznawcza) w tym artykule są obecnie dostępne w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.
System filtrowania zawartości zintegrowany z usługami Azure AI Services działa wraz z podstawowymi modelami. Używa ona zespołu wieloklasowych modeli klasyfikacji do wykrywania czterech kategorii szkodliwych treści (przemoc, nienawiść, seks i samookaleczenia) odpowiednio na czterech poziomach ważności (bezpieczne, niskie, średnie i wysokie). Oferuje opcjonalne klasyfikatory binarne do wykrywania ryzyka jailbreak, istniejącego tekstu i kodu w repozytoriach publicznych. Dowiedz się więcej o kategoriach zawartości, poziomach ważności i zachowaniu systemu filtrowania zawartości w następującym artykule
Domyślna konfiguracja filtrowania zawartości jest ustawiona tak, aby filtrować według średniej ważności progowej dla wszystkich czterech kategorii szkody zawartości dla monitów i uzupełniania. W związku z tym zawartość wykryta na średnim lub wysokim poziomie ważności jest filtrowana, podczas gdy zawartość wykryta na niskim lub bezpiecznym poziomie ważności nie jest filtrowana.
Filtry zawartości można skonfigurować na poziomie zasobu i skojarzyć z co najmniej jednym wdrożeniem.
Wymagania wstępne
Aby ukończyć pracę z tym artykułem, potrzebne są następujące zasoby:
Subskrypcja Azure. Jeśli używasz modeli Usługi GitHub, możesz uaktualnić środowisko i utworzyć subskrypcję platformy Azure w tym procesie. Przeczytaj artykuł Upgrade from GitHub Models to Azure AI model inference if it's your case (Uaktualnianie modeli Usługi GitHub do wnioskowania modelu AI platformy Azure), jeśli tak jest.
Zasób usług AI platformy Azure. Aby uzyskać więcej informacji, zobacz Create an Azure AI Services resource (Tworzenie zasobu usług Azure AI Services).
Zainstaluj interfejs wiersza polecenia platformy Azure.
Zidentyfikuj następujące informacje:
Identyfikator subskrypcji platformy Azure.
Nazwa zasobu usług Azure AI Services.
Grupa zasobów, w której wdrożono zasób usług Azure AI Services.
Nazwa modelu, dostawca, wersja i jednostka SKU, którą chcesz wdrożyć. Aby go zidentyfikować, możesz użyć portalu azure AI Foundry lub interfejsu wiersza polecenia platformy Azure. W tym przykładzie wdrożymy następujący model:
-
Nazwa modelu::
Phi-3.5-vision-instruct
-
Dostawca:
Microsoft
-
Wersja:
2
- Typ wdrożenia: Globalny standard
-
Nazwa modelu::
Dodawanie wdrożenia modelu z niestandardowym filtrowaniem zawartości
Użyj szablonu
ai-services-content-filter-template.bicep
, aby opisać zasady filtrowania zawartości:ai-services-content-filter-template.bicep
@description('Name of the Azure AI Services account where the policy will be created') param accountName string @description('Name of the policy to be created') param policyName string @allowed(['Asynchronous_filter', 'Blocking', 'Default', 'Deferred']) param mode string = 'Default' @description('Base policy to be used for the new policy') param basePolicyName string = 'Microsoft.DefaultV2' param contentFilters array = [ { name: 'Violence' severityThreshold: 'Medium' blocking: true enabled: true source: 'Prompt' } { name: 'Hate' severityThreshold: 'Medium' blocking: true enabled: true source: 'Prompt' } { name: 'Sexual' severityThreshold: 'Medium' blocking: true enabled: true source: 'Prompt' } { name: 'Selfharm' severityThreshold: 'Medium' blocking: true enabled: true source: 'Prompt' } { name: 'Jailbreak' blocking: true enabled: true source: 'Prompt' } { name: 'Indirect Attack' blocking: true enabled: true source: 'Prompt' } { name: 'Profanity' blocking: true enabled: true source: 'Prompt' } { name: 'Violence' severityThreshold: 'Medium' blocking: true enabled: true source: 'Completion' } { name: 'Hate' severityThreshold: 'Medium' blocking: true enabled: true source: 'Completion' } { name: 'Sexual' severityThreshold: 'Medium' blocking: true enabled: true source: 'Completion' } { name: 'Selfharm' severityThreshold: 'Medium' blocking: true enabled: true source: 'Completion' } { name: 'Protected Material Text' blocking: true enabled: true source: 'Completion' } { name: 'Protected Material Code' blocking: false enabled: true source: 'Completion' } { name: 'Profanity' blocking: true enabled: true source: 'Completion' } ] resource raiPolicy 'Microsoft.CognitiveServices/accounts/raiPolicies@2024-06-01-preview' = { name: '${accountName}/${policyName}' properties: { mode: mode basePolicyName: basePolicyName contentFilters: contentFilters } }
Użyj szablonu
ai-services-deployment-template.bicep
, aby opisać wdrożenia modelu:ai-services-deployment-template.bicep
@description('Name of the Azure AI services account') param accountName string @description('Name of the model to deploy') param modelName string @description('Version of the model to deploy') param modelVersion string @allowed([ 'AI21 Labs' 'Cohere' 'Core42' 'DeepSeek' 'Meta' 'Microsoft' 'Mistral AI' 'OpenAI' ]) @description('Model provider') param modelPublisherFormat string @allowed([ 'GlobalStandard' 'Standard' 'GlobalProvisioned' 'Provisioned' ]) @description('Model deployment SKU name') param skuName string = 'GlobalStandard' @description('Content filter policy name') param contentFilterPolicyName string = 'Microsoft.DefaultV2' @description('Model deployment capacity') param capacity int = 1 resource modelDeployment 'Microsoft.CognitiveServices/accounts/deployments@2024-04-01-preview' = { name: '${accountName}/${modelName}' sku: { name: skuName capacity: capacity } properties: { model: { format: modelPublisherFormat name: modelName version: modelVersion } raiPolicyName: contentFilterPolicyName == null ? 'Microsoft.Nill' : contentFilterPolicyName } }
Utwórz główną definicję wdrożenia:
main.bicep
param accountName string param modelName string param modelVersion string param modelPublisherFormat string param contentFilterPolicyName string module raiPolicy 'ai-services-content-filter-template.bicep' = { name: 'raiPolicy' scope: resourceGroup(resourceGroupName) params: { accountName: accountName policyName: contentFilterPolicyName } } module modelDeployment 'ai-services-deployment-template.bicep' = { name: 'modelDeployment' scope: resourceGroup(resourceGroupName) params: { accountName: accountName modelName: modelName modelVersion: modelVersion modelPublisherFormat: modelPublisherFormat contentFilterPolicyName: contentFilterPolicyName } dependsOn: [ raiPolicy ] }
Uruchom wdrożenie:
RESOURCE_GROUP="<resource-group-name>" ACCOUNT_NAME="<azure-ai-model-inference-name>" MODEL_NAME="Phi-3.5-vision-instruct" PROVIDER="Microsoft" VERSION=2 RAI_POLICY_NAME="custom-policy" az deployment group create \ --resource-group $RESOURCE_GROUP \ --template-file main.bicep \ --parameters accountName=$ACCOUNT_NAME raiPolicyName=$RAI_POLICY_NAME modelName=$MODEL_NAME modelVersion=$VERSION modelPublisherFormat=$PROVIDER
Konto do filtrowania zawartości w kodzie
Po zastosowaniu filtrowania zawartości do wdrożenia modelu żądania mogą być przechwytywane przez usługę w zależności od danych wejściowych i wyjściowych. Po wyzwoleniu filtru zawartości zostanie zwrócony kod błędu 400 z opisem wyzwalanej reguły.
Zainstaluj pakiet azure-ai-inference
przy użyciu menedżera pakietów, takiego jak:
pip install azure-ai-inference>=1.0.0b5
Ostrzeżenie
Zasób usług Azure AI Services wymaga wersji azure-ai-inference>=1.0.0b5
języka Python.
Następnie możesz użyć pakietu do korzystania z modelu. W poniższym przykładzie pokazano, jak utworzyć klienta w celu korzystania z uzupełniania czatu:
import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential
model = ChatCompletionsClient(
endpoint="https://<resource>.services.ai.azure.com/models",
credential=AzureKeyCredential(os.environ["AZUREAI_ENDPOINT_KEY"]),
)
Zapoznaj się z naszymi przykładami i przeczytaj dokumentację referencyjną interfejsu API, aby rozpocząć pracę.
Poniższy przykład przedstawia odpowiedź na żądanie ukończenia czatu, które wyzwoliło bezpieczeństwo zawartości.
from azure.ai.inference.models import AssistantMessage, UserMessage, SystemMessage
from azure.core.exceptions import HttpResponseError
try:
response = model.complete(
messages=[
SystemMessage(content="You are an AI assistant that helps people find information."),
UserMessage(content="Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."),
]
)
print(response.choices[0].message.content)
except HttpResponseError as ex:
if ex.status_code == 400:
response = json.loads(ex.response._content.decode('utf-8'))
if isinstance(response, dict) and "error" in response:
print(f"Your request triggered an {response['error']['code']} error:\n\t {response['error']['message']}")
else:
raise ex
else:
raise ex
Postępuj zgodnie z najlepszymi rozwiązaniami
Zalecamy informowanie o decyzjach dotyczących konfiguracji filtrowania zawartości za pomocą iteracyjnej identyfikacji (na przykład testowania czerwonego zespołu, testowania obciążenia i analizy) oraz procesu pomiaru w celu rozwiązania potencjalnych szkód, które są istotne dla konkretnego modelu, aplikacji i scenariusza wdrażania. Po zaimplementowaniu środków zaradczych, takich jak filtrowanie zawartości, powtórz pomiar w celu przetestowania skuteczności.
Rekomendacje i najlepsze rozwiązania dotyczące odpowiedzialnej sztucznej inteligencji dla usługi Azure OpenAI, zakorzenione w standardzie Odpowiedzialnej sztucznej inteligencji firmy Microsoft, można znaleźć w temacie Odpowiedzialne używanie sztucznej inteligencji — omówienie usługi Azure OpenAI.
Następne kroki
- 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).