Filtrování obsahu

Důležité

Systém filtrování obsahu se nepoužije na prompty a dokončená zadání zpracovávané modelem Whisper ve službě Azure OpenAI. Přečtěte si další informace o modelu Whisper v Azure OpenAI.

Služba Azure OpenAI zahrnuje systém filtrování obsahu, který funguje společně s základními modely. Tento systém funguje spuštěním výzvy i dokončení prostřednictvím souboru klasifikačních modelů zaměřených na detekci a zabránění výstupu škodlivého obsahu. Systém filtrování obsahu zjistí a provede akce s konkrétními kategoriemi potenciálně škodlivého obsahu ve vstupních výzev i dokončení výstupu. Varianty konfigurací rozhraní API a návrhu aplikací můžou mít vliv na dokončená zadání a filtrování chování.

Modely filtrování obsahu pro kategorie nenávisti, sexuálního, násilí a sebepoškozování byly speciálně natrénovány a testovány na následujících jazycích: angličtina, němčina, japonština, španělština, francouzština, italština, portugalština a čínština. Služba ale může fungovat v mnoha dalších jazycích, ale kvalita se může lišit. Ve všech případech byste měli provést vlastní testování, abyste se ujistili, že to pro vaši aplikaci funguje.

Kromě systému filtrování obsahu služba Azure OpenAI provádí monitorování za účelem zjištění obsahu nebo chování, které navrhují použití služby způsobem, který by mohl porušit příslušné podmínky produktu. Další informace o pochopení a zmírnění rizik spojených s vaší aplikací najdete v poznámce transparentnosti pro Azure OpenAI. Další informace o tom, jak se data zpracovávají pro filtrování obsahu a monitorování zneužití, najdete v tématu Data, ochrana osobních údajů a zabezpečení pro službu Azure OpenAI.

Následující části obsahují informace o kategoriích filtrování obsahu, úrovních závažnosti filtrování a jejich konfigurovatelnosti a scénářích rozhraní API, které je potřeba zvážit při návrhu a implementaci aplikace.

Kategorie filtrování obsahu

Systém filtrování obsahu integrovaný ve službě Azure OpenAI obsahuje:

  • Neurální klasifikační modely s více třídami zaměřené na detekci a filtrování škodlivého obsahu; modely pokrývají čtyři kategorie (nenávist, sexuální, násilí a sebepoškozování) ve čtyřech úrovních závažnosti (bezpečné, nízké, střední a vysoké). Obsah zjištěný na úrovni závažnosti „bezpečný“ je označený v poznámkách, ale není předmětem filtrování a není konfigurovatelný.
  • Další volitelné klasifikační modely zaměřené na detekci rizika jailbreaku a známého obsahu pro text a kód; tyto modely jsou binární klasifikátory, které označují, jestli chování uživatele nebo modelu odpovídá útoku s jailbreakem nebo shodu se známým textem nebo zdrojovým kódem. Použití těchto modelů je volitelné, ale použití modelu kódu chráněného materiálu může být vyžadováno pro pokrytí závazku autorských práv zákazníka.

Kategorie škod

Kategorie Popis
Nenávist a nestrannost Škody související s nenávistí a nestranností odkazují na veškerý obsah, který útoky nebo používá pejorativní nebo nediskriminační jazyk s odkazem na osobu nebo skupiny identit na základě určitých atributů různých skupin, včetně rasy, etnického původu, státní příslušnosti, skupin identit pohlaví a výrazu, sexuální orientace, náboženství, statusu přistěhovalectví, stavu schopnosti, osobního vzhledu, a velikost těla. 

