Share via


Hızlı Başlangıç: Topraklama algılama (önizleme)

Büyük dil modellerinin (LLM) metin yanıtlarının kullanıcılar tarafından sağlanan kaynak malzemelerde yer alıp almadığını denetlemek için Azure AI İçeriği Kasa Yerleşiklik algılamasını kullanmak için bu kılavuzu izleyin.

Önkoşullar

  • Azure aboneliği - Ücretsiz bir abonelik oluşturun
  • Azure aboneliğinizi aldıktan sonra anahtarınızı ve uç noktanızı almak için Azure portalında bir content Kasa ty kaynağı oluşturun. Kaynağınız için benzersiz bir ad girin, aboneliğinizi seçin ve bir kaynak grubu, desteklenen bölge (Doğu ABD2, Batı ABD, İsveç Merkezi) ve desteklenen fiyatlandırma katmanını seçin. Daha sonra, Oluştur'u seçin.
    • Kaynağın dağıtılması birkaç dakika sürer. Dağıtıldıktan sonra, yeni kaynağa gidin. Sol bölmedeki Kaynak Yönetimi'nin altında API Anahtarları ve Uç Noktalar'ı seçin. Abonelik anahtarı değerlerinden ve uç noktalardan birini daha sonra kullanmak üzere geçici bir konuma kopyalayın.
  • (İsteğe bağlı) Akıl yürütme özelliğini kullanmak istiyorsanız, gpt modeli dağıtılan bir Azure OpenAI Hizmeti kaynağı oluşturun.
  • cURL veya Python yüklü.

Akıl yürütmeden topraklanmışlığı kontrol edin

Gerekçe oluşturma özelliği olmadan basit durumda, Topraklama algılama API'si gönderilen içeriğin plansızlığını veya falseolarak true sınıflandırır.

Bu bölümde, cURL ile örnek bir istekte yol gösterir. Aşağıdaki komutu bir metin düzenleyicisine yapıştırın ve aşağıdaki değişiklikleri yapın.

  1. değerini kaynağınızla ilişkilendirilmiş uç nokta URL'si ile değiştirin <endpoint> .

  2. değerini kaynağınızın anahtarlarından biriyle değiştirin <your_subscription_key> .

  3. İsteğe bağlı olarak, gövdedeki "query" veya "text" alanlarını analiz etmek istediğiniz kendi metninizle değiştirin.

    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
    }'
    
  4. Bir komut istemi açın ve cURL komutunu çalıştırın.

Soru yanıtlama (Soru-Cevap) görevi yerine özetleme görevini test etmek için aşağıdaki örnek JSON gövdesini kullanın:

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

URL'ye aşağıdaki alanlar eklenmelidir:

Veri Akışı Adı Zorunlu Açıklama Tür
API Sürümü Zorunlu Bu, kullanılacak API sürümüdür. Geçerli sürüm: api-version=2024-02-15-preview. Örnek: <endpoint>/contentsafety/text:detectGroundedness?api-version=2024-02-15-preview String

İstek gövdesindeki parametreler şu tabloda tanımlanmıştır:

Veri Akışı Adı Açıklama Tür
Etki alanı (İsteğe bağlı) MEDICAL veya .GENERIC Varsayılan değer: GENERIC. Sabit listesi
Görev (İsteğe bağlı) Görev türü: QnA, Summarization. Varsayılan değer: Summarization. Sabit listesi
qna (İsteğe bağlı) Görev türü olduğunda QnASoru-Cevap verilerini tutar. String
- query (İsteğe bağlı) Soru-Cevap görevindeki soruyu temsil eder. Karakter sınırı: 7.500. String
text (Gerekli) denetlenecek LLM çıkış metni. Karakter sınırı: 7.500. String
groundingSources (Gerekli) Yapay zeka tarafından oluşturulan metni doğrulamak için bir dizi topraklama kaynağı kullanır. Tek bir istekte en fazla 55.000 karakter topraklama kaynağı analiz edilebilir. Dize dizisi
Akıl (İsteğe bağlı) Akıl yürütme özelliğinin kullanılıp kullanılmayacağını belirtir. Varsayılan değer şudur: false. ise true, bir açıklama sağlamak için kendi Azure OpenAI GPT-4 Turbo kaynaklarınızı getirmeniz gerekir. Dikkatli olun: mantık kullanmak işlem süresini artırır. Boolean

API yanıtını yorumlama

İsteğinizi gönderdikten sonra, gerçekleştirilen Temellendirme analizini yansıtan bir JSON yanıtı alırsınız. Tipik bir çıktı şöyle görünür:

