Share via


Tartalomszűrés

Fontos

A tartalomszűrési rendszer nincs alkalmazva a Whisper modell által feldolgozott kérésekre és befejezésekre az Azure OpenAI Servicesben. További információk a Whisper-modellről az Azure OpenAI-ban.

Az Azure OpenAI Szolgáltatás tartalmaz egy tartalomszűrési rendszert, amely az alapvető modellek mellett működik. Ez a rendszer úgy működik, hogy egyszerre futtatja a parancssort és a befejezést egy besorolási modell együttesén keresztül, amelynek célja a káros tartalom kimenetének észlelése és megakadályozása. A tartalomszűrési rendszer észleli és műveletet hajt végre a potenciálisan káros tartalmak meghatározott kategóriáiban mind a bemeneti kérésekben, mind a kimeneti befejezésekben. Az API-konfigurációk és az alkalmazás kialakításának eltérései hatással lehetnek az eredményekre és így a szűrési viselkedésre is.

A gyűlölet, a szexuális, az erőszak és az önkárosító kategóriák tartalomszűrési modelljeit kifejezetten a következő nyelveken képezték ki és tesztelték: angol, német, japán, spanyol, francia, olasz, portugál és kínai. A szolgáltatás azonban számos más nyelven is működhet, de a minőség eltérő lehet. Minden esetben saját tesztelést kell végeznie, hogy megbizonyosodjon, az Ön alkalmazása esetében is működik.

Az Azure OpenAI szolgáltatás a tartalomszűrési rendszer mellett monitorozást is végez, hogy észlelje azokat a tartalmakat és/vagy viselkedéseket, amelyek a szolgáltatás olyan használatát javasolják, amely megsértheti a vonatkozó termékfeltételeket. Az alkalmazással kapcsolatos kockázatok megértéséről és csökkentéséről az Azure OpenAI átláthatósági megjegyzésében talál további információt. A tartalomszűrés és a visszaélések monitorozása során az adatok feldolgozásával kapcsolatos további információkért tekintse meg az Azure OpenAI szolgáltatás adatait, adatvédelmi és biztonsági adatait.

A következő szakaszok a tartalomszűrési kategóriákról, a szűrési súlyossági szintekről és azok konfigurálhatóságáról, valamint az alkalmazástervezésben és -megvalósításban megfontolandó API-forgatókönyvekről nyújtanak tájékoztatást.

Tartalomszűrési kategóriák

Az Azure OpenAI szolgáltatásba integrált tartalomszűrési rendszer a következőket tartalmazza:

  • Neurális, többosztályos besorolási modellek a káros tartalmak észlelésére és szűrésére; a modellek négy kategóriát (gyűlölet, szexuális, erőszak és önkárosító) fednek le négy súlyossági szinten (biztonságos, alacsony, közepes és magas). A „biztonságos” súlyossági szinttel észlelt tartalom jegyzetekben van megjelölve, de nem lesz szűrve, és nem konfigurálható.
  • Egyéb választható besorolási modellek, amelyek célja a feltörési kockázat és a szöveg és a kód ismert tartalmainak észlelése; Ezek a modellek bináris osztályozók, amelyek jelzik, hogy a felhasználó vagy a modell viselkedése jailbreak támadásnak minősül-e, vagy egyezik-e az ismert szövegtel vagy forráskóddal. A modellek használata nem kötelező, de a védett anyagkódmodell használata szükséges lehet az ügyfél szerzői jogi kötelezettségvállalási lefedettségéhez.

Kockázati kategóriák

Kategória Leírás
Gyűlölet és méltányosság A gyűlöletkel és méltányossággal kapcsolatos sérelmek minden olyan tartalomra vonatkoznak, amely pejoratív vagy diszkriminatív nyelvet használ egy személyre vagy identitáscsoportra való hivatkozással e csoportok bizonyos megkülönböztető tulajdonságai alapján, beleértve többek között a faji, etnikai, nemzetiségi, nemi identitáscsoportokat és kifejezéseket, a szexuális orientációt, a vallást, a bevándorlási státuszt, a képességi állapotot, a személyes megjelenést, és a test mérete. 

