Dela via


Så här konfigurerar du innehållsfilter för modeller i Azure AI Foundry

Innehållsfiltreringssystemet som är integrerat i Azure AI Foundry körs tillsammans med Azure AI Foundry Models. Den använder en ensemble av klassificeringsmodeller i flera klasser för att upptäcka fyra kategorier av skadligt innehåll (våld, hat, sexuellt och självskadebeteende) på fyra allvarlighetsnivåer (säkra, låga, medelstora och höga). Den erbjuder valfria binära klassificerare för att identifiera risk för jailbreak, befintlig text och kod i offentliga lagringsplatser. Mer information om innehållskategorier, allvarlighetsnivåer och beteendet för innehållsfiltreringssystemet finns i följande artikel.

Standardkonfigurationen för innehållsfiltrering filtrerar innehåll med tröskelvärdet med medelhög allvarlighetsgrad för alla fyra skadliga kategorier för både prompter och slutföranden. Innehåll som identifieras på medelhög eller hög allvarlighetsgrad filtreras bort, medan innehåll som identifieras på låg eller säker allvarlighetsnivå inte filtreras.

Du kan konfigurera innehållsfilter på resursnivå och associera dem med en eller flera distributioner.

Förutsättningar

För att slutföra den här artikeln behöver du:

Skapa ett anpassat innehållsfilter

Följ dessa steg för att skapa ett anpassat innehållsfilter:

  1. Gå till Azure AI Foundry-portalen.

  2. Välj Skyddsräcken och kontroller i den vänstra rutan.

  3. Välj fliken Innehållsfilter och välj sedan Skapa innehållsfilter.

  4. På sidan Grundläggande information anger du ett namn för innehållsfiltret.

  5. För Anslutning väljer du anslutningen till Azure AI Services-resursen som är ansluten till projektet.

  6. Välj Nästa för att gå till sidan Indatafilter .

  7. Konfigurera indatafiltret beroende på dina krav. Den här konfigurationen tillämpas innan begäran når själva modellen.

  8. Välj Nästa för att gå till sidan Utdatafilter .

  9. Konfigurera utdatafiltret beroende på dina krav. Den här konfigurationen tillämpas när modellen har körts och innehållet genereras.

  10. Välj Nästa för att gå till sidan Anslutning .

  11. På den här sidan har du möjlighet att associera modelldistributioner med det skapade innehållsfiltret. Du kan när som helst ändra de associerade modelldistributionerna.

  12. Välj Nästa för att granska filterinställningarna. Välj sedan Skapa filter.

  13. När distributionen är klar tillämpas det nya innehållsfiltret på modelldistributionen.

Konto för innehållsfiltrering i koden

När du tillämpar innehållsfiltrering på modelldistributionen kan tjänsten fånga upp begäranden baserat på indata och utdata. Om ett innehållsfilter utlöses returnerar tjänsten en 400-felkod med en beskrivning av regeln som utlöste felet.

Installera paketet azure-ai-inference med hjälp av pakethanteraren, till exempel pip:

pip install azure-ai-inference

Sedan kan du använda paketet för att konsumera modellen. I följande exempel visas hur du skapar en klient för att hantera chattavslut:

import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential

client = ChatCompletionsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
)

Utforska våra exempel och läs API-referensdokumentationen för att komma igång.

I följande exempel visas svaret för en begäran om chattslutförande som har utlöst skyddsräcken och kontroller.

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

Följ metodtipsen

För att åtgärda potentiella skador som är relevanta för en specifik modell, ett program och distributionsscenario använder du en iterativ identifieringsprocess (till exempel red team-testning, stresstestning och analys) och en mätningsprocess för att informera dina beslut om konfiguration av innehållsfiltrering. När du har implementerat åtgärder som innehållsfiltrering upprepar du mätningen för att testa effektiviteten.

Rekommendationer och metodtips för ansvarsfull AI för Azure OpenAI, som baseras på Microsoft Responsible AI Standard, finns i Översikt över ansvarsfull AI för Azure OpenAI.

Innehållsfiltreringssystemet som är integrerat i Azure AI Foundry körs tillsammans med Azure AI Foundry Models. Den använder en ensemble av klassificeringsmodeller i flera klasser för att upptäcka fyra kategorier av skadligt innehåll (våld, hat, sexuellt och självskadebeteende) på fyra allvarlighetsnivåer (säkra, låga, medelstora och höga). Den erbjuder valfria binära klassificerare för att identifiera risk för jailbreak, befintlig text och kod i offentliga lagringsplatser. Mer information om innehållskategorier, allvarlighetsnivåer och beteendet för innehållsfiltreringssystemet finns i följande artikel.

Standardkonfigurationen för innehållsfiltrering filtrerar innehåll med tröskelvärdet med medelhög allvarlighetsgrad för alla fyra skadliga kategorier för både prompter och slutföranden. Innehåll som identifieras på medelhög eller hög allvarlighetsgrad filtreras bort, medan innehåll som identifieras på låg eller säker allvarlighetsnivå inte filtreras.

Du kan konfigurera innehållsfilter på resursnivå och associera dem med en eller flera distributioner.

Förutsättningar

För att slutföra den här artikeln behöver du:

Lägga till en modelldistribution med anpassad innehållsfiltrering

Vi rekommenderar att du skapar innehållsfilter med antingen Azure AI Foundry-portalen eller i kod med hjälp av Bicep. Det går inte att skapa anpassade innehållsfilter eller tillämpa dem på distributioner med hjälp av Azure CLI.