{
    "ungroundedDetected": true,
    "ungroundedPercentage": 1,
    "ungroundedDetails": [
        {
            "text": "12/hour."
        }
    ]
}

Çıktıdaki JSON nesneleri burada tanımlanır:

Veri Akışı Adı Açıklama Tür
ön plansız Algılandı Metnin arka plansızlık gösterip göstermeyeceğini gösterir. Boolean
ungroundedPercentage 0 ile 1 arasında bir sayı olarak ifade edilen ve 0'ın yerlenmemiş içerik olmadığını, 1'in ise tamamen topraklanmamış içeriği gösterdiği, topraklanmamış olarak tanımlanan metnin oranını belirtir. Satışa Arz
ungroundedDetails Belirli örnekler ve yüzdelerle birlikte, planlanmamış içerikle ilgili içgörüler sağlar. Dizi
-text Arka plansız olan belirli metin. String

Akıl yürütme ile topraklanmışlığı denetleme

Topraklama algılama API'si, API yanıtına mantık ekleme seçeneği sunar. Mantık etkinleştirildiğinde yanıt, algılanan herhangi bir ön plansızlığın belirli örneklerini ve açıklamalarını ayrıntılandıran bir "reasoning" alan içerir. Dikkatli olun: akıl yürütmeyi kullanmak işlem süresini artırır ve ek ücrete tabidir.

Kendi GPT dağıtımınızı getirme

İpucu

Şu anda yalnızca Azure OpenAI GPT-4 Turbo kaynaklarını destekliyoruz ve diğer GPT türlerini desteklemiyoruz. GPT-4 Turbo kaynaklarınız herhangi bir bölgede dağıtılabilir; ancak, olası gecikme süresini en aza indirmek için içerik güvenliği kaynaklarıyla aynı bölgede bulunmalarını öneririz.

Azure OpenAI GPT4-Turbo kaynağınızı kullanarak akıl yürütme özelliğini etkinleştirmek için Yönetilen Kimlik'i kullanarak İçerik Kasa ty kaynağınızın Azure OpenAI kaynağına erişmesine izin verin:

  1. Azure AI İçeriği Kasa ty için Yönetilen Kimliği etkinleştirin.

    Azure portalında Azure Yapay Zeka İçeriği Kasa ty örneğine gidin. Ayarlar kategorisinin altındaki Kimlik bölümünü bulun. Sistem tarafından atanan yönetilen kimliği etkinleştirin. Bu eylem, Azure AI İçerik Kasa ty örneğinize Azure'da diğer kaynaklara erişmek için tanınabilecek ve kullanılabilecek bir kimlik verir.

    Azure portalında İçerik Kasa ty kimlik kaynağının ekran görüntüsü.

  2. Yönetilen Kimliğe Rol Atayın.

    Azure OpenAI örneğinize gidin, Rol ataması ekle'yi seçerek Azure AI İçeriği Kasa ty kimliğine Azure OpenAI rolü atama işlemini başlatın.

    Azure portalında rol ataması ekleme ekran görüntüsü.

    Kullanıcı veya Katkıda Bulunan rolünü seçin.

    Katkıda Bulunan ve Kullanıcı rollerinin bir listede görüntülendiği Azure portalının ekran görüntüsü.

API isteğinde bulunma

Topraklama algılama API'sine yönelik isteğinizde gövde parametresini olarak trueayarlayın "reasoning" ve diğer gerekli parametreleri sağlayın:

 {
  "reasoning": true,
  "llmResource": {
    "resourceType": "AzureOpenAI",
    "azureOpenAIEndpoint": "<your_OpenAI_endpoint>",
    "azureOpenAIDeploymentName": "<your_deployment_name>"
  }
}

Bu bölümde, cURL ile örnek bir istekte yol gösterir. Aşağıdaki komutu bir metin düzenleyicisine yapıştırın ve aşağıdaki değişiklikleri yapın.

  1. değerini kaynağınızla ilişkilendirilmiş uç nokta URL'si ile değiştirin <endpoint> .

  2. değerini kaynağınızın anahtarlarından biriyle değiştirin <your_subscription_key> .

  3. İsteğe bağlı olarak, gövdedeki "query" veya "text" alanlarını analiz etmek istediğiniz kendi metninizle değiştirin.

    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>"
    }'
    
  4. Bir komut istemi açın ve cURL komutunu çalıştırın.

