Rychlý start: Detekce uzemnění (Preview)
Podle tohoto průvodce můžete pomocí detekce bezpečnosti obsahu Azure AI zkontrolovat, jestli jsou textové odpovědi velkých jazykových modelů (LLM) uzemněné ve zdrojových materiálech poskytovaných uživateli.
Požadavky
- Předplatné Azure – Vytvoření předplatného zdarma
- Jakmile budete mít předplatné Azure, vytvořte na webu Azure Portal prostředek zabezpečení obsahu, abyste získali svůj klíč a koncový bod. Zadejte jedinečný název vašeho prostředku, vyberte své předplatné a vyberte skupinu prostředků, podporovanou oblast (USA – východ, USA – východ 2, USA – západ, Švédsko – střed) a podporovanou cenovou úroveň. Pak vyberte Vytvořit.
- Nasazení prostředku trvá několik minut. Potom přejděte k novému prostředku. V levém podokně v části Správa prostředků vyberte klíče rozhraní API a koncové body. Zkopírujte jednu z hodnot klíče předplatného a koncový bod do dočasného umístění pro pozdější použití.
- (Volitelné) Pokud chcete použít funkci odůvodnění , vytvořte prostředek služby Azure OpenAI s nasazeným modelem GPT.
- Nainstalovaný cURL nebo Python .
Kontrola uzemnění bez odůvodnění
V jednoduchém případě bez funkce odůvodnění klasifikuje rozhraní API pro detekci uzemnění neuzemnění odeslaného obsahu jako true
nebo false
.
Tato část vás provede ukázkovým požadavkem s cURL. Vložte následující příkaz do textového editoru a proveďte následující změny.
Nahraďte
<endpoint>
adresou URL koncového bodu přidruženou k vašemu prostředku.Nahraďte
<your_subscription_key>
jedním z klíčů pro váš prostředek.Volitelně můžete pole v
"text"
textu nahradit"query"
vlastním textem, který chcete analyzovat.curl --location --request POST '<endpoint>/contentsafety/text:detectGroundedness?api-version=2024-02-15-preview' \ --header 'Ocp-Apim-Subscription-Key: <your_subscription_key>' \ --header 'Content-Type: application/json' \ --data-raw '{ "domain": "Generic", "task": "QnA", "qna": { "query": "How much does she currently get paid per hour at the bank?" }, "text": "12/hour", "groundingSources": [ "I'm 21 years old and I need to make a decision about the next two years of my life. Within a week. I currently work for a bank that requires strict sales goals to meet. IF they aren't met three times (three months) you're canned. They pay me 10/hour and it's not unheard of to get a raise in 6ish months. The issue is, **I'm not a salesperson**. That's not my personality. I'm amazing at customer service, I have the most positive customer service \"reports\" done about me in the short time I've worked here. A coworker asked \"do you ask for people to fill these out? you have a ton\". That being said, I have a job opportunity at Chase Bank as a part time teller. What makes this decision so hard is that at my current job, I get 40 hours and Chase could only offer me 20 hours/week. Drive time to my current job is also 21 miles **one way** while Chase is literally 1.8 miles from my house, allowing me to go home for lunch. I do have an apartment and an awesome roommate that I know wont be late on his portion of rent, so paying bills with 20hours a week isn't the issue. It's the spending money and being broke all the time.\n\nI previously worked at Wal-Mart and took home just about 400 dollars every other week. So I know i can survive on this income. I just don't know whether I should go for Chase as I could definitely see myself having a career there. I'm a math major likely going to become an actuary, so Chase could provide excellent opportunities for me **eventually**." ], "reasoning": false }'
Otevřete příkazový řádek a spusťte příkaz cURL.
K otestování úlohy souhrnu místo úkolu odpovědi na otázku (QnA) použijte následující ukázkový text JSON:
{
"domain": "Medical",
"task": "Summarization",
"text": "Ms Johnson has been in the hospital after experiencing a stroke.",
"groundingSources": ["Our patient, Ms. Johnson, presented with persistent fatigue, unexplained weight loss, and frequent night sweats. After a series of tests, she was diagnosed with Hodgkin’s lymphoma, a type of cancer that affects the lymphatic system. The diagnosis was confirmed through a lymph node biopsy revealing the presence of Reed-Sternberg cells, a characteristic of this disease. She was further staged using PET-CT scans. Her treatment plan includes chemotherapy and possibly radiation therapy, depending on her response to treatment. The medical team remains optimistic about her prognosis given the high cure rate of Hodgkin’s lymphoma."],
"reasoning": false
}
Do adresy URL musí být zahrnuta následující pole:
Název | Požadováno | Popis | Typ |
---|---|---|---|
Verze rozhraní API | Požaduje se | Toto je verze rozhraní API, která se má použít. Aktuální verze je: api-version=2024-02-15-preview. Příklad: <endpoint>/contentsafety/text:detectGroundedness?api-version=2024-02-15-preview |
String |
Parametry v textu požadavku jsou definovány v této tabulce:
Název | Popis | Typ |
---|---|---|
doména | (Volitelné) MEDICAL nebo GENERIC . Výchozí hodnota: GENERIC . |
Výčet |
úkol | (Volitelné) Typ úkolu: QnA , Summarization . Výchozí hodnota: Summarization . |
Výčet |
qna | (Volitelné) Obsahuje data QnA, pokud je QnA typ úkolu . |
String |
- query |
(Volitelné) To představuje otázku v úkolu QnA. Limit znaků: 7 500. | String |
text | (Povinné) Výstupní text LLM, který se má zkontrolovat. Limit znaků: 7 500. | String |
groundingSources | (Povinné) Používá pole zeměných zdrojů k ověření textu generovaného AI. Omezení najdete v části Požadavky na vstup. | Pole řetězců |
usuzování | (Volitelné) Určuje, jestli se má použít funkce odůvodnění. Výchozí hodnota je false . Pokud true potřebujete použít vlastní prostředky Azure OpenAI GPT-4 Turbo (1106-Preview), abyste mohli poskytnout vysvětlení. Buďte opatrní: použití důvodů zvyšuje dobu zpracování. |
Logická hodnota |
Interpretace odpovědi rozhraní API
Po odeslání požadavku obdržíte odpověď JSON, která odráží provedenou analýzu groundedness. Typický výstup vypadá takto:
{
"ungroundedDetected": true,
"ungroundedPercentage": 1,
"ungroundedDetails": [
{
"text": "12/hour."
}
]
}
Objekty JSON ve výstupu jsou definovány zde:
Název | Popis | Typ |
---|---|---|
UngroundedDetected | Určuje, zda text vykazuje neuzemněnost. | Logická hodnota |
ungroundedPercentage | Určuje poměr textu identifikovaný jako neuzemněný vyjádřený číslem v rozsahu 0 až 1, kde 0 označuje žádný neuzemněný obsah a 1 označuje zcela neuzemněný obsah. | Float |
ungroundedDetails | Poskytuje přehled o neuzemněném obsahu s konkrétními příklady a procenty. | Pole |
-text |
Konkrétní text, který je neuzemněný. | String |
Kontrola uzemnění s odůvodněním
Rozhraní API pro detekci uzemnění poskytuje možnost zahrnout do odpovědi rozhraní API odůvodnění . Při povoleném zdůvodnění odpověď obsahuje "reasoning"
pole, které podrobně popisuje konkrétní instance a vysvětlení pro každou zjištěnou neuzemnění.
Použití vlastního nasazení GPT
Tip
V tuto chvíli podporujeme pouze prostředky Azure OpenAI GPT-4 Turbo (1106-Preview) a nepodporujeme jiné typy GPT. Máte možnost nasadit prostředky GPT-4 Turbo (1106-Preview) v libovolné oblasti. Pokud ale chcete minimalizovat potenciální latenci a vyhnout se jakýmkoli obavám ohledně ochrany osobních údajů a rizik zeměpisných hranic, doporučujeme je umístit ve stejné oblasti jako prostředky zabezpečení obsahu. Podrobné informace o ochraně osobních údajů najdete v pokynech pro data, ochranu osobních údajů a zabezpečení pro službu Azure OpenAI adata, ochranu osobních údajů a zabezpečení obsahu Azure AI.
Pokud chcete k povolení funkce odůvodnění použít prostředek Azure OpenAI GPT4-Turbo (1106-Preview), použijte spravovanou identitu k povolení přístupu k prostředku Azure OpenAI pomocí spravované identity:
Povolení spravované identity pro zabezpečení obsahu Azure AI
Na webu Azure Portal přejděte k instanci Zabezpečení obsahu Azure AI. V kategorii Nastavení vyhledejte část Identita. Povolte spravovanou identitu přiřazenou systémem. Tato akce udělí vaší instanci Zabezpečení obsahu Azure AI identitu, kterou je možné rozpoznat a použít v rámci Azure pro přístup k dalším prostředkům.
Přiřaďte roli spravované identitě.
Přejděte do instance Azure OpenAI a výběrem možnosti Přidat přiřazení role spusťte proces přiřazování role Azure OpenAI identitě azure AI Content Safety.
Zvolte roli Uživatel nebo Přispěvatel.
Vytvoření požadavku rozhraní API
V požadavku na rozhraní API pro detekci uzemnění nastavte "reasoning"
parametr těla na true
hodnotu a zadejte další potřebné parametry:
{
"reasoning": true,
"llmResource": {
"resourceType": "AzureOpenAI",
"azureOpenAIEndpoint": "<your_OpenAI_endpoint>",
"azureOpenAIDeploymentName": "<your_deployment_name>"
}
}
Tato část vás provede ukázkovým požadavkem s cURL. Vložte následující příkaz do textového editoru a proveďte následující změny.
Nahraďte
<endpoint>
adresou URL koncového bodu přidruženou k vašemu prostředku.Nahraďte
<your_subscription_key>
jedním z klíčů pro váš prostředek.Volitelně můžete pole v
"text"
textu nahradit"query"
vlastním textem, který chcete analyzovat.curl --location --request POST '<endpoint>/contentsafety/text:detectGroundedness?api-version=2024-02-15-preview' \ --header 'Ocp-Apim-Subscription-Key: <your_subscription_key>' \ --header 'Content-Type: application/json' \ --data-raw '{ "domain": "Generic", "task": "QnA", "qna": { "query": "How much does she currently get paid per hour at the bank?" }, "text": "12/hour", "groundingSources": [ "I'm 21 years old and I need to make a decision about the next two years of my life. Within a week. I currently work for a bank that requires strict sales goals to meet. IF they aren't met three times (three months) you're canned. They pay me 10/hour and it's not unheard of to get a raise in 6ish months. The issue is, **I'm not a salesperson**. That's not my personality. I'm amazing at customer service, I have the most positive customer service \"reports\" done about me in the short time I've worked here. A coworker asked \"do you ask for people to fill these out? you have a ton\". That being said, I have a job opportunity at Chase Bank as a part time teller. What makes this decision so hard is that at my current job, I get 40 hours and Chase could only offer me 20 hours/week. Drive time to my current job is also 21 miles **one way** while Chase is literally 1.8 miles from my house, allowing me to go home for lunch. I do have an apartment and an awesome roommate that I know wont be late on his portion of rent, so paying bills with 20hours a week isn't the issue. It's the spending money and being broke all the time.\n\nI previously worked at Wal-Mart and took home just about 400 dollars every other week. So I know i can survive on this income. I just don't know whether I should go for Chase as I could definitely see myself having a career there. I'm a math major likely going to become an actuary, so Chase could provide excellent opportunities for me **eventually**." ], "reasoning": true, "llmResource": { "resourceType": "AzureOpenAI", "azureOpenAIEndpoint": "<your_OpenAI_endpoint>", "azureOpenAIDeploymentName": "<your_deployment_name>" }'
Otevřete příkazový řádek a spusťte příkaz cURL.
Parametry v textu požadavku jsou definovány v této tabulce:
Název | Popis | Typ |
---|---|---|
doména | (Volitelné) MEDICAL nebo GENERIC . Výchozí hodnota: GENERIC . |
Výčet |
úkol | (Volitelné) Typ úkolu: QnA , Summarization . Výchozí hodnota: Summarization . |
Výčet |
qna | (Volitelné) Obsahuje data QnA, pokud je QnA typ úkolu . |
String |
- query |
(Volitelné) To představuje otázku v úkolu QnA. Limit znaků: 7 500. | String |
text | (Povinné) Výstupní text LLM, který se má zkontrolovat. Limit znaků: 7 500. | String |
groundingSources | (Povinné) Používá pole zeměných zdrojů k ověření textu generovaného AI. Viz Požadavky na vstup pro omezení. | Pole řetězců |
usuzování | (Volitelné) Nastavte na true hodnotu , služba používá prostředky Azure OpenAI k poskytnutí vysvětlení. Buďte opatrní: při použití odůvodnění se zvýší doba zpracování a účtují se další poplatky. |
Logická hodnota |
llmResource | (Povinné) Pokud chcete k povolení odůvodnění použít vlastní prostředek Azure OpenAI GPT4-Turbo (1106-Preview), přidejte toto pole a přidejte dílčí pole pro použité prostředky. | String |
- resourceType |
Určuje typ používaného prostředku. V současné době to umožňuje AzureOpenAI pouze . Podporujeme pouze prostředky Azure OpenAI GPT-4 Turbo (1106-Preview) a nepodporují jiné typy GPT. |
Výčet |
- azureOpenAIEndpoint |
Adresa URL koncového bodu pro službu Azure OpenAI | String |
- azureOpenAIDeploymentName |
Název konkrétního nasazení GPT, které se má použít. | String |
Interpretace odpovědi rozhraní API
Po odeslání požadavku obdržíte odpověď JSON, která odráží provedenou analýzu groundedness. Typický výstup vypadá takto:
{
"ungroundedDetected": true,
"ungroundedPercentage": 1,
"ungroundedDetails": [
{
"text": "12/hour.",
"offset": {
"utf8": 0,
"utf16": 0,
"codePoint": 0
},
"length": {
"utf8": 8,
"utf16": 8,
"codePoint": 8
},
"reason": "None. The premise mentions a pay of \"10/hour\" but does not mention \"12/hour.\" It's neutral. "
}
]
}
Objekty JSON ve výstupu jsou definovány zde:
Název | Popis | Typ |
---|---|---|
UngroundedDetected | Určuje, zda text vykazuje neuzemněnost. | Logická hodnota |
ungroundedPercentage | Určuje poměr textu identifikovaný jako neuzemněný vyjádřený číslem v rozsahu 0 až 1, kde 0 označuje žádný neuzemněný obsah a 1 označuje zcela neuzemněný obsah. | Float |
ungroundedDetails | Poskytuje přehled o neuzemněném obsahu s konkrétními příklady a procenty. | Pole |
-text |
Konkrétní text, který je neuzemněný. | String |
-offset |
Objekt popisující pozici neuzemněného textu v různých kódováních. | String |
- offset > utf8 |
Posun pozice neuzemněného textu v kódování UTF-8. | Celé číslo |
- offset > utf16 |
Posun pozice neuzemněného textu v kódování UTF-16. | Celé číslo |
- offset > codePoint |
Pozice posunu neuzemněného textu z hlediska bodů kódu Unicode. | Celé číslo |
-length |
Objekt popisující délku neuzemněného textu v různých kódováních. (utf8, utf16, codePoint), podobně jako posun. | Object |
- length > utf8 |
Délka neuzemněného textu v kódování UTF-8. | Celé číslo |
- length > utf16 |
Délka neuzemněného textu v kódování UTF-16. | Celé číslo |
- length > codePoint |
Délka neuzemněného textu z hlediska bodů kódu Unicode. | Celé číslo |
-reason |
Nabízí vysvětlení pro zjištěnou nezemřenost. | String |
Vyčištění prostředků
Pokud chcete vyčistit a odebrat předplatné služeb Azure AI, můžete odstranit prostředek nebo skupinu prostředků. Odstraněním skupiny prostředků se odstraní také všechny ostatní prostředky, které jsou k ní přidružené.
Další kroky
Zkombinujte detekci uzemnění s dalšími bezpečnostními funkcemi LLM, jako jsou Prompt Shields.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro