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:
Suscripción a Azure. Si usa Modelos de GitHub, puede actualizar la experiencia y crear una suscripción de Azure en el proceso. Lea Actualización de modelos de GitHub a la inferencia del modelo de Azure AI si es su caso.
Recurso de Servicios de Azure AI. Para más información, vea Creación de un recurso de Servicios de Azure AI.
- Un proyecto de inteligencia artificial conectado al recurso de Azure AI Services. Puede seguir los pasos descritos en Servicio de la inferencia del modelo de Azure AI en mi proyecto en la Fundición de IA de Azure.
Creación de un filtro de contenido personalizado
Siga estos pasos para crear un filtro de contenido personalizado:
Visite el portal de Azure AI Foundry.
Seleccione Seguridad y protección.
Seleccione la pestaña Filtros de contenido y, a continuación, seleccione Crear filtro de contenido.
En Información básica, asigne un nombre al filtro de contenido.
En Conexión, seleccione la conexión al recurso de Servicios de Azure AI que está conectado al proyecto.
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.
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.
Seleccione Siguiente.
Opcionalmente, puede asociar una implementación determinada con el filtro de contenido creado. Puede cambiar las implementaciones del modelo asociadas en cualquier momento.
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:
Suscripción a Azure. Si usa Modelos de GitHub, puede actualizar la experiencia y crear una suscripción de Azure en el proceso. Lea Actualización de modelos de GitHub a la inferencia del modelo de Azure AI si es su caso.
Recurso de Servicios de Azure AI. Para más información, vea Creación de un recurso de Servicios de Azure AI.
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:
Suscripción a Azure. Si usa Modelos de GitHub, puede actualizar la experiencia y crear una suscripción de Azure en el proceso. Lea Actualización de modelos de GitHub a la inferencia del modelo de Azure AI si es su caso.
Recurso de Servicios de Azure AI. Para más información, vea Creación de un recurso de Servicios de Azure AI.
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
-
Nombre del modelo::
Agregar una implementación de modelo con filtrado de contenido personalizado
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 } }
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 } }
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 ] }
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
- Obtenga más información sobre las categorías de filtrado de contenido y los niveles de gravedad con el Azure OpenAI Service.
- Obtenga más información sobre Read Teaming en nuestro: artículo Introducción a los modelos lingüísticos de gran tamaño (LLM).