Delen via


Overzicht van inhoudsfilters

Azure OpenAI bevat een systeem voor inhoudsfiltering dat naast kernmodellen werkt, waaronder modellen voor het genereren van afbeeldingen. Dit systeem voert zowel de prompt als de voltooiing uit via een set classificatiemodellen die zijn ontworpen om de uitvoer van schadelijke inhoud te detecteren en te voorkomen. Het inhoudsfiltersysteem detecteert en onderneemt actie op specifieke categorieën van mogelijk schadelijke inhoud in zowel invoerprompts als uitvoervoltooiingen. Variaties in API-configuraties en toepassingsontwerp kunnen van invloed zijn op voltooiingen en dus filtergedrag.

Belangrijk

Het inhoudsfiltersysteem is van toepassing op alle modellen die rechtstreeks door Azure worden verkocht, met uitzondering van prompts en voltooiingen die worden verwerkt door de audiomodellen zoals Whisper. Zie Audiomodellen in Azure OpenAI voor meer informatie.

Naast het inhoudsfiltersysteem voert Azure OpenAI bewaking uit om inhoud en gedrag te detecteren die het gebruik van de service voorstellen op een manier die mogelijk in strijd is met toepasselijke productvoorwaarden. Zie de Transparantienotitie voor Azure OpenAI voor meer informatie over het begrijpen en beperken van risico's die zijn gekoppeld aan uw toepassing. Voor meer informatie over hoe gegevens worden verwerkt voor contentfiltering en misbruikcontrole, zie Gegevens, privacy en beveiliging voor Azure OpenAI.

De artikelen in deze sectie bevatten informatie over de inhoudsfiltercategorieën, de ernstniveaus voor filteren en de configuratie ervan, en API-scenario's die u kunt overwegen bij het ontwerpen en implementeren van toepassingen.

Opmerking

Er worden geen prompts of voltooiingen opgeslagen voor het filteren van inhoud. We gebruiken geen prompts of voltooiingen om het inhoudsfiltersysteem te trainen, opnieuw te trainen of te verbeteren zonder toestemming van de gebruiker. Zie Gegevens, privacy en beveiliging voor meer informatie.

Inhoudsfiltertypen

Het inhoudsfiltersysteem dat is geïntegreerd in Azure OpenAI bevat:

  • Neurale classificatiemodellen met meerdere klassen die zijn gericht op het detecteren en filteren van schadelijke inhoud. De modellen hebben betrekking op vier categorieën (haat, seksueel, geweld en zelfbeschadiging) op vier ernstniveaus (veilig, laag, gemiddeld en hoog). Inhoud die is gedetecteerd op het ernstniveau 'veilig', wordt gelabeld in aantekeningen, maar is niet onderhevig aan filteren en kan niet worden geconfigureerd.
  • Andere optionele classificatiemodellen die zijn gericht op het detecteren van jailbreakrisico's en bekende inhoud voor tekst en code. Deze modellen zijn binaire classificaties die aangeven of gedrag van gebruikers of modellen als jailbreakaanval of overeenkomst met bekende tekst of broncode wordt aangemerkt. Het gebruik van deze modellen is optioneel, maar het gebruik van het model voor beschermde materiaalcode kan vereist zijn voor dekking onder de Auteursrechtenverbintenis van de klant.

Filtercategorieën

De volgende tabel bevat een overzicht van de risicocategorieën die worden ondersteund door het inhoudsfiltersysteem van Azure OpenAI.

Categorie Beschrijving
Haat en billijkheid Haat- en billijkheidsgerelateerde schade verwijst naar inhoud die discriminerende taal aanvalt of gebruikt met verwijzing naar een persoon of identiteitsgroep op basis van bepaalde differentiërende kenmerken van deze groepen.

Dit omvat, maar is niet beperkt tot:
  • Ras, etniciteit, nationaliteit
  • Genderidentiteitsgroepen en expressies
  • Seksuele geaardheid
  • Godsdienst
  • Persoonlijk uiterlijk en lichaamsgrootte
  • Status van handicap
  • Intimidatie en pesten
Seksueel Seksueel beschrijft taal met betrekking tot anatomische organen en geslachtsdelen, romantische relaties en seksuele handelingen, handelingen die worden weergegeven in erotische of genegenheidsvoorwaarden, waaronder degenen die zijn afgebeeld als een aanval of een gedwongen seksuele gewelddadige daad tegen de wil van een. 

 Dit omvat, maar is niet beperkt tot:
  • Vulgaire inhoud
  • Prostitutie
  • Naaktheid en pornografie
  • Misbruik
  • Kinderuitbuiting, kindermisbruik, kinderverzorging
Geweld Geweld beschrijft taal met betrekking tot fysieke acties die bedoeld zijn om iemand of iets te kwetsen, verwonden, beschadigen of doden; beschrijft wapens, wapens en gerelateerde entiteiten.

Dit omvat, maar is niet beperkt tot:
  • Wapens
  • Pesten en bedreigingen
  • Terrorisme en gewelddadig extremisme
  • Stalking