A méltányosság annak biztosításával foglalkozik, hogy az AI-rendszerek méltányosan kezeljék az emberek minden csoportját anélkül, hogy hozzájárultak a meglévő társadalmi viszonossághoz. A gyűlöletbeszédhez hasonlóan a méltányossághoz kapcsolódó sérelmek az identitáscsoportok eltérő kezelésén alapulnak.  
Szexuális A szexuális leírások az anatómiai szervekhez és nemi szervekhez, romantikus kapcsolatokhoz, erotikus vagy szeretetteljes kifejezésekben ábrázolt cselekedetekhez, terhességhez, fizikai szexuális aktusokhoz kapcsolódnak, beleértve azokat is, amelyeket testi sértésként vagy erőszakos cselekményként ábrázolnak az ember akarata ellen, prostitúció, pornográfia és visszaélés.  
Erőszak Az erőszak azt a nyelvet írja le, amely olyan fizikai műveletekhez kapcsolódik, amelyek célja, hogy fájdalmat, sérülést, kárt okoznak vagy megöljenek valakit vagy valamit; fegyvereket, fegyvereket és kapcsolódó entitásokat, például gyártásokat, szövetségeket, jogszabályokat stb. ír le.
Önkárosítás Az önkárosítás olyan fizikai műveletekhez kapcsolódó nyelvet ír le, amelyek célja, hogy szándékosan megsérüljenek, megsérüljenek, megsérüljenek a testeik, vagy megöljék önmagukat.
Védett anyag szöveghez* A védett anyag szövege ismert szöveges tartalmakat (például dalszövegeket, cikkeket, recepteket és kiválasztott webes tartalmakat) ír le, amelyeket nagy nyelvi modellek képesek kiadni.
Kód védett anyaga A védett anyagkód olyan forráskódot ír le, amely megfelel a nyilvános adattárakból származó forráskódkészletnek, amelyet nagy nyelvi modellek képesek a forrástárak megfelelő idézete nélkül kiírni.

* Ha Ön a szöveges anyagok tulajdonosa, és szeretne szöveges tartalmat küldeni védelem céljából, küldjön be egy kérelmet.

Parancssori pajzsok

Típus Leírás
Parancssori pajzs a Jailbreak-támadásokhoz A Jailbreak-támadások olyan felhasználói kérések, amelyek a Generatív AI-modellt olyan viselkedések bemutatására késztetik, amelyeket a rendszerüzenetben beállított szabályok elkerülésére vagy megszegésére képeztek ki. Az ilyen támadások a bonyolult szerepjátéktól a biztonsági célkitűzés finom felforgatásán át változhatnak.
Védelem kérése közvetett támadásokhoz A közvetett támadások, más néven közvetett parancssori támadások vagy tartományközi parancssori injektálási támadások olyan potenciális biztonsági rések, amelyekben harmadik felek rosszindulatú utasításokat helyeznek el azon dokumentumokon belül, amelyekhez a Generative AI-rendszer hozzáférhet és feldolgozható. Dokumentumbeágyazást és formázást igényel.

Szöveges tartalom

Figyelmeztetés

A dokumentum Súlyosságdefiníciók lapja olyan káros tartalmakat tartalmaz, amelyek egyes olvasók számára zavaróak lehetnek.

Kép tartalma

Figyelmeztetés

A dokumentum Súlyosságdefiníciók lapja olyan káros tartalmakat tartalmaz, amelyek egyes olvasók számára zavaróak lehetnek.

Konfigurálhatóság (előzetes verzió)

Az alapértelmezett tartalomszűrési konfiguráció úgy van beállítva, hogy mind a négy tartalomkárosítási kategória közepes súlyossági küszöbértékén szűrjön mind a kérések, mind a befejezések esetében. Ez azt jelenti, hogy a közepes vagy magas súlyossági szinten észlelt tartalom szűrve van, míg az alacsony súlyossági szinten észlelt tartalmakat a tartalomszűrők nem szűrik. A konfigurálhatósági funkció előzetes verzióban érhető el, és lehetővé teszi az ügyfelek számára, hogy az egyes tartalomkategóriák tartalmát különböző súlyossági szinteken szűrjenek, az alábbi táblázatban leírtak szerint:

Súlyosság szűrve A kérésekhez konfigurálható Befejezésekhez konfigurálható Leírások
Alacsony, közepes, magas Igen Igen A legszigorúbb szűrési konfiguráció. A rendszer szűri az alacsony, közepes és magas súlyossági szinteken észlelt tartalmakat.
Közepes, magas Igen Igen Alapértelmezett beállítás. Az alacsony súlyosságú tartalom nem szűrt, a közepes és a magas szintű tartalmak szűrve lesznek.
Magas Igen Igen Az alacsony és közepes súlyossági szinteken észlelt tartalom nincs szűrve. A rendszer csak a magas súlyosságú tartalmakat szűri.
Nincsenek szűrők Ha jóváhagyták* Ha jóváhagyták* A rendszer a súlyossági szinttől függetlenül nem szűri a tartalmat. Jóváhagyást* igényel.

