Udostępnij za pośrednictwem


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:

Tworzenie niestandardowego filtru zawartości

Wykonaj następujące kroki, aby utworzyć niestandardowy filtr zawartości:

  1. Przejdź do portalu usługi Azure AI Foundry.

  2. Wybierz pozycję Bezpieczeństwo i zabezpieczenia.

  3. Wybierz kartę Filtry zawartości, a następnie wybierz pozycję Utwórz filtr zawartości.

  4. W obszarze Podstawowe informacje nadaj filtrowi zawartości nazwę.

  5. W obszarze Połączenie wybierz połączenie z zasobem usług Azure AI Services połączonym z projektem.

  6. W obszarze Filtr wejściowy skonfiguruj filtr w zależności od wymagań. Ta konfiguracja jest stosowana przed dotarciem żądania do samego modelu.

  7. 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.

  8. Wybierz Dalej.

  9. Opcjonalnie można skojarzyć dane wdrożenie z utworzonym filtrem zawartości. Wdrożenia modelu można zmienić w dowolnym momencie.

  10. 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:

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:

  • 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

Dodawanie wdrożenia modelu z niestandardowym filtrowaniem zawartości

  1. 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
        }
    }
    
  2. 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
      }
    }
    
  3. 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
        ]
    }
    
  4. 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