Delen via


Inhoudsfilters (preview) configureren voor modellen in Azure AI-services

Belangrijk

Items die in dit artikel zijn gemarkeerd (preview) zijn momenteel beschikbaar als openbare preview. Deze preview wordt aangeboden zonder een service level agreement en we raden deze niet aan voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.

Het inhoudsfiltersysteem dat is geïntegreerd in Azure AI Services, wordt naast de kernmodellen uitgevoerd. Het maakt gebruik van een ensemble van classificatiemodellen met meerdere klassen om vier categorieën schadelijke inhoud (geweld, haat, seksueel en zelfbeschadiging) te detecteren op respectievelijk vier ernstniveaus (veilig, laag, gemiddeld en hoog). Het biedt optionele binaire classificaties voor het detecteren van jailbreakrisico's, bestaande tekst en code in openbare opslagplaatsen. Meer informatie over inhoudscategorieën, ernstniveaus en het gedrag van het inhoudsfiltersysteem in het volgende artikel

De standaardconfiguratie voor inhoudsfiltering is ingesteld om te filteren op de drempelwaarde voor gemiddelde ernst voor alle vier de inhoudscategorieën voor zowel prompts als voltooiingen. Daarom wordt inhoud op ernstniveau gemiddeld of hoog gefilterd, terwijl inhoud op ernstniveau laag of veilig niet wordt gefilterd.

Inhoudsfilters kunnen worden geconfigureerd op resourceniveau en gekoppeld aan een of meer implementaties.

Vereisten

U hebt het volgende nodig om dit artikel te voltooien:

Een aangepast inhoudsfilter maken

Volg deze stappen om een aangepast inhoudsfilter te maken:

  1. Ga naar de Azure AI Foundry-portal.

  2. Selecteer Veiligheid en beveiliging.

  3. Selecteer het tabblad Inhoudsfilters en selecteer vervolgens Inhoudsfilter maken.

  4. Geef onder Basisinformatie een naam op voor het inhoudsfilter.

  5. Selecteer onder Verbinding de verbinding met de Azure AI Services-resource die is verbonden met uw project.

  6. Configureer onder Invoerfilter het filter, afhankelijk van uw vereisten. Deze configuratie wordt toegepast voordat de aanvraag het model zelf bereikt.

  7. Configureer onder Uitvoerfilter het filter, afhankelijk van uw vereisten. Deze configuratie wordt toegepast nadat het model is uitgevoerd en inhoud wordt gegenereerd.

  8. Selecteer Volgende.

  9. U kunt eventueel een bepaalde implementatie koppelen aan het gemaakte inhoudsfilter. U kunt de modelimplementaties die op elk gewenst moment zijn gekoppeld, wijzigen.

  10. Zodra de implementatie is voltooid, wordt het nieuwe inhoudsfilter toegepast op de modelimplementatie.

Account voor inhoudsfiltering in uw code

Zodra inhoudsfiltering is toegepast op uw modelimplementatie, kunnen aanvragen worden onderschept door de service, afhankelijk van de invoer en uitvoer. Wanneer een inhoudsfilter wordt geactiveerd, wordt er een 400-foutcode geretourneerd met de beschrijving van de regel die wordt geactiveerd.

Installeer het pakket azure-ai-inference met behulp van uw pakketbeheer, zoals pip:

pip install azure-ai-inference>=1.0.0b5

Waarschuwing

Voor de Azure AI Services-resource is de versie azure-ai-inference>=1.0.0b5 voor Python vereist.

Vervolgens kunt u het pakket gebruiken om het model te gebruiken. In het volgende voorbeeld ziet u hoe u een client maakt om chatvoltooiingen te gebruiken:

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"]),
)

Bekijk onze voorbeelden en lees de API-referentiedocumentatie om aan de slag te gaan.

In het volgende voorbeeld ziet u het antwoord voor een voltooiingsaanvraag voor een chat die de veiligheid van inhoud heeft geactiveerd.

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

Best practices volgen

Het is raadzaam om uw beslissingen over de configuratie van inhoudsfilters te informeren via een iteratieve identificatie (bijvoorbeeld het testen van rode teams, stresstests en analyse) en het meetproces om de mogelijke schade aan te pakken die relevant zijn voor een specifiek model, toepassing en implementatiescenario. Nadat u oplossingen zoals inhoudsfiltering hebt geïmplementeerd, herhaalt u de meting om de effectiviteit te testen.