* Csak a módosított tartalomszűrésre jóváhagyott ügyfelek rendelkeznek teljes tartalomszűrési vezérlővel, és részlegesen vagy teljesen kikapcsolhatják a tartalomszűrőket. A tartalomszűrés-szabályzás nem vonatkozik a DALL-E (előzetes verzió) vagy a GPT-4 Turbo with Vision (előzetes verzió) tartalomszűrőire. A módosított tartalomszűrőkre az alábbi űrlapon jelentkezhet: Azure OpenAI Korlátozott hozzáférésű felülvizsgálat: Módosított tartalomszűrés (microsoft.com).

Az ügyfelek feladata annak biztosítása, hogy az Azure OpenAI-t integráló alkalmazások megfeleljenek a magatartási kódexnek.

A tartalomszűrési konfigurációk egy Azure AI Studio-erőforráson belül jönnek létre, és az üzembe helyezésekkel társíthatók. A konfigurálhatóságról itt talál további információt.

Forgatókönyv részletei

Amikor a tartalomszűrési rendszer kártékony tartalmat észlel, hibaüzenet jelenik meg az API-hívásban, ha a kérés nem megfelelőnek minősül, vagy a finish_reason válasz content_filter azt jelzi, hogy a befejezés egy része szűrve lett. Az alkalmazás vagy a rendszer létrehozásakor figyelembe kell vennie azokat a forgatókönyveket, amelyekben a Completions API által visszaadott tartalom szűrve van, ami hiányos tartalmat eredményezhet. Az információk alapján történő működés alkalmazásspecifikus lesz. A viselkedés az alábbi pontokban foglalható össze:

  • A szűrt kategóriába és súlyossági szintre besorolt kérések HTTP 400-es hibát adnak vissza.
  • A nem streamelt befejezési hívások nem adnak vissza tartalmat a tartalom szűrésekor. Az finish_reason érték content_filter lesz beállítva. Ritkán hosszabb válaszok esetén részleges eredmény adható vissza. Ezekben az esetekben a rendszer frissíti a finish_reason frissítést.
  • A streamelési befejezési hívások esetében a szegmensek a befejezett állapotban vissza lesznek adva a felhasználónak. A szolgáltatás addig folytatja a streamelést, amíg el nem éri a leállítási jogkivonatot, a hosszt, vagy ha a rendszer szűrt kategóriába és súlyossági szintre besorolt tartalmat észlel.

Forgatókönyv: Egy nem streamelt befejezési hívást küld, amely több kimenetet kér; egyetlen tartalom sincs szűrt kategória és súlyossági szinten besorolva

Az alábbi táblázat a tartalomszűrés különböző módjait ismerteti:

HTTP-válaszkód Válasz viselkedése
200 Azokban az esetekben, amikor az összes generáció konfigurált módon adja át a szűrőket, a rendszer nem ad hozzá con sátormód ration részleteket a válaszhoz. Az finish_reason egyes generációknál a leállítás vagy a hossz lesz.

Példa a kérelem hasznos adataira:

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

Példa válasz JSON-ra:

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

Forgatókönyv: Az API-hívás több választ kér (N>1), és legalább egy válasz szűrve van

HTTP-válaszkód Válasz viselkedése
200 A szűrt generációk értéke content_filtera következő leszfinish_reason: .

Példa a kérelem hasznos adataira:

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

Példa válasz JSON-ra:

{
    "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
        }
    ]
}

Forgatókönyv: A rendszer nem megfelelő bemeneti kérést küld a befejezési API-nak (streameléshez vagy nem streameléshez)

HTTP-válaszkód Válasz viselkedése
400 Az API-hívás meghiúsul, ha a parancssor a konfigurált tartalomszűrőt aktiválja. Módosítsa a kérést, és próbálkozzon újra.

Példa a kérelem hasznos adataira:

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

Példa válasz JSON-ra:

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

Forgatókönyv: Streamelési befejezési hívást kezdeményez; a kimeneti tartalom nem szűrt kategória és súlyosság szintjén van besorolva

HTTP-válaszkód Válasz viselkedése
200 Ebben az esetben a hívás a teljes generációval folytatódik, és finish_reason "hossz" vagy "stop" lesz az egyes generált válaszok esetében.

Példa a kérelem hasznos adataira:

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

Példa válasz JSON-ra:

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

Forgatókönyv: Streamelési befejezési hívást kezdeményez, amely több befejezést kér, és a kimeneti tartalom legalább egy része szűrve van

HTTP-válaszkód Válasz viselkedése
200 Egy adott generációs index esetében a generáció utolsó adattömbje nem null finish_reason értéket tartalmaz. Az érték az, content_filter amikor a generáció szűrése megtörtént.

Példa a kérelem hasznos adataira:

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