Nestrannost se zabývá zajištěním, aby systémy AI přistupovaly ke všem skupinám lidí spravedlivě, aniž by přispěly k existujícím společenským nepravostem. Podobně jako nenávistná řeč se poškození související se nestranností závisí na různorodé léčbě skupin identit.  
Sexuální Sexuální popis jazyka související s anatomickými orgány a pohlavními orgány, romantickými vztahy, působí v erotických nebo laskavých termínech, těhotenství, fyzické sexuální činy, včetně těch, které jsou znázorněny jako útok nebo vynucený sexuální násilí proti willu, prostituce, pornografii a zneužívání.  
Násilí Násilí popisuje jazyk související s fyzickými činy, které mají ublížit, poškodit, poškodit nebo zabít někoho nebo něco; popisuje zbraně, zbraně a související entity, jako jsou výroba, sdružení, právní předpisy atd.
Sebepoškozování Sebepoškozování popisuje jazyk související s fyzickými akcemi, jejichž účelem je úmyslně ublížit, poškodit, poškodit tělo nebo zabít sebe.
Riziko jailbreaku Útoky s jailbreakem jsou výzvy uživatelů navržené tak, aby vyvolaly model generující AI na chování, které bylo natrénováno, aby se zabránilo nebo přerušilo pravidla nastavená v systémové zprávě. Takové útoky se mohou lišit od složité role až po drobné subverze bezpečnostního cíle.
Chráněný materiál pro text* Chráněný materiálový text popisuje známý textový obsah (například text skladby, články, recepty a vybraný webový obsah), který lze vypisovat velkými jazykovými modely.
Chráněný materiál pro kód Chráněný kód materiálu popisuje zdrojový kód, který odpovídá sadě zdrojového kódu z veřejných úložišť, které lze vypisovat velkými jazykovými modely bez správné citace zdrojových úložišť.

* Pokud jste vlastníkem textového materiálu a chcete odeslat textový obsah k ochraně, vytvořte žádost.

Textový obsah

Upozorňující

Karta Definice závažnosti v tomto dokumentu obsahuje příklady škodlivého obsahu, který může být pro některé čtenáře rušivý.

Obsah obrázku

Upozorňující

Karta Definice závažnosti v tomto dokumentu obsahuje příklady škodlivého obsahu, který může být pro některé čtenáře rušivý.

Konfigurovatelnost (Preview)

Výchozí konfigurace filtrování obsahu je nastavená tak, aby filtrovat na střední prahovou hodnotu závažnosti pro všechny čtyři kategorie poškození obsahu pro výzvy i dokončení. To znamená, že obsah zjištěný na střední nebo vysoké úrovni závažnosti je filtrovaný, zatímco obsah zjištěný na úrovni závažnosti není filtrován filtry obsahu. Funkce konfigurovatelnosti je dostupná ve verzi Preview a umožňuje zákazníkům upravit nastavení samostatně pro výzvy a dokončení a filtrovat obsah pro každou kategorii obsahu na různých úrovních závažnosti, jak je popsáno v následující tabulce:

Filtrovaná závažnost Konfigurovatelné pro výzvy Konfigurovatelné pro dokončení Popisy
Nízká, střední, vysoká Ano Yes Nejtěsnější konfigurace filtrování. Obsah zjištěný na úrovních závažnosti je nízký, střední a vysoký filtr.
Střední, vysoká Ano Yes Výchozí nastavení Obsah zjištěný na úrovni závažnosti není filtrovaný, obsah na střední a vysoké úrovni se filtruje.
Vysoká Ano Yes Obsah zjištěný na úrovních závažnosti nízký a střední není filtrovaný. Filtruje se pouze obsah na úrovni závažnosti.
Žádné filtry Pokud je schváleno* Pokud je schváleno* Žádný obsah se nefiltruje bez ohledu na zjištěnou úroveň závažnosti. Vyžaduje schválení*.

* Úplnou kontrolu filtrování obsahu mají jenom zákazníci, kteří byli schváleni pro filtrování upraveného obsahu, a můžou filtry obsahu částečně nebo úplně vypnout. Ovládací prvek filtrování obsahu se nevztahuje na filtry obsahu pro DALL-E (Preview) nebo GPT-4 Turbo s obrazem (Preview). Použít pro upravené filtry obsahu pomocí tohoto formuláře: Azure OpenAI Limited Access Review: Modified Content Filtering (microsoft.com).

Zákazníci zodpovídají za zajištění toho, aby aplikace integrující Azure OpenAI dodržovaly pravidla chování.

Konfigurace filtrování obsahu se vytvářejí v rámci prostředku v Azure AI Studiu a dají se přidružit k nasazením. Další informace o možnosti konfigurace najdete tady.

Podrobnosti scénáře

