Sdílet prostřednictvím


Konfigurace filtrů obsahu (Preview) pro modely ve službách Azure AI

Důležité

Položky označené (Preview) v tomto článku jsou aktuálně ve verzi Public Preview. Tato verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučujeme ji pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.

Systém filtrování obsahu integrovaný do služeb Azure AI se spouští společně s základními modely. Používá soubor klasifikačních modelů s více třídami k detekci čtyř kategorií škodlivého obsahu (násilí, nenávist, sexuální a sebepoškozování) na čtyřech úrovních závažnosti (bezpečné, nízké, střední a vysoké). Nabízí volitelné binární klasifikátory pro detekci rizika jailbreaku, existujícího textu a kódu ve veřejných úložištích. Další informace o kategoriích obsahu, úrovních závažnosti a chování systému filtrování obsahu najdete v následujícím článku.

Výchozí konfigurace filtrování obsahu je nastavená tak, aby filtrovat na střední prahovou hodnotu závažnosti pro všechny čtyři kategorie škodí obsahu pro výzvy i dokončení. Proto se obsah zjištěný na úrovni závažnosti střední nebo vysoké filtruje, zatímco obsah zjištěný na úrovni závažnosti nízký nebo bezpečný není filtrovaný.

Filtry obsahu je možné nakonfigurovat na úrovni prostředku a přidružit k jednomu nebo více nasazením.

Požadavky

K dokončení tohoto článku potřebujete:

Vytvoření vlastního filtru obsahu

Pomocí následujícího postupu vytvořte vlastní filtr obsahu:

  1. Přejděte na portál Azure AI Foundry.

  2. Vyberte Bezpečnost a zabezpečení.

  3. Vyberte kartu Filtry obsahu a pak vyberte Vytvořit filtr obsahu.

  4. V části Základní informace zadejte název filtru obsahu.

  5. V části Připojení vyberte připojení k prostředku azure AI Services , který je připojený k vašemu projektu.

  6. V části Vstupní filtr nakonfigurujte filtr v závislosti na vašich požadavcích. Tato konfigurace se použije před tím, než požadavek dosáhne samotného modelu.

  7. V části Výstupní filtr nakonfigurujte filtr v závislosti na vašich požadavcích. Tato konfigurace se použije po spuštění modelu a vygenerování obsahu.

  8. Vyberte Další.

  9. Volitelně můžete dané nasazení přidružit k vytvořenému filtru obsahu. Nasazení modelu, která jsou přidružená, můžete kdykoli změnit.

  10. Po dokončení nasazení se na nasazení modelu použije nový filtr obsahu.

Účet pro filtrování obsahu v kódu

Jakmile se na nasazení modelu použije filtrování obsahu, může služba zachycovat požadavky v závislosti na vstupech a výstupech. Když se aktivuje filtr obsahu, vrátí se kód chyby 400 s popisem aktivovaného pravidla.

Nainstalujte balíček azure-ai-inference pomocí správce balíčků, například pip:

pip install azure-ai-inference

Pak můžete balíček použít k využívání modelu. Následující příklad ukazuje, jak vytvořit klienta pro zpracování dokončení chatu:

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

Projděte si naše ukázky a přečtěte si referenční dokumentaci k rozhraní API, abyste mohli začít.

Následující příklad ukazuje odpověď na žádost o dokončení chatu, která aktivovala bezpečnost obsahu.

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

Dodržujte osvědčené postupy.

Doporučujeme informovat vaše rozhodnutí o konfiguraci filtrování obsahu prostřednictvím iterativní identifikace (například červeného týmového testování, zátěžového testování a analýzy) a procesu měření, který řeší potenciální škody, které jsou relevantní pro konkrétní model, aplikaci a nasazení. Po implementaci zmírnění rizik, jako je filtrování obsahu, opakujte měření a otestujte efektivitu.

Doporučení a osvědčené postupy pro zodpovědnou AI pro Azure OpenAI, které jsou zakotveny v standardu Microsoft Responsible AI, najdete v přehledu zodpovědné umělé inteligence pro Azure OpenAI.

Důležité

Položky označené (Preview) v tomto článku jsou aktuálně ve verzi Public Preview. Tato verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučujeme ji pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.

Systém filtrování obsahu integrovaný do služeb Azure AI se spouští společně s základními modely. Používá soubor klasifikačních modelů s více třídami k detekci čtyř kategorií škodlivého obsahu (násilí, nenávist, sexuální a sebepoškozování) na čtyřech úrovních závažnosti (bezpečné, nízké, střední a vysoké). Nabízí volitelné binární klasifikátory pro detekci rizika jailbreaku, existujícího textu a kódu ve veřejných úložištích. Další informace o kategoriích obsahu, úrovních závažnosti a chování systému filtrování obsahu najdete v následujícím článku.

Výchozí konfigurace filtrování obsahu je nastavená tak, aby filtrovat na střední prahovou hodnotu závažnosti pro všechny čtyři kategorie škodí obsahu pro výzvy i dokončení. Proto se obsah zjištěný na úrovni závažnosti střední nebo vysoké filtruje, zatímco obsah zjištěný na úrovni závažnosti nízký nebo bezpečný není filtrovaný.

Filtry obsahu je možné nakonfigurovat na úrovni prostředku a přidružit k jednomu nebo více nasazením.

Požadavky

K dokončení tohoto článku potřebujete:

Přidání nasazení modelu s vlastním filtrováním obsahu

Doporučujeme vytvářet filtry obsahu pomocí portálu Azure AI Foundry nebo v kódu pomocí Bicep. Vytváření vlastních filtrů obsahu nebo jejich použití na nasazení se nepodporuje pomocí Azure CLI.

