Konfigurera innehållsfilter (förhandsversion) för modeller i Azure AI-tjänster
Viktigt!
Objekt markerade (förhandsversion) i den här artikeln är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.
Innehållsfiltreringssystemet som är integrerat i Azure AI Services körs tillsammans med kärnmodellerna. Den använder en ensemble av klassificeringsmodeller med 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. Läs mer om innehållskategorier, allvarlighetsnivåer och beteendet för innehållsfiltreringssystemet i följande artikel
Standardkonfigurationen för innehållsfiltrering är inställd på att filtrera med tröskelvärdet för medelhög allvarlighetsgrad för alla fyra kategorier av innehållsskador för både prompter och slutföranden. Därför filtreras innehåll som identifieras på allvarlighetsnivå medel eller hög, medan innehåll som identifieras på allvarlighetsgrad låg eller säker inte filtreras.
Innehållsfilter kan konfigureras på resursnivå och associeras med en eller flera distributioner.
Förutsättningar
För att slutföra den här artikeln behöver du:
En Azure-prenumeration Om du använder GitHub-modeller kan du uppgradera din upplevelse och skapa en Azure-prenumeration i processen. Läs Uppgradera från GitHub-modeller till Azure AI-modellinferens om så är fallet.
En Azure AI-tjänstresurs. Mer information finns i Skapa en Azure AI Services-resurs.
- Ett AI-projekt som är anslutet till din Azure AI Services-resurs. Du anropar genom att följa stegen i Konfigurera azure AI-modellinferenstjänsten i mitt projekt i Azure AI Foundry.
Skapa ett anpassat innehållsfilter
Följ dessa steg för att skapa ett anpassat innehållsfilter:
Gå till Azure AI Foundry-portalen.
Välj Säkerhet + säkerhet.
Välj fliken Innehållsfilter och välj sedan Skapa innehållsfilter.
Under Grundläggande information ger du innehållsfiltret ett namn.
Under Anslutning väljer du anslutningen till den Azure AI Services-resurs som är ansluten till projektet.
Under Indatafilter konfigurerar du filtret beroende på dina krav. Den här konfigurationen tillämpas innan begäran når själva modellen.
Under Utdatafilter konfigurerar du filtret beroende på dina krav. Den här konfigurationen tillämpas när modellen har körts och innehållet genereras.
Välj Nästa.
Du kan också associera en viss distribution med det skapade innehållsfiltret. Du kan när som helst ändra de modelldistributioner som är associerade.
När distributionen är klar tillämpas det nya innehållsfiltret på modelldistributionen.
Konto för innehållsfiltrering i koden
När innehållsfiltrering har tillämpats på modelldistributionen kan begäranden fångas upp av tjänsten beroende på indata och utdata. När ett innehållsfilter utlöses returneras en 400-felkod med beskrivningen av regeln utlöst.
Installera paketet azure-ai-inference
med hjälp av pakethanteraren, till exempel pip:
pip install azure-ai-inference>=1.0.0b5
Varning
Azure AI Services-resursen kräver versionen azure-ai-inference>=1.0.0b5
för Python.
Sedan kan du använda paketet för att använda modellen. I följande exempel visas hur du skapar en klient för att använda chattavslutningar:
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"]),
)
Utforska våra exempel och läs API-referensdokumentationen för att komma igång.
I följande exempel visas svaret på en begäran om chattavslut som har utlöst innehållssäkerhet.
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
Vi rekommenderar att du informerar dina beslut om innehållsfiltrering genom en iterativ identifiering (till exempel red team-testning, stresstestning och analys) och mätningsprocess för att åtgärda potentiella skador som är relevanta för en specifik modell, ett visst program och distributionsscenario. 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 finns i Microsoft Responsible AI Standard, finns i Översikt över ansvarsfull AI för Azure OpenAI.
Viktigt!
Objekt markerade (förhandsversion) i den här artikeln är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.
Innehållsfiltreringssystemet som är integrerat i Azure AI Services körs tillsammans med kärnmodellerna. Den använder en ensemble av klassificeringsmodeller med 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. Läs mer om innehållskategorier, allvarlighetsnivåer och beteendet för innehållsfiltreringssystemet i följande artikel
Standardkonfigurationen för innehållsfiltrering är inställd på att filtrera med tröskelvärdet för medelhög allvarlighetsgrad för alla fyra kategorier av innehållsskador för både prompter och slutföranden. Därför filtreras innehåll som identifieras på allvarlighetsnivå medel eller hög, medan innehåll som identifieras på allvarlighetsgrad låg eller säker inte filtreras.
Innehållsfilter kan konfigureras på resursnivå och associeras med en eller flera distributioner.
Förutsättningar
För att slutföra den här artikeln behöver du:
En Azure-prenumeration Om du använder GitHub-modeller kan du uppgradera din upplevelse och skapa en Azure-prenumeration i processen. Läs Uppgradera från GitHub-modeller till Azure AI-modellinferens om så är fallet.
En Azure AI-tjänstresurs. Mer information finns i Skapa en Azure AI Services-resurs.
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 innehållsfiltrering har tillämpats på modelldistributionen kan begäranden fångas upp av tjänsten beroende på indata och utdata. När ett innehållsfilter utlöses returneras en 400-felkod med beskrivningen av regeln utlöst.
Installera paketet azure-ai-inference
med hjälp av pakethanteraren, till exempel pip:
pip install azure-ai-inference>=1.0.0b5
Varning
Azure AI Services-resursen kräver versionen azure-ai-inference>=1.0.0b5
för Python.
Sedan kan du använda paketet för att använda modellen. I följande exempel visas hur du skapar en klient för att använda chattavslutningar:
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"]),
)
Utforska våra exempel och läs API-referensdokumentationen för att komma igång.
I följande exempel visas svaret på en begäran om chattavslut som har utlöst innehållssäkerhet.
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
Vi rekommenderar att du informerar dina beslut om innehållsfiltrering genom en iterativ identifiering (till exempel red team-testning, stresstestning och analys) och mätningsprocess för att åtgärda potentiella skador som är relevanta för en specifik modell, ett visst program och distributionsscenario. 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 finns i Microsoft Responsible AI Standard, finns i Översikt över ansvarsfull AI för Azure OpenAI.
Viktigt!
Objekt markerade (förhandsversion) i den här artikeln är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.
Innehållsfiltreringssystemet som är integrerat i Azure AI Services körs tillsammans med kärnmodellerna. Den använder en ensemble av klassificeringsmodeller med 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. Läs mer om innehållskategorier, allvarlighetsnivåer och beteendet för innehållsfiltreringssystemet i följande artikel
Standardkonfigurationen för innehållsfiltrering är inställd på att filtrera med tröskelvärdet för medelhög allvarlighetsgrad för alla fyra kategorier av innehållsskador för både prompter och slutföranden. Därför filtreras innehåll som identifieras på allvarlighetsnivå medel eller hög, medan innehåll som identifieras på allvarlighetsgrad låg eller säker inte filtreras.
Innehållsfilter kan konfigureras på resursnivå och associeras med en eller flera distributioner.
Förutsättningar
För att slutföra den här artikeln behöver du:
En Azure-prenumeration Om du använder GitHub-modeller kan du uppgradera din upplevelse och skapa en Azure-prenumeration i processen. Läs Uppgradera från GitHub-modeller till Azure AI-modellinferens om så är fallet.
En Azure AI-tjänstresurs. Mer information finns i Skapa en Azure AI Services-resurs.
Installera Azure CLI.
Identifiera följande information:
ditt prenumerations-ID för Azure
Ditt Azure AI Services-resursnamn.
Resursgruppen där Azure AI Services-resursen distribueras.
Modellnamnet, providern, versionen och SKU:n som du vill distribuera. Du kan använda Azure AI Foundry-portalen eller Azure CLI för att identifiera den. I det här exemplet distribuerar vi följande modell:
-
Modellnamn::
Phi-3.5-vision-instruct
-
Provider:
Microsoft
-
Version:
2
- Distributionstyp: Global standard
-
Modellnamn::
Lägga till en modelldistribution med anpassad innehållsfiltrering
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 } }
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' '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 } }
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 ] }
Kör distributionen:
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
Konto för innehållsfiltrering i koden
När innehållsfiltrering har tillämpats på modelldistributionen kan begäranden fångas upp av tjänsten beroende på indata och utdata. När ett innehållsfilter utlöses returneras en 400-felkod med beskrivningen av regeln utlöst.
Installera paketet azure-ai-inference
med hjälp av pakethanteraren, till exempel pip:
pip install azure-ai-inference>=1.0.0b5
Varning
Azure AI Services-resursen kräver versionen azure-ai-inference>=1.0.0b5
för Python.
Sedan kan du använda paketet för att använda modellen. I följande exempel visas hur du skapar en klient för att använda chattavslutningar:
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"]),
)
Utforska våra exempel och läs API-referensdokumentationen för att komma igång.
I följande exempel visas svaret på en begäran om chattavslut som har utlöst innehållssäkerhet.
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
Vi rekommenderar att du informerar dina beslut om innehållsfiltrering genom en iterativ identifiering (till exempel red team-testning, stresstestning och analys) och mätningsprocess för att åtgärda potentiella skador som är relevanta för en specifik modell, ett visst program och distributionsscenario. 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 finns i Microsoft Responsible AI Standard, finns i Översikt över ansvarsfull AI för Azure OpenAI.
Nästa steg
- Läs mer om innehållsfiltreringskategorier och allvarlighetsgradsnivåer med Azure OpenAI Service.
- Läs mer om röd teamindelning från vår artikel: Introduktion till red teaming large language models (LLMs).