Aanbevelingen en best practices voor verantwoordelijke AI voor Azure OpenAI, op basis van microsoft Responsible AI Standard , vindt u in het Overzicht van Verantwoorde AI voor Azure OpenAI.

Belangrijk

Items die in dit artikel zijn gemarkeerd (preview) zijn momenteel beschikbaar als openbare preview. Deze preview wordt aangeboden zonder een service level agreement en we raden deze niet aan voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.

Het inhoudsfiltersysteem dat is geïntegreerd in Azure AI Services, wordt naast de kernmodellen uitgevoerd. Het maakt gebruik van een ensemble van classificatiemodellen met meerdere klassen om vier categorieën schadelijke inhoud (geweld, haat, seksueel en zelfbeschadiging) te detecteren op respectievelijk vier ernstniveaus (veilig, laag, gemiddeld en hoog). Het biedt optionele binaire classificaties voor het detecteren van jailbreakrisico's, bestaande tekst en code in openbare opslagplaatsen. Meer informatie over inhoudscategorieën, ernstniveaus en het gedrag van het inhoudsfiltersysteem in het volgende artikel

De standaardconfiguratie voor inhoudsfiltering is ingesteld om te filteren op de drempelwaarde voor gemiddelde ernst voor alle vier de inhoudscategorieën voor zowel prompts als voltooiingen. Daarom wordt inhoud op ernstniveau gemiddeld of hoog gefilterd, terwijl inhoud op ernstniveau laag of veilig niet wordt gefilterd.

Inhoudsfilters kunnen worden geconfigureerd op resourceniveau en gekoppeld aan een of meer implementaties.

Vereisten

U hebt het volgende nodig om dit artikel te voltooien:

Een modelimplementatie toevoegen met aangepaste inhoudsfiltering

Het is raadzaam om inhoudsfilters te maken met behulp van de Azure AI Foundry-portal of in code met Bicep. Het maken van aangepaste inhoudsfilters of het toepassen op implementaties wordt niet ondersteund met behulp van de Azure CLI.

Account voor inhoudsfiltering in uw code

Zodra inhoudsfiltering is toegepast op uw modelimplementatie, kunnen aanvragen worden onderschept door de service, afhankelijk van de invoer en uitvoer. Wanneer een inhoudsfilter wordt geactiveerd, wordt er een 400-foutcode geretourneerd met de beschrijving van de regel die wordt geactiveerd.

Installeer het pakket azure-ai-inference met behulp van uw pakketbeheer, zoals pip:

pip install azure-ai-inference>=1.0.0b5

Waarschuwing

Voor de Azure AI Services-resource is de versie azure-ai-inference>=1.0.0b5 voor Python vereist.

Vervolgens kunt u het pakket gebruiken om het model te gebruiken. In het volgende voorbeeld ziet u hoe u een client maakt om chatvoltooiingen te gebruiken:

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"]),
)

Bekijk onze voorbeelden en lees de API-referentiedocumentatie om aan de slag te gaan.

In het volgende voorbeeld ziet u het antwoord voor een voltooiingsaanvraag voor een chat die de veiligheid van inhoud heeft geactiveerd.

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

Best practices volgen

Het is raadzaam om uw beslissingen over de configuratie van inhoudsfilters te informeren via een iteratieve identificatie (bijvoorbeeld het testen van rode teams, stresstests en analyse) en het meetproces om de mogelijke schade aan te pakken die relevant zijn voor een specifiek model, toepassing en implementatiescenario. Nadat u oplossingen zoals inhoudsfiltering hebt geïmplementeerd, herhaalt u de meting om de effectiviteit te testen.

Aanbevelingen en best practices voor verantwoordelijke AI voor Azure OpenAI, op basis van microsoft Responsible AI Standard , vindt u in het Overzicht van Verantwoorde AI voor Azure OpenAI.

Belangrijk

Items die in dit artikel zijn gemarkeerd (preview) zijn momenteel beschikbaar als openbare preview. Deze preview wordt aangeboden zonder een service level agreement en we raden deze niet aan voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.