Példa válasz JSON-ra:

 {
    "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
        }
    ]
}

Forgatókönyv: A tartalomszűrési rendszer nem fut a befejezéskor

HTTP-válaszkód Válasz viselkedése
200 Ha a tartalomszűrési rendszer leáll, vagy más módon nem tudja időben befejezni a műveletet, a kérés tartalomszűrés nélkül is befejeződik. Ha az objektumban content_filter_result hibaüzenetet keres, megállapíthatja, hogy a szűrés nem lett alkalmazva.

Példa a kérelem hasznos adataira:

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

Példa válasz JSON-ra:

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

Jegyzetek

Tartalomszűrők

Ha a széljegyzetek engedélyezve vannak az alábbi kódrészletben látható módon, a rendszer a következő információkat adja vissza az API-n keresztül a gyűlölet és igazságosság, a szexuális, az erőszak és az önsértés kategóriákhoz:

  • tartalomszűrési kategória (gyűlölet, szexuális, erőszak, self_harm)
  • a súlyossági szint (biztonságos, alacsony, közepes vagy magas) az egyes tartalomkategóriákban
  • szűrési állapot (igaz vagy hamis).

Választható modellek

Az opcionális modellek engedélyezhetők széljegyzetekben (a tartalom megjelölésekor, de nem szűrt állapotban lévő információkat ad vissza) vagy szűrési módban (a tartalom megjelölése és szűrésekor kapott információkat adja vissza).

Ha a széljegyzetek engedélyezve vannak az alábbi kódrészletekben látható módon, az API a következő információkat adja vissza az opcionális modellekhez:

Modell Hozam
Szökik észlelt (igaz vagy hamis),
szűrt (igaz vagy hamis)
közvetett támadások észlelt (igaz vagy hamis),
szűrt (igaz vagy hamis)
védett anyag szövege észlelt (igaz vagy hamis),
szűrt (igaz vagy hamis)
védett anyagkód észlelt (igaz vagy hamis),
szűrt (igaz vagy hamis),
példa a nyilvános GitHub-adattárra, ahol a kódrészlet található,
az adattár licence

Ha kódot jelenít meg az alkalmazásban, határozottan javasoljuk, hogy az alkalmazás a széljegyzetekből származó példa idézetet is megjelenítse. Előfordulhat, hogy az ügyfél szerzői jogi kötelezettségvállalási lefedettségéhez az idézett licencnek való megfelelésre is szükség lehet.

A széljegyzetek elérhetőségét az egyes API-verziókban az alábbi táblázatban tekintheti meg:

Kategória 2024-02-01 GA 2024-04-01-preview 2023-10-01-preview 2023-06-01-preview
Utálom
Erőszak
Szexuális
Önkárosítás
A Shield parancssora a jailbreak-támadásokhoz
A Shield indirekt támadásainak kérése
Védett anyag szövege
Védett anyagkód
Profanity blocklist
Egyéni tiltólista
# os.getenv() for the endpoint and key assumes that you are using environment variables.

import os
from openai import AzureOpenAI
client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
    api_version="2024-03-01-preview",
    azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") 
    )

response = client.completions.create(
    model="gpt-35-turbo-instruct", # model = "deployment_name".
    prompt="{Example prompt where a severity level of low is detected}" 
    # Content that is detected at severity level medium or high is filtered, 
    # while content detected at severity level low isn't filtered by the content filters.
)

print(response.model_dump_json(indent=2))

Hozam

{ 
  "choices": [ 
    { 
      "content_filter_results": { 
        "hate": { 
          "filtered": false, 
          "severity": "safe" 
        }, 
        "protected_material_code": { 
          "citation": { 
            "URL": " https://github.com/username/repository-name/path/to/file-example.txt", 
            "license": "EXAMPLE-LICENSE" 
          }, 
          "detected": true,
          "filtered": false 
        }, 
        "protected_material_text": { 
          "detected": false, 
          "filtered": false 
        }, 
        "self_harm": { 
          "filtered": false, 
          "severity": "safe" 
        }, 
        "sexual": { 
          "filtered": false, 
          "severity": "safe" 
        }, 
        "violence": { 
          "filtered": false, 
          "severity": "safe" 
        } 
      }, 
      "finish_reason": "stop", 
      "index": 0, 
      "message": { 
        "content": "Example model response will be returned ", 
        "role": "assistant" 
      } 
    } 
  ], 
  "created": 1699386280, 
  "id": "chatcmpl-8IMI4HzcmcK6I77vpOJCPt0Vcf8zJ", 
  "model": "gpt-35-turbo-instruct", 
  "object": "text.completion",
  "usage": { 
    "completion_tokens": 40, 
    "prompt_tokens": 11, 
    "total_tokens": 417 
  },  
  "prompt_filter_results": [ 
    { 
      "content_filter_results": { 
        "hate": { 
          "filtered": false, 
          "severity": "safe" 
        }, 
        "jailbreak": { 
          "detected": false, 
          "filtered": false 
        }, 
        "profanity": { 
          "detected": false, 
          "filtered": false 
        }, 
        "self_harm": { 
          "filtered": false, 
          "severity": "safe" 
        }, 
        "sexual": { 
          "filtered": false, 
          "severity": "safe" 
        }, 
        "violence": { 
          "filtered": false, 
          "severity": "safe" 
        } 
      }, 
      "prompt_index": 0 
    } 
  ]
} 