Když systém filtrování obsahu zjistí škodlivý obsah, zobrazí se při volání rozhraní API chyba, pokud byla výzva považována za nevhodnou, nebo finish_reason odpověď v content_filter odpovědi značí, že se některá z dokončení vyfiltrovala. Při vytváření aplikace nebo systému budete chtít zohlednit tyto scénáře, kdy se filtruje obsah vrácený rozhraním API pro dokončování, což může vést k neúplnosti obsahu. Způsob reakce na tyto informace bude specifický pro konkrétní aplikaci. Chování lze shrnout v následujících bodech:

  • Výzvy klasifikované podle filtrované kategorie a úrovně závažnosti vrátí chybu HTTP 400.
  • Volání nedokončící streamování nevrátí žádný obsah při filtrování obsahu. Hodnota finish_reason se nastaví na content_filter. Ve výjimečných případech s delšími odpověďmi je možné vrátit částečný výsledek. V těchto případech finish_reason se aktualizuje.
  • U volání dokončení streamování se segmenty vrátí zpět uživateli, jakmile jsou dokončené. Služba bude dál streamovat, dokud nedosáhne tokenu stop, délky nebo zjištění obsahu klasifikovaného na filtrované kategorii a úrovně závažnosti.

Scénář: Odešlete volání bez streamování, které žádá o více výstupů; žádný obsah není klasifikován na filtrované kategorii a na úrovni závažnosti.

Následující tabulka popisuje různé způsoby, jak se může filtrování obsahu zobrazit:

Kód odpovědi HTTP Chování odpovědi
200 V případech, kdy všechna generování předá filtry podle konfigurace, nejsou do odpovědi přidány žádné podrobnosti o kon režim stanu ration. Pro finish_reason každou generaci bude buď zarážka, nebo délka.

Ukázková datová část požadavku:

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

Příklad kódu JSON odpovědi:

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

Scénář: Vaše volání rozhraní API žádá o více odpovědí (N>1) a alespoň jedna z odpovědí je filtrovaná.

Kód odpovědi HTTP Chování odpovědi
200 Generace filtrované budou mít finish_reason hodnotu content_filter.

Ukázková datová část požadavku:

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

Příklad kódu JSON odpovědi:

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

Scénář: Do rozhraní API pro dokončování se odešle nevhodný vstupní dotaz (buď pro streamování, nebo pro jiné streamování).

Kód odpovědi HTTP Chování odpovědi
400 Volání rozhraní API selže, když výzva aktivuje filtr obsahu podle konfigurace. Upravte výzvu a zkuste to znovu.

Ukázková datová část požadavku:

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

Příklad kódu JSON odpovědi:

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

Scénář: Volání dokončení streamování; Žádný výstupní obsah není klasifikován na filtrované kategorii a na úrovni závažnosti.

Kód odpovědi HTTP Chování odpovědi
200 V tomto případě se volání bude streamovat zpět s úplnou generováním a finish_reason bude buď "délka" nebo "stop" pro každou vygenerovanou odpověď.

Ukázková datová část požadavku:

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

Příklad kódu JSON odpovědi:

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

Scénář: Volání dokončení streamování s žádostí o více dokončení a alespoň část výstupního obsahu se filtruje.

Kód odpovědi HTTP Chování odpovědi
200 U daného indexu generování obsahuje poslední blok generace hodnotu, která není null finish_reason . Hodnota je content_filter , když se generování vyfiltrovalo.

Ukázková datová část požadavku:

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

Příklad kódu JSON odpovědi:

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

Scénář: Systém filtrování obsahu se po dokončení nespustí

Kód odpovědi HTTP Chování odpovědi
200 Pokud je systém filtrování obsahu mimo provoz nebo jinak nemůže dokončit operaci včas, vaše žádost se dokončí i bez filtrování obsahu. Filtrování nelze použít vyhledáním chybové zprávy v objektu content_filter_result .

Ukázková datová část požadavku:

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

Příklad kódu JSON odpovědi:

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

Poznámky

Filtry obsahu

Pokud jsou povoleny poznámky, jak je znázorněno v následujícím fragmentu kódu, vrátí se následující informace prostřednictvím rozhraní API pro kategorie nenávisti a nestrannosti, sexuálního, násilí a sebepoškozování:

  • kategorie filtrování obsahu (nenávist, sexuální, násilí, self_harm)
  • úroveň závažnosti (bezpečná, nízká, střední nebo vysoká) v rámci každé kategorie obsahu
  • filtrování stavu (pravda nebo nepravda).

Volitelné modely

Volitelné modely je možné povolit v poznámkách (vrátí informace, když byl obsah označen příznakem, ale není filtrovaný) nebo režim filtru (vrátí informace, když byl obsah označen příznakem a filtrován).