Konto för innehållsfiltrering i koden

När du tillämpar innehållsfiltrering på modelldistributionen kan tjänsten fånga upp begäranden baserat på indata och utdata. Om ett innehållsfilter utlöses returnerar tjänsten en 400-felkod med en beskrivning av regeln som utlöste felet.

Installera paketet azure-ai-inference med hjälp av pakethanteraren, till exempel pip:

pip install azure-ai-inference

Sedan kan du använda paketet för att konsumera modellen. I följande exempel visas hur du skapar en klient för att hantera chattavslut:

import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential

client = ChatCompletionsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
)

Utforska våra exempel och läs API-referensdokumentationen för att komma igång.

I följande exempel visas svaret för en begäran om chattslutförande som har utlöst skyddsräcken och kontroller.

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

Följ metodtipsen

För att åtgärda potentiella skador som är relevanta för en specifik modell, ett program och distributionsscenario använder du en iterativ identifieringsprocess (till exempel red team-testning, stresstestning och analys) och en mätningsprocess för att informera dina beslut om konfiguration av innehållsfiltrering. När du har implementerat åtgärder som innehållsfiltrering upprepar du mätningen för att testa effektiviteten.

Rekommendationer och metodtips för ansvarsfull AI för Azure OpenAI, som baseras på Microsoft Responsible AI Standard, finns i Översikt över ansvarsfull AI för Azure OpenAI.

Innehållsfiltreringssystemet som är integrerat i Azure AI Foundry körs tillsammans med Azure AI Foundry Models. Den använder en ensemble av klassificeringsmodeller i flera klasser för att upptäcka fyra kategorier av skadligt innehåll (våld, hat, sexuellt och självskadebeteende) på fyra allvarlighetsnivåer (säkra, låga, medelstora och höga). Den erbjuder valfria binära klassificerare för att identifiera risk för jailbreak, befintlig text och kod i offentliga lagringsplatser. Mer information om innehållskategorier, allvarlighetsnivåer och beteendet för innehållsfiltreringssystemet finns i följande artikel.

Standardkonfigurationen för innehållsfiltrering filtrerar innehåll med tröskelvärdet med medelhög allvarlighetsgrad för alla fyra skadliga kategorier för både prompter och slutföranden. Innehåll som identifieras på medelhög eller hög allvarlighetsgrad filtreras bort, medan innehåll som identifieras på låg eller säker allvarlighetsnivå inte filtreras.

Du kan konfigurera innehållsfilter på resursnivå och associera dem med en eller flera distributioner.

Förutsättningar

För att slutföra den här artikeln behöver du:

  • Installera Azure CLI.

  • Identifiera följande information:

    • ditt prenumerations-ID för Azure

    • Ditt Azure AI Services-resursnamn.

    • Resursgruppen där du distribuerade Azure AI Services-resursen.

    • Modellnamnet, providern, versionen och SKU:n som du vill distribuera. Du kan använda Azure AI Foundry-portalen eller Azure CLI för att hitta den här informationen. I det här exemplet distribuerar du följande modell:

      • Modellnamn:: Phi-4-mini-instruct
      • Provider: Microsoft
      • Version: 1
      • Distributionstyp: Global standard

Lägga till en modelldistribution med anpassad innehållsfiltrering

  1. Använd mallen ai-services-content-filter-template.bicep för att beskriva innehållsfilterprincipen:

    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. Använd mallen ai-services-deployment-template.bicep för att beskriva modelldistributioner:

    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'
      'xAI'
      'Meta'
      'Microsoft'
      'Mistral AI'
      'OpenAI'
    ])
    @description('Model provider')
    param modelPublisherFormat string
    
    @allowed([
        'GlobalStandard'
        'DataZoneStandard'
        '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. Skapa huvuddistributionsdefinitionen:

    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. Kör utrullningen:

    RESOURCE_GROUP="<resource-group-name>"
    ACCOUNT_NAME="<azure-ai-model-inference-name>" 
    MODEL_NAME="Phi-4-mini-instruct"
    PROVIDER="Microsoft"
    VERSION=1
    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 för innehållsfiltrering i koden

När du tillämpar innehållsfiltrering på modelldistributionen kan tjänsten fånga upp begäranden baserat på indata och utdata. Om ett innehållsfilter utlöses returnerar tjänsten en 400-felkod med en beskrivning av regeln som utlöste felet.

Installera paketet azure-ai-inference med hjälp av pakethanteraren, till exempel pip:

pip install azure-ai-inference

Sedan kan du använda paketet för att konsumera modellen. I följande exempel visas hur du skapar en klient för att hantera chattavslut:

import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential

client = ChatCompletionsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
)

Utforska våra exempel och läs API-referensdokumentationen för att komma igång.

I följande exempel visas svaret för en begäran om chattslutförande som har utlöst skyddsräcken och kontroller.

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

Följ metodtipsen

För att åtgärda potentiella skador som är relevanta för en specifik modell, ett program och distributionsscenario använder du en iterativ identifieringsprocess (till exempel red team-testning, stresstestning och analys) och en mätningsprocess för att informera dina beslut om konfiguration av innehållsfiltrering. När du har implementerat åtgärder som innehållsfiltrering upprepar du mätningen för att testa effektiviteten.

Rekommendationer och metodtips för ansvarsfull AI för Azure OpenAI, som baseras på Microsoft Responsible AI Standard, finns i Översikt över ansvarsfull AI för Azure OpenAI.