Az Azure OpenAI-hoz készült REST API-végpontok következtetésével, valamint a csevegések és a befejezések létrehozásával kapcsolatos részletekért kövesse az Azure OpenAI szolgáltatás REST API-referencia-útmutatóját. A rendszer az összes forgatókönyvhöz visszaadja a megjegyzéseket, amikor az előzetes verziójú API-verziót használja, és a GA API-verziót 2023-06-01-preview2024-02-01is használja.

Példaforgatókönyv: A rendszer egy szűrt kategóriára és súlyossági szintre besorolt tartalmat tartalmazó bemeneti kérést küld a befejezési API-nak

{
    "error": {
        "message": "The response was filtered due to the prompt triggering Azure Content management policy. 
                   Please modify your prompt and retry. To learn more about our content filtering policies
                   please read our documentation: https://go.microsoft.com/fwlink/?linkid=21298766",
        "type": null,
        "param": "prompt",
        "code": "content_filter",
        "status": 400,
        "innererror": {
            "code": "ResponsibleAIPolicyViolation",
            "content_filter_result": {
                "hate": {
                    "filtered": true,
                    "severity": "high"
                },
                "self-harm": {
                    "filtered": true,
                    "severity": "high"
                },
                "sexual": {
                    "filtered": false,
                    "severity": "safe"
                },
                "violence": {
                    "filtered":true,
                    "severity": "medium"
                }
            }
        }
    }
}

Dokumentumbeágyazás kérésekbe

Az Azure OpenAI felelős AI-intézkedéseinek egyik kulcsfontosságú eleme a tartalombiztonsági rendszer. Ez a rendszer az alapvető GPT-modell mellett fut a modell bemenetének és kimenetének szabálytalanságainak monitorozásához. Teljesítménye javul, ha különbséget tud tenni a parancssor különböző elemei között, például a rendszer bemenete, a felhasználói bemenet és az AI-asszisztens kimenete között.

A továbbfejlesztett észlelési képességek érdekében a kéréseket az alábbi ajánlott módszerek szerint kell formázni.

Csevegés befejezések API

A Csevegés befejezése API definíció szerint van strukturálva. Az üzenetlista egy-egy hozzárendelt szerepkörrel rendelkező üzenetlistából áll.

A biztonsági rendszer elemzi ezt a strukturált formátumot, és alkalmazza a következő viselkedést:

  • A legújabb "felhasználói" tartalmak esetében a rendszer a következő RAI-kockázatkategóriákat észleli:
    • Utálom
    • Szexuális
    • Erőszak
    • Önkárosítás
    • Jailbreak (nem kötelező)

Ez egy példa üzenettömb:

{"role": "system", "content": "Provide some context and/or instructions to the model."}, 
{"role": "user", "content": "Example question goes here."}, 
{"role": "assistant", "content": "Example answer goes here."}, 
{"role": "user", "content": "First question/message for the model to actually respond to."} 

Dokumentumok beágyazása a parancssorba

A legutóbbi felhasználói tartalom észlelése mellett az Azure OpenAI támogatja a környezeti dokumentumokban lévő konkrét kockázatok észlelését is a Prompt Shields – Indirect Prompt Attack Detection használatával. A következő dokumentumelválasztóval kell azonosítania a bemenet azon részeit, amelyek egy dokumentumot (pl. lekért webhely, e-mail stb.).

<documents> 
*insert your document content here* 
</documents>

Ha így tesz, a következő lehetőségek érhetők el a címkézett dokumentumok észleléséhez:

  • Minden címkézett "dokumentum" tartalomon észlelje a következő kategóriákat:
    • Közvetett támadások (nem kötelező)

Íme egy példa csevegés befejezésére szolgáló üzenetek tömbje:

{"role": "system", "content": "Provide some context and/or instructions to the model, including document context. \"\"\" <documents>\n*insert your document content here*\n<\\documents> \"\"\""}, 

