Compartir a través de


Cómo configurar filtros de contenido (versión preliminar) para modelos en servicios de Azure AI

Importante

Los elementos marcados (versión preliminar) en este artículo se encuentran actualmente en versión preliminar pública. Esta versión preliminar se ofrece sin acuerdo de nivel de servicio y no se recomienda para las cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

El sistema de filtrado de contenido integrado en Servicios de Azure AI se ejecuta junto con los modelos principales. Usa un conjunto de modelos de clasificación de varias clases para detectar cuatro categorías de contenido dañino (violencia, odio, sexo y autolesión) en cuatro niveles de gravedad respectivamente (seguro, bajo, medio y alto). Ofrece clasificadores binarios opcionales para detectar riesgos de jailbreak, texto existente y código en repositorios públicos. Obtenga más información sobre las categorías de contenido, los niveles de gravedad y el comportamiento del sistema de filtrado de contenido en el siguiente artículo

La configuración de filtrado de contenido predeterminada se establece para filtrar en el umbral de gravedad media para las cuatro categorías de daños en el contenido para las solicitudes y finalizaciones. Por lo tanto, el contenido detectado en el nivel de gravedad medio o alto se filtra, mientras que el contenido detectado en el nivel de gravedad bajo o seguro no se filtra.

Los filtros de contenido se pueden configurar en el nivel de recurso y asociarse a una o varias implementaciones.

Requisitos previos

Para completar este artículo, necesitará lo siguiente:

Creación de un filtro de contenido personalizado

Siga estos pasos para crear un filtro de contenido personalizado:

  1. Visite el portal de Azure AI Foundry.

  2. Seleccione Seguridad y protección.

  3. Seleccione la pestaña Filtros de contenido y, a continuación, seleccione Crear filtro de contenido.

  4. En Información básica, asigne un nombre al filtro de contenido.

  5. En Conexión, seleccione la conexión al recurso de Servicios de Azure AI que está conectado al proyecto.

  6. En Filtro de entrada, configure el filtro en función de sus requisitos. Esta configuración se aplica antes de que la solicitud llegue al propio modelo.

  7. En Filtro de salida, configure el filtro en función de sus requisitos. Esta configuración se aplica después de que se ejecute el modelo y se genere el contenido.

  8. Seleccione Siguiente.

  9. Opcionalmente, puede asociar una implementación determinada con el filtro de contenido creado. Puede cambiar las implementaciones del modelo asociadas en cualquier momento.

  10. Una vez completada la implementación, el nuevo filtro de contenido se aplica a la implementación de modelo.

Cuenta para el filtrado de contenido en el código

Una vez aplicado el filtrado de contenido a la implementación de modelo, el servicio puede interceptar las solicitudes en función de las entradas y salidas. Cuando se desencadena un filtro de contenido, se devuelve un código de error 400 con la descripción de la regla desencadenada.

Instale el paquete azure-ai-inference mediante el administrador de paquetes, como pip:

pip install azure-ai-inference>=1.0.0b5

Advertencia

El recurso de Servicios de Azure AI necesita la versión azure-ai-inference>=1.0.0b5 para Python.

A continuación, puede usar el paquete para consumir el modelo. En el ejemplo siguiente se muestra cómo crear un cliente para consumir finalizaciones de chat:

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

Explore nuestros ejemplos y lea la documentación de referencia de API para empezar a trabajar.

En el siguiente ejemplo se muestra la respuesta de una solicitud de finalización de chat que ha desencadenado la seguridad del contenido.

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

Seguimiento de los procedimientos recomendados

Se recomienda informar a las decisiones de configuración de filtrado de contenido a través de una identificación iterativa (por ejemplo, pruebas de equipo rojo, pruebas de esfuerzo y análisis) y el proceso de medición para solucionar los posibles daños que son pertinentes para un modelo, aplicación y escenario de implementación específicos. Después de implementar mitigaciones como el filtrado de contenido, repita la medición para probar la eficacia.

Las recomendaciones y los procedimientos recomendados para la inteligencia artificial responsable de Azure OpenAI, que se basan en el estándar de inteligencia artificial responsable de Microsoft, se pueden encontrar en La introducción a la inteligencia artificial responsable de Azure OpenAI.

Importante

Los elementos marcados (versión preliminar) en este artículo se encuentran actualmente en versión preliminar pública. Esta versión preliminar se ofrece sin acuerdo de nivel de servicio y no se recomienda para las cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

El sistema de filtrado de contenido integrado en Servicios de Azure AI se ejecuta junto con los modelos principales. Usa un conjunto de modelos de clasificación de varias clases para detectar cuatro categorías de contenido dañino (violencia, odio, sexo y autolesión) en cuatro niveles de gravedad respectivamente (seguro, bajo, medio y alto). Ofrece clasificadores binarios opcionales para detectar riesgos de jailbreak, texto existente y código en repositorios públicos. Obtenga más información sobre las categorías de contenido, los niveles de gravedad y el comportamiento del sistema de filtrado de contenido en el siguiente artículo

La configuración de filtrado de contenido predeterminada se establece para filtrar en el umbral de gravedad media para las cuatro categorías de daños en el contenido para las solicitudes y finalizaciones. Por lo tanto, el contenido detectado en el nivel de gravedad medio o alto se filtra, mientras que el contenido detectado en el nivel de gravedad bajo o seguro no se filtra.

Los filtros de contenido se pueden configurar en el nivel de recurso y asociarse a una o varias implementaciones.

Requisitos previos

Para completar este artículo, necesitará lo siguiente:

Agregar una implementación de modelo con filtrado de contenido personalizado

Se recomienda crear filtros de contenido mediante el Portal de la Fundición de IA de Azure o en el código mediante Bicep. No se admite la creación de filtros de contenido personalizados ni su aplicación en implementaciones mediante la CLI de Azure.

