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 Azure-abonnement. Als u GitHub-modellen gebruikt, kunt u uw ervaring upgraden en een Azure-abonnement maken in het proces. Lees Upgrade van GitHub-modellen naar Azure AI-modeldeductie als dit uw geval is.
Een Azure AI-servicesresource. Zie Een Azure AI Services-resource maken voor meer informatie.
- Een AI-project dat is verbonden met uw Azure AI Services-resource. U roept de stappen aan bij Deductieservice voor Azure AI-modellen configureren in mijn project in Azure AI Foundry.
Een aangepast inhoudsfilter maken
Volg deze stappen om een aangepast inhoudsfilter te maken:
Ga naar de Azure AI Foundry-portal.
Selecteer Veiligheid en beveiliging.
Selecteer het tabblad Inhoudsfilters en selecteer vervolgens Inhoudsfilter maken.
Geef onder Basisinformatie een naam op voor het inhoudsfilter.
Selecteer onder Verbinding de verbinding met de Azure AI Services-resource die is verbonden met uw project.
Configureer onder Invoerfilter het filter, afhankelijk van uw vereisten. Deze configuratie wordt toegepast voordat de aanvraag het model zelf bereikt.
Configureer onder Uitvoerfilter het filter, afhankelijk van uw vereisten. Deze configuratie wordt toegepast nadat het model is uitgevoerd en inhoud wordt gegenereerd.
Selecteer Volgende.
U kunt eventueel een bepaalde implementatie koppelen aan het gemaakte inhoudsfilter. U kunt de modelimplementaties die op elk gewenst moment zijn gekoppeld, wijzigen.
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 Azure-abonnement. Als u GitHub-modellen gebruikt, kunt u uw ervaring upgraden en een Azure-abonnement maken in het proces. Lees Upgrade van GitHub-modellen naar Azure AI-modeldeductie als dit uw geval is.
Een Azure AI-servicesresource. Zie Een Azure AI Services-resource maken voor meer informatie.
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:
Een Azure-abonnement. Als u GitHub-modellen gebruikt, kunt u uw ervaring upgraden en een Azure-abonnement maken in het proces. Lees Upgrade van GitHub-modellen naar Azure AI-modeldeductie als dit uw geval is.
Een Azure AI-servicesresource. Zie Een Azure AI Services-resource maken voor meer informatie.
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
-
Modelnaam::
Een modelimplementatie toevoegen met aangepaste inhoudsfiltering
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 } }
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 } }
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 ] }
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
- Lees meer over inhoudsfiltercategorieën en ernstniveaus met Azure OpenAI Service.
- Meer informatie over rode koppeling vindt u in ons artikel Inleiding tot red teaming large language models (LLMs).