{"role": "user", "content": "First question/message for the model to actually respond to."} 

JSON menekülés

Ha észlelés céljából címkéz fel nem használt dokumentumokat, a dokumentum tartalmát JSON-feloldással kell feloldani, hogy az Azure OpenAI biztonsági rendszere sikeres elemzést biztosíthasson.

Lásd például a következő e-mail-törzset:

Hello Josè, 

I hope this email finds you well today.

A JSON szökésével a következőt olvasná:

Hello Jos\u00E9,\nI hope this email finds you well today. 

A csevegés befejező környezetében a szökött szöveg a következőt olvassa fel:

{"role": "system", "content": "Provide some context and/or instructions to the model, including document context. \"\"\" <documents>\n Hello Jos\\u00E9,\\nI hope this email finds you well today. \n<\\documents> \"\"\""}, 

{"role": "user", "content": "First question/message for the model to actually respond to."}

Tartalomstreamelés

Ez a szakasz az Azure OpenAI tartalomstreamelési felületét és lehetőségeit ismerteti. Jóváhagyás esetén lehetősége van arra, hogy a létrehozott API-ból fogadjon tartalmat, ahelyett, hogy a tartalomszűrők átadására ellenőrzött tartalomtömbökre vár.

Alapértelmezett

A tartalomszűrési rendszer alapértelmezés szerint integrálva van, és minden ügyfél számára engedélyezve van. Az alapértelmezett streamelési forgatókönyvben a befejező tartalom pufferelt, a tartalomszűrési rendszer a pufferelt tartalomon fut, és – a tartalomszűrési konfigurációtól függően – a tartalom visszakerül a felhasználóhoz, ha az nem sérti a tartalomszűrési szabályzatot (a Microsoft alapértelmezett vagy egyéni felhasználói konfigurációját), vagy azonnal le van tiltva, és tartalomszűrési hibát ad vissza. a káros befejezési tartalom visszaadása nélkül. Ez a folyamat a stream végéig ismétlődik. A tartalom teljes körű vizsgálata a tartalomszűrési szabályzatnak megfelelően történik, mielőtt visszakerül a felhasználóhoz. Ebben az esetben a tartalom nem jogkivonatonként, hanem a megfelelő pufferméretű "tartalomtömbökben" jelenik meg.

Aszinkron módosított szűrő

A módosított tartalomszűrőkre jóváhagyott ügyfelek az aszinkron módosított szűrőt további lehetőségként választhatják ki, új streamelési élményt biztosítva. Ebben az esetben a tartalomszűrők aszinkron módon futnak, és a rendszer azonnal visszaadja a befejezett tartalmat egy zökkenőmentes jogkivonatonkénti streamelési felülettel. Nincs pufferelt tartalom, ami nulla késést tesz lehetővé.

Az ügyfeleknek tisztában kell lenniük azzal, hogy bár a funkció javítja a késést, ez kompromisszum a modellkimenet kisebb szakaszainak biztonságával és valós idejű ellenőrzésével szemben. Mivel a tartalomszűrők aszinkron módon futnak, a con sátormód ration üzenetek és a szabályzatsértési jelek késleltetve jelennek meg, ami azt jelenti, hogy az egyébként azonnal szűrt káros tartalmak egyes szakaszai megjelenhetnek a felhasználó számára.

Széljegyzetek: A széljegyzetek és a con sátormód ration üzenetek folyamatosan jelennek meg a stream során. Határozottan javasoljuk, hogy széljegyzeteket használjon az alkalmazásban, és implementáljon további AI-tartalombiztonsági mechanizmusokat, például a tartalom újraszövegezését vagy további biztonsági információk visszaadását a felhasználónak.

Tartalomszűrési jel: A tartalomszűrés hibajelzése késik. Szabályzatsértés esetén a rendszer azonnal visszaadja, amint elérhető, és a stream le van állítva. A tartalomszűrési jel a szabályzatsértő tartalom ~1000 karakteres ablakában garantált.

Az aszinkron módosított szűrőhöz való hozzáféréshez jóváhagyás szükséges a módosított tartalomszűrőhöz. Az alkalmazás itt található. Az Azure OpenAI Studióban való engedélyezéséhez kövesse a Tartalomszűrő útmutatót egy új tartalomszűrési konfiguráció létrehozásához, és válassza az Aszinkron módosított szűrő lehetőséget a Streamelési szakaszban.

Tartalomszűrési módok összehasonlítása