Pokud jsou povoleny poznámky, jak je znázorněno v následujícím fragmentu kódu, rozhraní API vrátí následující informace pro volitelné modely: riziko jailbreaku, chráněný text materiálu a chráněný kód materiálu:

  • kategorie (jailbreak, protected_material_text, protected_material_code),
  • zjištěno (pravda nebo nepravda),
  • filtrované (pravda nebo nepravda).

Pro model chráněného kódu materiálu vrátí rozhraní API následující další informace:

  • Ukázková citace veřejného úložiště GitHubu, kde byl nalezen fragment kódu
  • licenci úložiště.

Při zobrazování kódu ve vaší aplikaci důrazně doporučujeme, aby aplikace zobrazovala také ukázkové citace z poznámek. Pro pokrytí závazku autorských práv zákazníka může být vyžadována také shoda s citovanými licencemi.

Poznámky jsou aktuálně k dispozici ve verzi 2024-02-01 ROZHRANÍ API ga a ve všech verzích Preview počínaje 2023-06-01-preview dokončením a dokončováním chatu (modely GPT). Následující fragment kódu ukazuje, jak používat poznámky:

# 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))

Výstup

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

Podrobnosti o koncových bodech rozhraní REST API pro odvozování pro Azure OpenAI a o tom, jak vytvořit chat a dokončování, najdete v referenčních materiálech k rozhraní REST API služby Azure OpenAI. Poznámky se vrátí pro všechny scénáře při použití jakékoli verze rozhraní API ve verzi Preview počínaje 2023-06-01-preview, a také verze 2024-02-01rozhraní GA API .

Ukázkový scénář: Do rozhraní API pro dokončování se odešle vstupní výzva obsahující obsah klasifikovaný na filtrované kategorii a úroveň závažnosti.

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

Streamování obsahu

Tato část popisuje možnosti a možnosti streamování obsahu Azure OpenAI. Při schválení máte možnost přijímat obsah z rozhraní API, protože se generuje, a nemusíte čekat na bloky obsahu, které byly ověřeny, aby předaly filtry obsahu.

Výchozí

Systém filtrování obsahu je ve výchozím nastavení integrovaný a povolený pro všechny zákazníky. Ve výchozím scénáři streamování se obsah dokončení uloží do vyrovnávací paměti, systém filtrování obsahu běží na obsahu ve vyrovnávací paměti a v závislosti na konfiguraci filtrování obsahu se obsah vrátí uživateli, pokud neporuší zásady filtrování obsahu (výchozí nastavení Microsoftu nebo vlastní konfigurace uživatele), nebo se okamžitě zablokuje a vrátí chybu filtrování obsahu, bez vrácení škodlivého obsahu dokončení. Tento proces se opakuje až do konce datového proudu. Obsah je plně prověřený podle zásad filtrování obsahu, než se vrátí uživateli. Obsah v tomto případě nevrací token-by-token, ale v "blocích obsahu" odpovídající velikosti vyrovnávací paměti.

Asynchronní upravený filtr

Zákazníci, kteří byli schváleni pro upravené filtry obsahu, mohou jako další možnost zvolit asynchronní upravený filtr a poskytnout tak nové prostředí streamování. V tomto případě se filtry obsahu spouští asynchronně a obsah dokončení se okamžitě vrátí s hladkým prostředím streamování tokenů po tokenech. Žádný obsah není uložen do vyrovnávací paměti, což umožňuje nulovou latenci.

Zákazníci si musí uvědomit, že zatímco funkce zlepšuje latenci, jedná se o kompromis proti bezpečnosti a prověřování menších částí výstupu modelu v reálném čase. Protože filtry obsahu se spouští asynchronně, zprávy o kon režim stanu race a signály porušení zásad jsou zpožděné, což znamená, že některé části škodlivého obsahu, které by jinak byly filtrovány okamžitě, by se uživateli mohly zobrazit.

Poznámky: Poznámky a con režim stanu ration messages are nepřetržitě vráceny během streamu. Důrazně doporučujeme používat poznámky ve vaší aplikaci a implementovat další mechanismy zabezpečení obsahu umělé inteligence, jako je redakce obsahu nebo vrácení dalších bezpečnostních informací uživateli.

Signál filtrování obsahu: Chybový signál filtrování obsahu je zpožděný. V případě porušení zásad se vrátí hned, jak je k dispozici, a stream se zastaví. Signál filtrování obsahu je zaručen v intervalu přibližně 1 000 znaků porušení obsahu zásad.