Účet pro filtrování obsahu v kódu

Jakmile se na nasazení modelu použije filtrování obsahu, může služba zachycovat požadavky v závislosti na vstupech a výstupech. Když se aktivuje filtr obsahu, vrátí se kód chyby 400 s popisem aktivovaného pravidla.

Nainstalujte balíček azure-ai-inference pomocí správce balíčků, například pip:

pip install azure-ai-inference

Pak můžete balíček použít k využívání modelu. Následující příklad ukazuje, jak vytvořit klienta pro zpracování dokončení chatu:

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

Projděte si naše ukázky a přečtěte si referenční dokumentaci k rozhraní API, abyste mohli začít.

Následující příklad ukazuje odpověď na žádost o dokončení chatu, která aktivovala bezpečnost obsahu.

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

Dodržujte osvědčené postupy.

Doporučujeme informovat vaše rozhodnutí o konfiguraci filtrování obsahu prostřednictvím iterativní identifikace (například červeného týmového testování, zátěžového testování a analýzy) a procesu měření, který řeší potenciální škody, které jsou relevantní pro konkrétní model, aplikaci a nasazení. Po implementaci zmírnění rizik, jako je filtrování obsahu, opakujte měření a otestujte efektivitu.

Doporučení a osvědčené postupy pro zodpovědnou AI pro Azure OpenAI, které jsou zakotveny v standardu Microsoft Responsible AI, najdete v přehledu zodpovědné umělé inteligence pro Azure OpenAI.

Důležité

Položky označené (Preview) v tomto článku jsou aktuálně ve verzi Public Preview. Tato verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučujeme ji pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.

Systém filtrování obsahu integrovaný do služeb Azure AI se spouští společně s základními modely. Používá soubor klasifikačních modelů s více třídami k detekci čtyř kategorií škodlivého obsahu (násilí, nenávist, sexuální a sebepoškozování) na čtyřech úrovních závažnosti (bezpečné, nízké, střední a vysoké). Nabízí volitelné binární klasifikátory pro detekci rizika jailbreaku, existujícího textu a kódu ve veřejných úložištích. Další informace o kategoriích obsahu, úrovních závažnosti a chování systému filtrování obsahu najdete v následujícím článku.

Výchozí konfigurace filtrování obsahu je nastavená tak, aby filtrovat na střední prahovou hodnotu závažnosti pro všechny čtyři kategorie škodí obsahu pro výzvy i dokončení. Proto se obsah zjištěný na úrovni závažnosti střední nebo vysoké filtruje, zatímco obsah zjištěný na úrovni závažnosti nízký nebo bezpečný není filtrovaný.

Filtry obsahu je možné nakonfigurovat na úrovni prostředku a přidružit k jednomu nebo více nasazením.

Požadavky

K dokončení tohoto článku potřebujete:

  • Nainstalujte rozhraní příkazového řádku Azure CLI.

  • Identifikujte následující informace:

    • ID vašeho předplatného Azure

    • Název prostředku azure AI Services

    • Skupina prostředků, ve které je nasazený prostředek Azure AI Services.

    • Název modelu, poskytovatel, verze a SKU, které chcete nasadit. K jeho identifikaci můžete použít portál Azure AI Foundry nebo Azure CLI. V tomto příkladu nasadíme následující model:

      • Název modelu:: Phi-3.5-vision-instruct
      • Zprostředkovatel: Microsoft
      • Verze: 2
      • Typ nasazení: Globální standard

Přidání nasazení modelu s vlastním filtrováním obsahu

  1. Pomocí šablony ai-services-content-filter-template.bicep popíšete zásady filtrování obsahu:

    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. Použití šablony ai-services-deployment-template.bicep k popisu nasazení 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. Vytvořte hlavní definici nasazení:

    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. Spusťte nasazení:

    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
    

Účet pro filtrování obsahu v kódu

Jakmile se na nasazení modelu použije filtrování obsahu, může služba zachycovat požadavky v závislosti na vstupech a výstupech. Když se aktivuje filtr obsahu, vrátí se kód chyby 400 s popisem aktivovaného pravidla.

Nainstalujte balíček azure-ai-inference pomocí správce balíčků, například pip:

pip install azure-ai-inference

Pak můžete balíček použít k využívání modelu. Následující příklad ukazuje, jak vytvořit klienta pro zpracování dokončení chatu:

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

Projděte si naše ukázky a přečtěte si referenční dokumentaci k rozhraní API, abyste mohli začít.

Následující příklad ukazuje odpověď na žádost o dokončení chatu, která aktivovala bezpečnost obsahu.

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

Dodržujte osvědčené postupy.

Doporučujeme informovat vaše rozhodnutí o konfiguraci filtrování obsahu prostřednictvím iterativní identifikace (například červeného týmového testování, zátěžového testování a analýzy) a procesu měření, který řeší potenciální škody, které jsou relevantní pro konkrétní model, aplikaci a nasazení. Po implementaci zmírnění rizik, jako je filtrování obsahu, opakujte měření a otestujte efektivitu.

Doporučení a osvědčené postupy pro zodpovědnou AI pro Azure OpenAI, které jsou zakotveny v standardu Microsoft Responsible AI, najdete v přehledu zodpovědné umělé inteligence pro Azure OpenAI.

Další kroky

  • Přečtěte si další informace o kategoriích filtrování obsahu a úrovních závažnosti pomocí služby Azure OpenAI.
  • Přečtěte si další informace o červeném seskupování z našeho článku: Úvod do červeného seskupování velkých jazykových modelů (LLMs).