Het inhoudsfiltersysteem dat is geïntegreerd in Azure AI Services, wordt naast de kernmodellen uitgevoerd. Het maakt gebruik van een ensemble van classificatiemodellen met meerdere klassen om vier categorieën schadelijke inhoud (geweld, haat, seksueel en zelfbeschadiging) te detecteren op respectievelijk vier ernstniveaus (veilig, laag, gemiddeld en hoog). Het biedt optionele binaire classificaties voor het detecteren van jailbreakrisico's, bestaande tekst en code in openbare opslagplaatsen. Meer informatie over inhoudscategorieën, ernstniveaus en het gedrag van het inhoudsfiltersysteem in het volgende artikel

De standaardconfiguratie voor inhoudsfiltering is ingesteld om te filteren op de drempelwaarde voor gemiddelde ernst voor alle vier de inhoudscategorieën voor zowel prompts als voltooiingen. Daarom wordt inhoud op ernstniveau gemiddeld of hoog gefilterd, terwijl inhoud op ernstniveau laag of veilig niet wordt gefilterd.

Inhoudsfilters kunnen worden geconfigureerd op resourceniveau en gekoppeld aan een of meer implementaties.

Vereisten

U hebt het volgende nodig om dit artikel te voltooien:

  • Installeer de Azure CLI.

  • Identificeer de volgende informatie:

    • Uw Azure-abonnements-id.

    • De resourcenaam van uw Azure AI Services.

    • De resourcegroep waarin de Azure AI Services-resource wordt geïmplementeerd.

    • De modelnaam, provider, versie en SKU die u wilt implementeren. U kunt de Azure AI Foundry-portal of de Azure CLI gebruiken om deze te identificeren. In dit voorbeeld implementeren we het volgende model:

      • Modelnaam:: Phi-3.5-vision-instruct
      • Provider: Microsoft
      • Versie: 2
      • Implementatietype: Algemene standaard

Een modelimplementatie toevoegen met aangepaste inhoudsfiltering

  1. Gebruik de sjabloon ai-services-content-filter-template.bicep om het inhoudsfilterbeleid te beschrijven:

    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. Gebruik de sjabloon ai-services-deployment-template.bicep om modelimplementaties te beschrijven:

    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. Maak de hoofdimplementatiedefinitie:

    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. Voer de implementatie uit:

    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
    

Account voor inhoudsfiltering in uw code

Zodra inhoudsfiltering is toegepast op uw modelimplementatie, kunnen aanvragen worden onderschept door de service, afhankelijk van de invoer en uitvoer. Wanneer een inhoudsfilter wordt geactiveerd, wordt er een 400-foutcode geretourneerd met de beschrijving van de regel die wordt geactiveerd.

Installeer het pakket azure-ai-inference met behulp van uw pakketbeheer, zoals pip:

pip install azure-ai-inference>=1.0.0b5

Waarschuwing

Voor de Azure AI Services-resource is de versie azure-ai-inference>=1.0.0b5 voor Python vereist.

Vervolgens kunt u het pakket gebruiken om het model te gebruiken. In het volgende voorbeeld ziet u hoe u een client maakt om chatvoltooiingen te gebruiken:

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"]),
)

Bekijk onze voorbeelden en lees de API-referentiedocumentatie om aan de slag te gaan.

In het volgende voorbeeld ziet u het antwoord voor een voltooiingsaanvraag voor een chat die de veiligheid van inhoud heeft geactiveerd.

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

Best practices volgen

Het is raadzaam om uw beslissingen over de configuratie van inhoudsfilters te informeren via een iteratieve identificatie (bijvoorbeeld het testen van rode teams, stresstests en analyse) en het meetproces om de mogelijke schade aan te pakken die relevant zijn voor een specifiek model, toepassing en implementatiescenario. Nadat u oplossingen zoals inhoudsfiltering hebt geïmplementeerd, herhaalt u de meting om de effectiviteit te testen.

Aanbevelingen en best practices voor verantwoordelijke AI voor Azure OpenAI, op basis van microsoft Responsible AI Standard , vindt u in het Overzicht van Verantwoorde AI voor Azure OpenAI.

Volgende stappen