Összehasonlítás Streamelés – Alapértelmezett Streamelés – Aszinkron módosított szűrő
Állapot FE Nyilvános előzetes verzió
Jogosultság Az összes ügyfelet Módosított tartalomszűrésre jóváhagyott ügyfelek
Engedélyezés Alapértelmezés szerint engedélyezve, nincs szükség műveletre A módosított tartalomszűréshez jóváhagyott ügyfelek közvetlenül az Azure OpenAI Studióban konfigurálhatják azt (az üzembe helyezés szintjén alkalmazott tartalomszűrési konfiguráció részeként)
Modalitás és rendelkezésre állás Szöveg; az összes GPT-modell Szöveg; gpt-4-vision kivételével minden GPT-modell
Streamelési élmény A tartalom pufferelése és visszaadása adattömbökben Nulla késés (nincs pufferelés, a szűrők aszinkron módon futnak)
Tartalomszűrési jel Azonnali szűrési jel Késleltetett szűrési jel (legfeljebb ~1000 karakteres növekményekben)
Tartalomszűrési konfigurációk Támogatja az alapértelmezett és az ügyfél által definiált szűrőbeállításokat (beleértve az opcionális modelleket is) Támogatja az alapértelmezett és az ügyfél által definiált szűrőbeállításokat (beleértve az opcionális modelleket is)

Széljegyzetek és mintaválaszok

Üzenet a széljegyzetek megadására

Ez megegyezik az alapértelmezett széljegyzetekkel.

data: { 
    "id": "", 
    "object": "", 
    "created": 0, 
    "model": "", 
    "prompt_filter_results": [ 
        { 
            "prompt_index": 0, 
            "content_filter_results": { ... } 
        } 
    ], 
    "choices": [], 
    "usage": null 
} 

Befejezési jogkivonat üzenete

A befejező üzeneteket a rendszer azonnal továbbítja. Először nem végez moderálást, és kezdetben nem ad meg széljegyzeteket.

data: { 
    "id": "chatcmpl-7rAJvsS1QQCDuZYDDdQuMJVMV3x3N", 
    "object": "chat.completion.chunk", 
    "created": 1692905411, 
    "model": "gpt-35-turbo", 
    "choices": [ 
        { 
            "index": 0, 
            "finish_reason": null, 
            "delta": { 
                "content": "Color" 
            } 
        } 
    ], 
    "usage": null 
} 

Széljegyzet üzenet

A szövegmező mindig üres sztring lesz, ami azt jelzi, hogy nincsenek új jogkivonatok. A széljegyzetek csak a már elküldött jogkivonatok szempontjából lesznek relevánsak. Előfordulhat, hogy több széljegyzetüzenet is ugyanarra a jogkivonatra hivatkozik.

"start_offset" és "end_offset" alacsony részletességű eltolódások a szövegben (a parancssor elején 0-val) annak megjelöléséhez, hogy melyik szöveghez releváns a széljegyzet.

"check_offset" A szöveg teljes moderálásának módját jelzi. Ez a jövőbeli széljegyzetek értékeinek kizárólagos alsó határa "end_offset" . Nem csökken.

data: { 
    "id": "", 
    "object": "", 
    "created": 0, 
    "model": "", 
    "choices": [ 
        { 
            "index": 0, 
            "finish_reason": null, 
            "content_filter_results": { ... }, 
            "content_filter_raw": [ ... ], 
            "content_filter_offsets": { 
                "check_offset": 44, 
                "start_offset": 44, 
                "end_offset": 198 
            } 
        } 
    ], 
    "usage": null 
} 

Minta válaszfolyam (szűrőket ad át)

Az alábbiakban egy valódi, aszinkron módosított szűrőt használó csevegés-befejezési válasz látható. Figyelje meg, hogy a parancssori széljegyzetek nem változnak, a befejező jogkivonatok széljegyzetek nélkül lesznek elküldve, és az új széljegyzetüzenetek jogkivonatok nélkül lesznek elküldve – ehelyett bizonyos tartalomszűrő-eltolásokhoz vannak társítva.

{"temperature": 0, "frequency_penalty": 0, "presence_penalty": 1.0, "top_p": 1.0, "max_tokens": 800, "messages": [{"role": "user", "content": "What is color?"}], "stream": true}

data: {"id":"","object":"","created":0,"model":"","prompt_annotations":[{"prompt_index":0,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}}}],"choices":[],"usage":null} 

data: {"id":"chatcmpl-7rCNsVeZy0PGnX3H6jK8STps5nZUY","object":"chat.completion.chunk","created":1692913344,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"role":"assistant"}}],"usage":null} 