Pro přístup k asynchronnímu upravenému filtru se vyžaduje schválení filtrování upraveného obsahu. Aplikaci najdete tady. Pokud ho chcete povolit v Nástroji Azure OpenAI Studio, postupujte podle návodů k vytvoření nové konfigurace filtrování obsahu a v části Streamování vyberte Asynchronní upravený filtr .

Porovnání režimů filtrování obsahu

Compare Streamování – výchozí Streamování – asynchronní upravený filtr
Stav GA Verze Public Preview
Způsobilost Všichni zákazníci Zákazníci schválení pro filtrování upraveného obsahu
Jak povolit Ve výchozím nastavení je povolená žádná akce. Zákazníci schválení pro filtrování upraveného obsahu ho můžou nakonfigurovat přímo v Nástroji Azure OpenAI Studio (jako součást konfigurace filtrování obsahu použité na úrovni nasazení).
Způsoby a dostupnost Text; všechny modely GPT Text; všechny modely GPT s výjimkou gpt-4-vision
Prostředí streamování Obsah je uložen do vyrovnávací paměti a vrací se v blocích dat. Nulová latence (bez ukládání do vyrovnávací paměti, filtry se spouští asynchronně)
Signál filtrování obsahu Okamžitý filtrovací signál Zpožděný filtrovací signál (v přírůstcích až ~1 000 znaků)
Konfigurace filtrování obsahu Podporuje výchozí a jakékoli nastavení filtru definované zákazníkem (včetně volitelných modelů). Podporuje výchozí a jakékoli nastavení filtru definované zákazníkem (včetně volitelných modelů).

Poznámky a ukázkové odpovědi

Výzva k poznámce

Je to stejné jako výchozí poznámky.

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

Zpráva tokenu dokončení

Zprávy o dokončení se přeposílají okamžitě. Nejprve se neprovádí žádný moderování a na začátku nejsou k dispozici žádné poznámky.

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 
} 

Zpráva poznámky

Textové pole bude vždy prázdný řetězec označující žádné nové tokeny. Poznámky budou relevantní pouze pro již odeslané tokeny. Může existovat několik zpráv poznámek odkazujících na stejné tokeny.

"start_offset" a "end_offset" jsou posuny s nízkou členitostí textu (s hodnotou 0 na začátku výzvy), aby označily, pro který text je poznámka relevantní.

"check_offset" představuje, kolik textu bylo plně moderováno. Jedná se o výhradní dolní mez "end_offset" hodnot budoucích poznámek. Nespadá.

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 
} 

Ukázkový stream odpovědí (předá filtry)

Níže je uvedena skutečná odpověď na dokončení chatu pomocí asynchronního upraveného filtru. Všimněte si, že se poznámky výzvy nezmění, tokeny dokončení se odesílají bez poznámek a nové zprávy poznámek se odesílají bez tokenů – místo toho jsou přidružené k určitým posunům filtru obsahu.

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

Ukázkový stream odpovědí (blokovaný filtry)

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

Důležité

Když se pro výzvu aktivuje filtrování obsahu a "status": 400 jako součást odpovědi se může účtovat poplatek, protože služba vyhodnotila výzvu. K poplatkům dojde také při "status":200 přijetí "finish_reason": "content_filter". V tomto případě výzva neměla žádné problémy, ale dokončení vygenerované modelem bylo zjištěno, že porušuje pravidla filtrování obsahu, která mají za následek filtrování dokončení.

Osvědčené postupy

Jako součást návrhu aplikace zvažte následující osvědčené postupy, které zajistí pozitivní zkušenosti s aplikací a minimalizují potenciální škody:

  • Rozhodněte se, jak chcete zpracovávat scénáře, kdy vaši uživatelé posílají výzvy obsahující obsah klasifikovaný na filtrovanou kategorii a úroveň závažnosti nebo jinak zneužívají vaši aplikaci.
  • Zkontrolujte, finish_reason jestli je dokončení filtrované.
  • Zkontrolujte, jestli v objektu content_filter_result není žádný chybový objekt (což znamená, že se nespustí filtry obsahu).
  • Pokud používáte model chráněného kódu materiálu v režimu poznámek, při zobrazení kódu v aplikaci zobrazte adresu URL citace.

Další kroky