Rychlý start: Použití detekce groundedness (Preview)
V této příručce se dozvíte, jak používat rozhraní API pro detekci uzemnění. Tato funkce automaticky rozpozná a opraví neuzemněný text na základě poskytnutých zdrojových dokumentů a zajistí, aby byl vygenerovaný obsah zarovnaný s faktickými nebo zamýšlenými odkazy. Níže se podíváme na několik běžných scénářů, které vám pomůžou pochopit, jak a kdy tyto funkce použít k dosažení nejlepších výsledků.
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 předplatné a vyberte skupinu prostředků, podporovanou oblast 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-09-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-09-15-preview. Příklad: <endpoint>/contentsafety/text:detectGroundedness?api-version=2024-09-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í verzi Azure OpenAI GPT4o (verze 0513, 0806), 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í.
Připojení vlastního nasazení GPT
Tip
Podporujeme pouze prostředky **Azure OpenAI GPT4o (verze 0513, 0806) ** a nepodporují jiné typy GPT. Máte možnost nasadit prostředky Azure OpenAI GPT4o (0513, 0806) 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 a data, ochranu osobních údajů a zabezpečení obsahu Azure AI.
Pokud chcete k povolení funkce odůvodnění použít prostředek Azure OpenAI GPT4o (verze 0513, 0806), použijte spravovanou identitu a povolte tak vašemu prostředku zabezpečení obsahu přístup k prostředku Azure OpenAI:
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:
{
"domain": "Medical",
"task": "Summarization",
"text": "The patient name is Kevin.",
"groundingSources": [
"The patient name is Jane."
],
"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 Azure AI Content Safety.Nahraďte
<your_subscription_key>
jedním z klíčů pro váš prostředek.Nahraďte
<your_OpenAI_endpoint>
adresou URL koncového bodu přidruženou k vašemu prostředku Azure OpenAI.Nahraďte
<your_deployment_name>
názvem nasazení Azure OpenAI.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-09-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 GPT4o (verze 0513, 0806), přidejte toto pole a uveďte 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 GPT4o (verze 0513, 0806) 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. | Objekt |
- 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 |
Kontrola uzemnění pomocí funkce opravy
Rozhraní API pro detekci uzemnění zahrnuje funkci opravy, která automaticky opravuje veškerou zjištěnou neuzemnění v textu na základě zadaných zemských zdrojů. Pokud je povolená funkce opravy, odpověď obsahuje "correction Text"
pole, které zobrazuje opravený text zarovnaný se zdroji zemnění.
Připojení vlastního nasazení GPT
Tip
Funkce opravy v současné době podporuje pouze prostředky **Azure OpenAI GPT4o (0513, 0806 verze) **. Pokud chcete minimalizovat latenci a dodržovat pokyny k ochraně osobních údajů dat, doporučujeme nasadit azure OpenAI GPT4o (verze 0513, 0806) ve stejné oblasti jako prostředky zabezpečení obsahu. Další podrobnosti o ochraně osobních údajů najdete v pokynech pro data, ochranu osobních údajů a zabezpečení pro službu Azure OpenAI a data, ochranu osobních údajů a zabezpečení obsahu Azure AI.
Pokud chcete pro povolení funkce opravy použít prostředek Azure OpenAI GPT4o (verze 0513, 0806), použijte spravovanou identitu, abyste prostředku zabezpečení obsahu umožnili přístup k prostředku Azure OpenAI. Podle pokynů v předchozí části nastavte spravovanou identitu.
Vytvoření požadavku rozhraní API
V požadavku na rozhraní API pro detekci uzemnění nastavte "correction"
parametr těla na true
hodnotu a zadejte další nezbytné parametry:
{
"domain": "Medical",
"task": "Summarization",
"text": "The patient name is Kevin.",
"groundingSources": [
"The patient name is Jane."
],
"correction": true,
"llmResource": {
"resourceType": "AzureOpenAI",
"azureOpenAIEndpoint": "<your_OpenAI_endpoint>",
"azureOpenAIDeploymentName": "<your_deployment_name>"
}
}
Tato část ukazuje ukázkový požadavek pomocí cURL. Zástupné symboly nahraďte podle potřeby:
- Nahraďte
<endpoint>
adresou URL koncového bodu vašeho prostředku. - Místo
<your_subscription_key>
použijte váš klíč předplatného. - Volitelně můžete nahradit pole "text" textem, který chcete analyzovat.
curl --location --request POST '<endpoint>/contentsafety/text:detectGroundedness?api-version=2024-09-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your_subscription_key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"domain": "Generic",
"task": "Summarization",
"text": "The patient name is Kevin.",
"groundingSources": [
"The patient name is Jane."
],
"correction": true,
"llmResource": {
"resourceType": "AzureOpenAI",
"azureOpenAIEndpoint": "<your_OpenAI_endpoint>",
"azureOpenAIDeploymentName": "<your_deployment_name>"
}
}'
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ů |
oprava | (Volitelné) Nastavte na true hodnotu , služba používá prostředky Azure OpenAI k poskytování opraveného textu a zajišťuje konzistenci se zdrojovými zdroji. Buďte opatrní: při použití opravy se zvyšuje 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 GPT4o (verze 0513, 0806), přidejte toto pole a uveďte 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 GPT4o (verze 0513, 0806) 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
Odpověď obsahuje "correction Text"
pole obsahující opravený text, který zajišťuje konzistenci se zadanými uzemněnými zdroji.
Funkce opravy zjistí, že Kevin
je neuzemněná, protože je v konfliktu se uzemněním zdroje Jane
. Rozhraní API vrátí opravený text: "The patient name is Jane."
{
"ungroundedDetected": true,
"ungroundedPercentage": 1,
"ungroundedDetails": [
{
"text": "The patient name is Kevin"
}
],
"correction Text": "The patient name is Jane"
}
Objekty JSON ve výstupu jsou definovány zde:
Název | Popis | Typ |
---|---|---|
UngroundedDetected | Označuje, jestli byl zjištěn neuzemněný obsah. | Logická hodnota |
ungroundedPercentage | Poměr neuzemněného obsahu v textu. | Float |
ungroundedDetails | Podrobnosti o neuzemněném obsahu, včetně konkrétních textových segmentů | 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 |
-length |
Objekt popisující délku neuzemněného textu v různých kódováních. (utf8, utf16, codePoint), podobně jako posun. | Objekt |
- 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 |
-correction Text |
Opravený text, který zajišťuje konzistenci se uzemněním zdrojů. | 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é.
Související obsah
- Koncepty detekce uzemnění
- Zkombinujte detekci uzemnění s dalšími bezpečnostními funkcemi LLM, jako jsou Prompt Shields.