İstek gövdesindeki parametreler şu tabloda tanımlanmıştır:

Veri Akışı Adı Açıklama Tür
Etki alanı (İsteğe bağlı) MEDICAL veya .GENERIC Varsayılan değer: GENERIC. Sabit listesi
Görev (İsteğe bağlı) Görev türü: QnA, Summarization. Varsayılan değer: Summarization. Sabit listesi
qna (İsteğe bağlı) Görev türü olduğunda QnASoru-Cevap verilerini tutar. String
- query (İsteğe bağlı) Soru-Cevap görevindeki soruyu temsil eder. Karakter sınırı: 7.500. String
text (Gerekli) denetlenecek LLM çıkış metni. Karakter sınırı: 7.500. String
groundingSources (Gerekli) Yapay zeka tarafından oluşturulan metni doğrulamak için bir dizi topraklama kaynağı kullanır. Tek bir istekte en fazla 55.000 karakter topraklama kaynağı analiz edilebilir. Dize dizisi
Akıl (İsteğe bağlı) olarak trueayarlayın. Hizmet, bir açıklama sağlamak için Azure OpenAI kaynaklarını kullanır. Dikkatli olun: akıl yürütmeyi kullanmak işlem süresini artırır ve ek ücrete tabidir. Boolean
llmResource (Gerekli) Mantığı etkinleştirmek için kendi Azure OpenAI GPT4-Turbo kaynağınızı kullanmak istiyorsanız, bu alanı ekleyin ve kullanılan kaynakların alt alanlarını ekleyin. String
- resourceType Kullanılan kaynak türünü belirtir. Şu anda yalnızca izin verir AzureOpenAI. Yalnızca Azure OpenAI GPT-4 Turbo kaynaklarını destekliyoruz ve diğer GPT türlerini desteklemiyoruz. GPT-4 Turbo kaynaklarınız herhangi bir bölgede dağıtılabilir; ancak, olası gecikme süresini en aza indirmek için içerik güvenliği kaynaklarıyla aynı bölgede bulunmalarını öneririz. Sabit listesi
- azureOpenAIEndpoint Azure OpenAI hizmeti için uç nokta URL'niz. String
- azureOpenAIDeploymentName Kullanılacak belirli GPT dağıtımının adı. String

API yanıtını yorumlama

İsteğinizi gönderdikten sonra, gerçekleştirilen Temellendirme analizini yansıtan bir JSON yanıtı alırsınız. Tipik bir çıktı şöyle görünür:

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

Çıktıdaki JSON nesneleri burada tanımlanır:

Veri Akışı Adı Açıklama Tür
ön plansız Algılandı Metnin arka plansızlık gösterip göstermeyeceğini gösterir. Boolean
ungroundedPercentage 0 ile 1 arasında bir sayı olarak ifade edilen ve 0'ın yerlenmemiş içerik olmadığını, 1'in ise tamamen topraklanmamış içeriği gösterdiği, topraklanmamış olarak tanımlanan metnin oranını belirtir. Satışa Arz
ungroundedDetails Belirli örnekler ve yüzdelerle birlikte, planlanmamış içerikle ilgili içgörüler sağlar. Dizi
-text Arka plansız olan belirli metin. String
-offset Çeşitli kodlamalarda yer almamış metnin konumunu açıklayan bir nesne. String
- offset > utf8 UTF-8 kodlamasında, topraklanmamış metnin uzaklık konumu. Tamsayı
- offset > utf16 UTF-16 kodlamasında, planlanmamış metnin uzaklık konumu. Tamsayı
- offset > codePoint Unicode kod noktaları açısından, topraklanmamış metnin uzaklık konumu. Tamsayı
-length Çeşitli kodlamalarda yer almamış metnin uzunluğunu açıklayan bir nesne. (utf8, utf16, codePoint), uzaklık değerine benzer. Object
- length > utf8 UTF-8 kodlamasında arka planlanmamış metnin uzunluğu. Tamsayı
- length > utf16 UTF-16 kodlamasında topraklanmamış metnin uzunluğu. Tamsayı
- length > codePoint Unicode kod noktaları açısından planlanmamış metnin uzunluğu. Tamsayı
-reason Algılanan ön plansızlık için açıklamalar sunar. String

Kaynakları temizleme

Azure AI hizmetleri aboneliğini temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, kaynak grubuyla ilişkili diğer tüm kaynakları da siler.

Sonraki adımlar

Topraklama algılamayı prompt Shields gibi diğer LLM güvenlik özellikleriyle birleştirin.