Sdílet prostřednictvím


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.

  1. Nahraďte <endpoint> adresou URL koncového bodu přidruženou k vašemu prostředku.

  2. Nahraďte <your_subscription_key> jedním z klíčů pro váš prostředek.

  3. 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 QnAtyp ú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 truepotř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:

  1. 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.

    Snímek obrazovky s prostředkem identity Content Safety na webu Azure Portal

  2. 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.

    Snímek obrazovky s přidáním přiřazení role na webu Azure Portal

    Zvolte roli Uživatel nebo Přispěvatel.

    Snímek obrazovky webu Azure Portal s rolemi přispěvatele a uživatele zobrazenými v seznamu

Vytvoření požadavku rozhraní API

V požadavku na rozhraní API pro detekci uzemnění nastavte "reasoning" parametr těla na truehodnotu 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.

  1. Nahraďte <endpoint> adresou URL koncového bodu přidruženou k vašemu prostředku Azure AI Content Safety.

  2. Nahraďte <your_subscription_key> jedním z klíčů pro váš prostředek.

  3. Nahraďte <your_OpenAI_endpoint> adresou URL koncového bodu přidruženou k vašemu prostředku Azure OpenAI.

  4. Nahraďte <your_deployment_name> názvem nasazení Azure OpenAI.

  5. 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>"
    }'
    
  6. 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 QnAtyp ú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 truehodnotu , 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 AzureOpenAIpouze . 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 truehodnotu 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 QnAtyp ú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 truehodnotu , 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 AzureOpenAIpouze . 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é.