data: {"id":"chatcmpl-7rCNsVeZy0PGnX3H6jK8STps5nZUY","object":"chat.completion.chunk","created":1692913344,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":"Color"}}],"usage":null} 

data: {"id":"chatcmpl-7rCNsVeZy0PGnX3H6jK8STps5nZUY","object":"chat.completion.chunk","created":1692913344,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":" is"}}],"usage":null} 

data: {"id":"chatcmpl-7rCNsVeZy0PGnX3H6jK8STps5nZUY","object":"chat.completion.chunk","created":1692913344,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":" a"}}],"usage":null} 

... 

data: {"id":"","object":"","created":0,"model":"","choices":[{"index":0,"finish_reason":null,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}},"content_filter_offsets":{"check_offset":44,"start_offset":44,"end_offset":198}}],"usage":null} 

... 

data: {"id":"chatcmpl-7rCNsVeZy0PGnX3H6jK8STps5nZUY","object":"chat.completion.chunk","created":1692913344,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":"stop","delta":{}}],"usage":null} 

data: {"id":"","object":"","created":0,"model":"","choices":[{"index":0,"finish_reason":null,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}},"content_filter_offsets":{"check_offset":506,"start_offset":44,"end_offset":571}}],"usage":null} 

data: [DONE] 

Minta válaszfolyam (szűrők által blokkolva)

{"temperature": 0, "frequency_penalty": 0, "presence_penalty": 1.0, "top_p": 1.0, "max_tokens": 800, "messages": [{"role": "user", "content": "Tell me the lyrics to \"Hey Jude\"."}], "stream": true}

data: {"id":"","object":"","created":0,"model":"","prompt_filter_results":[{"prompt_index":0,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}}}],"choices":[],"usage":null} 

data: {"id":"chatcmpl-8JCbt5d4luUIhYCI7YH4dQK7hnHx2","object":"chat.completion.chunk","created":1699587397,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"role":"assistant"}}],"usage":null} 

data: {"id":"chatcmpl-8JCbt5d4luUIhYCI7YH4dQK7hnHx2","object":"chat.completion.chunk","created":1699587397,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":"Hey"}}],"usage":null} 

data: {"id":"chatcmpl-8JCbt5d4luUIhYCI7YH4dQK7hnHx2","object":"chat.completion.chunk","created":1699587397,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":" Jude"}}],"usage":null} 

data: {"id":"chatcmpl-8JCbt5d4luUIhYCI7YH4dQK7hnHx2","object":"chat.completion.chunk","created":1699587397,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":","}}],"usage":null} 

... 

data: {"id":"chatcmpl-8JCbt5d4luUIhYCI7YH4dQK7hnHx2","object":"chat.completion.chunk","created":1699587397,"model":"gpt-35- 

turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":" better"}}],"usage":null} 

data: {"id":"","object":"","created":0,"model":"","choices":[{"index":0,"finish_reason":null,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}},"content_filter_offsets":{"check_offset":65,"start_offset":65,"end_offset":1056}}],"usage":null} 

data: {"id":"","object":"","created":0,"model":"","choices":[{"index":0,"finish_reason":"content_filter","content_filter_results":{"protected_material_text":{"detected":true,"filtered":true}},"content_filter_offsets":{"check_offset":65,"start_offset":65,"end_offset":1056}}],"usage":null} 

data: [DONE] 

Fontos

Amikor a rendszer elindítja a tartalomszűrést egy kérdésre, és "status": 400 a válasz részeként egy üzenet érkezik, a kérésért díjat számítunk fel, mivel a kérést a szolgáltatás kiértékelte. A díjak akkor is felmerülnek , ha a "status":200 rendszer a következővel "finish_reason": "content_filter"érkezik: . Ebben az esetben a kérés nem tartalmazott problémákat, de a modell által generált befejezést a rendszer úgy észlelte, hogy megsérti a tartalomszűrési szabályokat, ami a befejezés szűrését eredményezi.

Ajánlott eljárások

Az alkalmazás kialakítása során vegye figyelembe az alábbi bevált gyakorlatokat, amelyekkel pozitív élményt biztosíthat az alkalmazásban, és minimalizálhatja a potenciális károkat:

  • Döntse el, hogyan szeretné kezelni azokat az eseteket, amikor a felhasználók olyan promptokat küldenek be, amelyek szűrt kategóriába és súlyossági szintre besorolt tartalmakat érintenek, vagy más módon nem megfelelő módon használják az alkalmazást.
  • A következő helyen ellenőrizheti, hogy a kimenet meg van-e szűrve: finish_reason.
  • Ellenőrizze, hogy nincs-e hibaobjektum itt: content_filter_result (ami azt jelzi, hogy a tartalomszűrők nem futottak le).
  • Ha a védett anyagkódmodellt széljegyzet módban használja, akkor az idézet URL-címe jelenik meg, amikor a kódot az alkalmazásban jeleníti meg.

Következő lépések