Cuenta para el filtrado de contenido en el código

Una vez aplicado el filtrado de contenido a la implementación de modelo, el servicio puede interceptar las solicitudes en función de las entradas y salidas. Cuando se desencadena un filtro de contenido, se devuelve un código de error 400 con la descripción de la regla desencadenada.

Instale el paquete azure-ai-inference mediante el administrador de paquetes, como pip:

pip install azure-ai-inference>=1.0.0b5

Advertencia

El recurso de Servicios de Azure AI necesita la versión azure-ai-inference>=1.0.0b5 para Python.

A continuación, puede usar el paquete para consumir el modelo. En el ejemplo siguiente se muestra cómo crear un cliente para consumir finalizaciones de chat:

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

Explore nuestros ejemplos y lea la documentación de referencia de API para empezar a trabajar.

En el siguiente ejemplo se muestra la respuesta de una solicitud de finalización de chat que ha desencadenado la seguridad del contenido.

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

Seguimiento de los procedimientos recomendados

Se recomienda informar a las decisiones de configuración de filtrado de contenido a través de una identificación iterativa (por ejemplo, pruebas de equipo rojo, pruebas de esfuerzo y análisis) y el proceso de medición para solucionar los posibles daños que son pertinentes para un modelo, aplicación y escenario de implementación específicos. Después de implementar mitigaciones como el filtrado de contenido, repita la medición para probar la eficacia.

Las recomendaciones y los procedimientos recomendados para la inteligencia artificial responsable de Azure OpenAI, que se basan en el estándar de inteligencia artificial responsable de Microsoft, se pueden encontrar en La introducción a la inteligencia artificial responsable de Azure OpenAI.

Importante

Los elementos marcados (versión preliminar) en este artículo se encuentran actualmente en versión preliminar pública. Esta versión preliminar se ofrece sin acuerdo de nivel de servicio y no se recomienda para las cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

El sistema de filtrado de contenido integrado en Servicios de Azure AI se ejecuta junto con los modelos principales. Usa un conjunto de modelos de clasificación de varias clases para detectar cuatro categorías de contenido dañino (violencia, odio, sexo y autolesión) en cuatro niveles de gravedad respectivamente (seguro, bajo, medio y alto). Ofrece clasificadores binarios opcionales para detectar riesgos de jailbreak, texto existente y código en repositorios públicos. Obtenga más información sobre las categorías de contenido, los niveles de gravedad y el comportamiento del sistema de filtrado de contenido en el siguiente artículo

La configuración de filtrado de contenido predeterminada se establece para filtrar en el umbral de gravedad media para las cuatro categorías de daños en el contenido para las solicitudes y finalizaciones. Por lo tanto, el contenido detectado en el nivel de gravedad medio o alto se filtra, mientras que el contenido detectado en el nivel de gravedad bajo o seguro no se filtra.

Los filtros de contenido se pueden configurar en el nivel de recurso y asociarse a una o varias implementaciones.

Requisitos previos

Para completar este artículo, necesitará lo siguiente:

  • Instale la CLI de Azure.

  • Identifique la siguiente información:

    • Su identificador de suscripción de Azure.

    • Nombre del recurso de los servicios de Azure AI.

    • El grupo de recursos donde se implementa el recurso de los servicios de Azure AI.

    • El nombre del modelo, el proveedor, la versión y la SKU que desea implementar. Puede usar el Portal de la Fundición de IA de Azure o la CLI de Azure para identificarlo. En este ejemplo, se implementa el siguiente modelo:

      • Nombre del modelo:: Phi-3.5-vision-instruct
      • Proveedor: Microsoft
      • Versión:2
      • Tipo de implementación: estándar global

Agregar una implementación de modelo con filtrado de contenido personalizado

  1. Use la plantilla ai-services-content-filter-template.bicep para describir la directiva de filtro de contenido:

    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. Use la plantilla ai-services-deployment-template.bicep para describir las implementaciones de modelos:

    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'
      '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. Cree la definición de implementación principal:

    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. Ejecute la implementación:

    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
    

Cuenta para el filtrado de contenido en el código

Una vez aplicado el filtrado de contenido a la implementación de modelo, el servicio puede interceptar las solicitudes en función de las entradas y salidas. Cuando se desencadena un filtro de contenido, se devuelve un código de error 400 con la descripción de la regla desencadenada.

Instale el paquete azure-ai-inference mediante el administrador de paquetes, como pip:

pip install azure-ai-inference>=1.0.0b5

Advertencia

El recurso de Servicios de Azure AI necesita la versión azure-ai-inference>=1.0.0b5 para Python.

A continuación, puede usar el paquete para consumir el modelo. En el ejemplo siguiente se muestra cómo crear un cliente para consumir finalizaciones de chat:

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

Explore nuestros ejemplos y lea la documentación de referencia de API para empezar a trabajar.

En el siguiente ejemplo se muestra la respuesta de una solicitud de finalización de chat que ha desencadenado la seguridad del contenido.

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

Seguimiento de los procedimientos recomendados

Se recomienda informar a las decisiones de configuración de filtrado de contenido a través de una identificación iterativa (por ejemplo, pruebas de equipo rojo, pruebas de esfuerzo y análisis) y el proceso de medición para solucionar los posibles daños que son pertinentes para un modelo, aplicación y escenario de implementación específicos. Después de implementar mitigaciones como el filtrado de contenido, repita la medición para probar la eficacia.

Las recomendaciones y los procedimientos recomendados para la inteligencia artificial responsable de Azure OpenAI, que se basan en el estándar de inteligencia artificial responsable de Microsoft, se pueden encontrar en La introducción a la inteligencia artificial responsable de Azure OpenAI.

Pasos siguientes