Zelfschade Zelfbeschadiging beschrijft taal met betrekking tot fysieke acties die bedoeld zijn om opzettelijk pijn te doen, gewond te raken, het lichaam te beschadigen of zichzelf te doden.

Dit omvat, maar is niet beperkt tot:
  • Eetstoornissen
  • Pesten en bedreigingen
Gebruikerspromptaanvallen Gebruikerspromptaanvallen zijn gebruikersprompts die zijn ontworpen om het Generatieve AI-model te provoceren, waardoor het gedrag vertoont dat het eigenlijk was getraind om te vermijden, of om de regels die zijn ingesteld in het systeembericht te doorbreken. Dergelijke aanvallen kunnen variëren van ingewikkeld rollenspel tot subtiele ondermijning van het veiligheidsdoel.
Indirecte aanvallen Indirecte aanvallen, ook wel indirecte promptaanvallen of injectieaanvallen tussen domeinen genoemd, zijn een potentieel beveiligingsprobleem waarbij derden schadelijke instructies plaatsen in documenten die het Generatieve AI-systeem kan openen en verwerken. Vereist het insluiten en opmaken van documenten.
Verankering2 Detectie van gefundeerdheid markeert of de tekstreacties van grote taalmodellen (LLM's) gebaseerd zijn op de bronmaterialen die door de gebruikers worden geleverd. Niet-geaard materiaal verwijst naar gevallen waarin de LLM's informatie produceren die niet op feiten gebaseerd of onjuist is vergeleken met wat aanwezig was in de bronmaterialen. Vereist het insluiten en opmaken van documenten.
Beschermd materiaal voor tekst1 Beveiligde materiaaltekst beschrijft bekende tekstinhoud (bijvoorbeeld liedteksten, artikelen, recepten en geselecteerde webinhoud) die kan worden uitgevoerd door grote taalmodellen.
Beschermde materialen voor programmeercode Beveiligde materiaalcode beschrijft broncode die overeenkomt met een set broncode uit openbare opslagplaatsen, die kan worden uitgevoerd door grote taalmodellen zonder de juiste bronvermelding van bronopslagplaatsen.
Persoonlijk identificeerbare informatie (PII) Persoonlijk identificeerbare informatie (PII) verwijst naar alle informatie die kan worden gebruikt om een bepaalde persoon te identificeren. PII-detectie omvat het analyseren van tekstinhoud in LLM-voltooiingen en het filteren van piI's die zijn geretourneerd.

1 Als u eigenaar van tekstmateriaal bent en tekstinhoud wilt indienen voor beveiliging, dient u een aanvraag in.

2 Niet beschikbaar in niet-streamingscenario's; alleen beschikbaar voor streamingscenario's. De volgende regio's ondersteunen Groundedness Detection: VS - centraal, VS - oost, Frankrijk - centraal en Canada - oost

Scenario-details

Wanneer het inhoudsfiltersysteem schadelijke inhoud detecteert, krijgt u een foutmelding bij de API-aanroep als de prompt als ongepast wordt beschouwd, of finish_reason op het antwoord zal content_filter zijn om aan te geven dat een deel van de voltooiing is gefilterd. Wanneer u uw toepassing of systeem bouwt, moet u rekening houden met deze scenario's waarbij de inhoud die wordt geretourneerd door de Voltooiings-API wordt gefilterd, wat kan leiden tot onvolledige inhoud. Hoe u op deze informatie reageert, is toepassingsspecifiek. Het gedrag kan worden samengevat in de volgende punten:

  • Prompts die in een gefilterde categorie en met een bepaalde ernst zijn geclassificeerd, retourneren een HTTP 400-fout.
  • Niet-streaming-voltooiingsoproepen retourneren geen inhoud wanneer de inhoud wordt gefilterd. De finish_reason waarde is ingesteld op content_filter. In zeldzame gevallen met langere antwoorden kan een gedeeltelijk resultaat worden geretourneerd. In deze gevallen wordt de finish_reason bijgewerkt.
  • Voor aanroepen voor streaming-voltooiingen worden segmenten geretourneerd naar de gebruiker wanneer ze zijn voltooid. De service gaat door met streamen totdat een stoptoken of lengte bereikt wordt, of wanneer inhoud die is geclassificeerd in een gefilterde categorie en ernstniveaus wordt gedetecteerd.

Scenario: je verstuurt een niet-streaming-voltooiingsoproep waarin om meerdere uitvoer wordt gevraagd, en er is geen inhoud geclassificeerd in een gefilterde categorie of op niveaus van ernst.

De volgende tabel bevat een overzicht van de verschillende manieren waarop inhoudsfiltering kan worden weergegeven:

HTTP-antwoordcode Reactiegedrag
200 Wanneer alle generaties de filters doorgeven zoals geconfigureerd, bevat het antwoord geen details over inhoudsbeheer. De finish_reason voor elke generatie is stop of length.

Voorbeeld van nettolading van aanvraag:

{
    "prompt":"Text example", 
    "n": 3,
    "stream": false
}

Voorbeeld van antwoord-JSON:

{
    "id": "example-id",
    "object": "text_completion",
    "created": 1653666286,
    "model": "davinci",
    "choices": [
        {
            "text": "Response generated text",
            "index": 0,
            "finish_reason": "stop",
            "logprobs": null
        }
    ]
}

Scenario: Uw API-aanroep vraagt om meerdere antwoorden (N>1) en ten minste één van de antwoorden wordt gefilterd

HTTP-antwoordcode Reactiegedrag
200 De generaties die worden gefilterd, hebben een finish_reason waarde van content_filter.

Voorbeeld van nettolading van aanvraag:

{
    "prompt":"Text example",
    "n": 3,
    "stream": false
}

Voorbeeld van antwoord-JSON:

{
    "id": "example",
    "object": "text_completion",
    "created": 1653666831,
    "model": "ada",
    "choices": [
        {
            "text": "returned text 1",
            "index": 0,
            "finish_reason": "length",
            "logprobs": null
        },
        {
            "text": "returned text 2",
            "index": 1,
            "finish_reason": "content_filter",
            "logprobs": null
        }
    ]
}

Scenario: U verzendt een ongepaste invoerprompt naar de voltooiings-API (voor streaming of niet-streaming)

HTTP-antwoordcode Reactiegedrag
400 De API-aanroep mislukt wanneer de prompt een inhoudsfilter activeert zoals geconfigureerd. Wijzig de prompt en probeer het opnieuw.

Voorbeeld van nettolading van aanvraag:

{
    "prompt":"Content that triggered the filtering model"
}

Voorbeeld van antwoord-JSON:

"error": {
    "message": "The response was filtered",
    "type": null,
    "param": "prompt",
    "code": "content_filter",
    "status": 400
}

Scenario: U maakt een aanroep van streaming-voltooiingen; er is geen uitvoerinhoud geclassificeerd op een gefilterde categorie en ernst.

HTTP-antwoordcode Reactiegedrag
200 In dit geval wordt de aanroep teruggestreamd met de volledige generatie en finish_reason is ofwel length of stop voor elk gegenereerd antwoord.

Voorbeeld van nettolading van aanvraag:

{
    "prompt":"Text example",
    "n": 3,
    "stream": true
}

Voorbeeld van antwoord-JSON:

{
    "id": "cmpl-example",
    "object": "text_completion",
    "created": 1653670914,
    "model": "ada",
    "choices": [
        {
            "text": "last part of generation",
            "index": 2,
            "finish_reason": "stop",
            "logprobs": null
        }
    ]
}

Scenario: U doet een streaming voltooiingsoproep om meerdere voltooiingen op te vragen, waarbij ten minste een deel van de uitvoerinhoud wordt gefilterd.

HTTP-antwoordcode Reactiegedrag
200 Voor een bepaalde generatieindex bevat het laatste segment van de generatie een niet-null-waarde finish_reason . De waarde is content_filter wanneer de generatie wordt gefilterd.

Voorbeeld van nettolading van aanvraag:

{
    "prompt":"Text example",
    "n": 3,
    "stream": true
}

Voorbeeld van antwoord-JSON:

 {
    "id": "cmpl-example",
    "object": "text_completion",
    "created": 1653670515,
    "model": "ada",
    "choices": [
        {
            "text": "Last part of generated text streamed back",
            "index": 2,
            "finish_reason": "content_filter",
            "logprobs": null
        }
    ]
}

Scenario: het systeem voor inhoudsfiltering wordt niet uitgevoerd bij voltooiing

HTTP-antwoordcode Reactiegedrag
200 Als het inhoudsfiltersysteem niet beschikbaar is of de bewerking op een andere manier niet kan worden voltooid, wordt uw aanvraag nog steeds voltooid zonder inhoudsfiltering. U kunt bepalen dat het filteren niet is toegepast door te zoeken naar een foutbericht in het content_filter_results object.

Voorbeeld van nettolading van aanvraag:

{
    "prompt":"Text example",
    "n": 1,
    "stream": false
}

Voorbeeld van antwoord-JSON:

{
    "id": "cmpl-example",
    "object": "text_completion",
    "created": 1652294703,
    "model": "ada",
    "choices": [
        {
            "text": "generated text",
            "index": 0,
            "finish_reason": "length",
            "logprobs": null,
            "content_filter_results": {
                "error": {
                    "code": "content_filter_error",
                    "message": "The contents are not filtered"
                }
            }
        }
    ]
}

Beste praktijken

Overweeg als onderdeel van uw toepassingsontwerp de volgende best practices om een positieve ervaring met uw toepassing te bieden en tegelijkertijd mogelijke schade tot een minimum te beperken:

  • Bepaal hoe u scenario's wilt afhandelen waarbij uw gebruikers prompts verzenden die inhoud bevatten die is geclassificeerd op een gefilterd categorie- en ernstniveau of die anderszins misbruik maakt van uw toepassing.
  • Controleer de finish_reason om te zien of een voltooiing is gefilterd.
  • Controleer of er geen foutobject is in het content_filter_results (waarmee wordt aangegeven dat inhoudsfilters niet zijn uitgevoerd).
  • Als u het beveiligde materiaalcodemodel gebruikt in de annotatemodus, geeft u de bronvermeldings-URL weer wanneer u de code in uw toepassing weergeeft.