Bagikan melalui


Mulai cepat: Menggunakan deteksi Groundedness (pratinjau)

Panduan ini menunjukkan kepada Anda cara menggunakan API deteksi groundedness. Fitur ini secara otomatis mendeteksi dan mengoreksi teks yang tidak di-ground berdasarkan dokumen sumber yang disediakan, memastikan bahwa konten yang dihasilkan selaras dengan referensi faktual atau yang dimaksudkan. Di bawah ini, kami menjelajahi beberapa skenario umum untuk membantu Anda memahami bagaimana dan kapan menerapkan fitur-fitur ini untuk mencapai hasil terbaik.

Prasyarat

  • Langganan Azure - buat langganan gratis
  • Setelah Anda memiliki langganan Azure, buat sumber daya Content Safety di portal Azure untuk mendapatkan kunci dan titik akhir Anda. Masukkan nama unik untuk sumber daya Anda, pilih langganan Anda, dan pilih grup sumber daya, wilayah yang didukung, dan tingkat harga yang didukung. Lalu pilih Buat.
  • Sumber daya membutuhkan waktu beberapa menit untuk disebarkan. Setelah itu, buka sumber daya baru. Di panel kiri, di bawah Manajemen Sumber Daya, pilih Kunci API dan Titik Akhir. Salin salah satu nilai kunci langganan dan titik akhir ke lokasi sementara untuk digunakan nanti.
  • (Opsional) Jika Anda ingin menggunakan fitur penalaran, buat sumber daya Azure OpenAI Service dengan model GPT yang disebarkan.
  • cURL atau Python terinstal.

Periksa groundedness tanpa penalaran

Dalam kasus sederhana tanpa fitur penalaran , API deteksi Groundedness mengklasifikasikan ketidak-kandasan konten yang dikirimkan sebagai true atau false.

Bagian ini menjelaskan permintaan sampel dengan cURL. Tempelkan perintah di bawah ini ke editor teks, dan buat perubahan berikut.

  1. Ganti <endpoint> dengan URL titik akhir yang terkait dengan sumber daya Anda.

  2. Ganti <your_subscription_key> dengan salah satu kunci untuk sumber daya Anda.

  3. Secara opsional, ganti "query" bidang atau "text" dalam isi dengan teks Anda sendiri yang ingin Anda analisis.

    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
    }'
    

Buka perintah dan jalankan perintah cURL.

Untuk menguji tugas ringkasan alih-alih tugas jawaban atas pertanyaan (QnA), gunakan contoh isi JSON berikut:

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

Bidang berikut harus disertakan dalam URL:

Nama Wajib Deskripsi Jenis
Versi API Wajib Ini adalah versi API yang akan digunakan. Versi saat ini adalah: api-version=2024-09-15-preview. Contoh: <endpoint>/contentsafety/text:detectGroundedness?api-version=2024-09-15-preview String

Parameter dalam isi permintaan ditentukan dalam tabel ini:

Nama Deskripsi Jenis
domain (Opsional) MEDICAL atau GENERIC. Nilai default: GENERIC. Enum
tugas (Opsional) Jenis tugas: QnA, Summarization. Nilai default: Summarization. Enum
qna (Opsional) Menyimpan data QnA saat jenis tugas adalah QnA. String
- query (Opsional) Ini mewakili pertanyaan dalam tugas QnA. Batas karakter: 7.500. String
text (Diperlukan) Teks output LLM yang akan diperiksa. Batas karakter: 7.500. String
groundingSources (Diperlukan) Menggunakan array sumber grounding untuk memvalidasi teks yang dihasilkan AI. Lihat Persyaratan input untuk batasan. Array string
Penalaran (Opsional) Menentukan apakah akan menggunakan fitur penalaran. Nilai defaultnya adalah false. Jika true, Anda perlu membawa Azure OpenAI GPT4o Anda sendiri (versi 0513, 0806) untuk memberikan penjelasan. Hati-hati: menggunakan penalaran meningkatkan waktu pemrosesan. Boolean

Menginterpretasikan respons API

Setelah mengirimkan permintaan, Anda akan menerima respons JSON yang mencerminkan analisis Groundedness yang dilakukan. Berikut tampilan output umumnya:

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

Objek JSON dalam output didefinisikan di sini:

Nama Deskripsi Jenis
ungroundedDetected Menunjukkan apakah teks menunjukkan ketidak-latar belakang. Boolean
ungroundedPercentage Menentukan proporsi teks yang diidentifikasi sebagai tidak di-ground, dinyatakan sebagai angka antara 0 dan 1, di mana 0 menunjukkan tidak ada konten yang tidak di-ground dan 1 menunjukkan konten yang sepenuhnya tidak di-ground. Float
ungroundedDetails Memberikan wawasan tentang konten yang tidak di-ground dengan contoh dan persentase tertentu. Array
-text Teks tertentu yang tidak di-ground. String

Periksa groundedness dengan penalaran

API deteksi Groundedness menyediakan opsi untuk menyertakan penalaran dalam respons API. Dengan penalaran diaktifkan, respons mencakup "reasoning" bidang yang merinci instans dan penjelasan tertentu untuk setiap ketidakalahan yang terdeteksi.

Menyambungkan penyebaran GPT Anda sendiri

Tip

Kami hanya mendukung **Azure OpenAI GPT4o (versi 0513, 0806) ** sumber daya dan tidak mendukung jenis GPT lainnya. Anda memiliki fleksibilitas untuk menyebarkan sumber daya Azure OpenAI GPT4o (versi 0513, 0806) di wilayah mana pun. Namun, untuk meminimalkan potensi latensi dan menghindari privasi data batas geografis dan masalah risiko, sebaiknya letakkan di wilayah yang sama dengan sumber daya keamanan konten Anda. Untuk detail komprehensif tentang privasi data, lihat Panduan data, privasi, dan keamanan untuk Azure OpenAI Service dan Data, privasi, dan keamanan untuk Azure AI Content Safety.

Untuk menggunakan sumber daya Azure OpenAI GPT4o (versi 0513, 0806) Anda untuk mengaktifkan fitur penalaran, gunakan Identitas Terkelola untuk memungkinkan sumber daya Keamanan Konten Anda mengakses sumber daya Azure OpenAI:

  1. Aktifkan Identitas Terkelola untuk Keamanan Konten Azure AI.

    Navigasikan ke instans Azure AI Content Safety Anda di portal Azure. Temukan bagian Identitas di bawah kategori Pengaturan . Aktifkan identitas terkelola yang ditetapkan sistem. Tindakan ini memberi instans Azure AI Content Safety Anda identitas yang dapat dikenali dan digunakan dalam Azure untuk mengakses sumber daya lain.

    Cuplikan layar sumber daya identitas Keamanan Konten di portal Azure.

  2. Tetapkan peran ke Identitas Terkelola.

    Navigasi ke instans Azure OpenAI Anda, pilih Tambahkan penetapan peran untuk memulai proses penetapan peran Azure OpenAI ke identitas Azure AI Content Safety.

    Cuplikan layar menambahkan penetapan peran di portal Azure.

    Pilih peran Pengguna atau Kontributor.

    Cuplikan layar portal Azure dengan peran Kontributor dan Pengguna ditampilkan dalam daftar.

Membuat permintaan API

Dalam permintaan Anda ke API deteksi Groundedness, atur "reasoning" parameter isi ke true, dan berikan parameter lain yang diperlukan:


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

Bagian ini menjelaskan permintaan sampel dengan cURL. Tempelkan perintah di bawah ini ke editor teks, dan buat perubahan berikut.

  1. Ganti <endpoint> dengan URL titik akhir yang terkait dengan sumber daya Azure AI Content Safety Anda.

  2. Ganti <your_subscription_key> dengan salah satu kunci untuk sumber daya Anda.

  3. Ganti <your_OpenAI_endpoint> dengan URL titik akhir yang terkait dengan sumber daya Azure OpenAI Anda.

  4. Ganti <your_deployment_name> dengan nama penyebaran Azure OpenAI Anda.

  5. Secara opsional, ganti "query" bidang atau "text" dalam isi dengan teks Anda sendiri yang ingin Anda analisis.

    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. Buka perintah dan jalankan perintah cURL.

Parameter dalam isi permintaan ditentukan dalam tabel ini:

Nama Deskripsi Jenis
domain (Opsional) MEDICAL atau GENERIC. Nilai default: GENERIC. Enum
tugas (Opsional) Jenis tugas: QnA, Summarization. Nilai default: Summarization. Enum
qna (Opsional) Menyimpan data QnA saat jenis tugas adalah QnA. String
- query (Opsional) Ini mewakili pertanyaan dalam tugas QnA. Batas karakter: 7.500. String
text (Diperlukan) Teks output LLM yang akan diperiksa. Batas karakter: 7.500. String
groundingSources (Diperlukan) Menggunakan array sumber grounding untuk memvalidasi teks yang dihasilkan AI. Lihat Persyaratan input untuk batasan, Array string
Penalaran (Opsional) Atur ke true, layanan menggunakan sumber daya Azure OpenAI untuk memberikan penjelasan. Berhati-hatilah: menggunakan penalaran meningkatkan waktu pemrosesan dan dikenakan biaya tambahan. Boolean
llmResource (Diperlukan) Jika Anda ingin menggunakan sumber daya Azure OpenAI GPT4o (versi 0513, 0806) Anda sendiri untuk mengaktifkan penalaran, tambahkan bidang ini dan sertakan subbidang untuk sumber daya yang digunakan. String
- resourceType Menentukan jenis sumber daya yang digunakan. Saat ini hanya memungkinkan AzureOpenAI. Kami hanya mendukung sumber daya Azure OpenAI GPT4o (versi 0513, 0806) dan tidak mendukung jenis GPT lainnya. Enum
- azureOpenAIEndpoint URL titik akhir Anda untuk layanan Azure OpenAI. String
- azureOpenAIDeploymentName Nama penyebaran GPT tertentu yang akan digunakan. String

Menginterpretasikan respons API

Setelah mengirimkan permintaan, Anda akan menerima respons JSON yang mencerminkan analisis Groundedness yang dilakukan. Berikut tampilan output umumnya:

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

Objek JSON dalam output didefinisikan di sini:

Nama Deskripsi Jenis
ungroundedDetected Menunjukkan apakah teks menunjukkan ketidak-latar belakang. Boolean
ungroundedPercentage Menentukan proporsi teks yang diidentifikasi sebagai tidak di-ground, dinyatakan sebagai angka antara 0 dan 1, di mana 0 menunjukkan tidak ada konten yang tidak di-ground dan 1 menunjukkan konten yang sepenuhnya tidak di-ground. Float
ungroundedDetails Memberikan wawasan tentang konten yang tidak di-ground dengan contoh dan persentase tertentu. Array
-text Teks tertentu yang tidak di-ground. String
-offset Objek yang menjelaskan posisi teks yang tidak di-ground dalam berbagai pengodean. String
- offset > utf8 Posisi offset teks tidak teralihkan dalam pengodean UTF-8. Bilangan bulat
- offset > utf16 Posisi offset teks tidak teralihkan dalam pengodean UTF-16. Bilangan bulat
- offset > codePoint Posisi offset teks tidak teralihkan dalam hal titik kode Unicode. Bilangan bulat
-length Objek yang menjelaskan panjang teks yang tidak di-ground dalam berbagai pengodean. (utf8, utf16, codePoint), mirip dengan offset. Objek
- length > utf8 Panjang teks tanpa latar dalam pengodean UTF-8. Bilangan bulat
- length > utf16 Panjang teks tanpa latar dalam pengodean UTF-16. Bilangan bulat
- length > codePoint Panjang teks yang tidak di-ground dalam hal titik kode Unicode. Bilangan bulat
-reason Menawarkan penjelasan untuk ketidaksadaran yang terdeteksi. String

Periksa groundedness dengan fitur koreksi

API deteksi groundedness mencakup fitur koreksi yang secara otomatis mengoreksi ketidakalahan yang terdeteksi dalam teks berdasarkan sumber grounding yang disediakan. Saat fitur koreksi diaktifkan, respons menyertakan "correction Text" bidang yang menyajikan teks yang dikoreksi yang selaras dengan sumber dasar.

Menyambungkan penyebaran GPT Anda sendiri

Tip

Saat ini, fitur koreksi hanya mendukung sumber daya **Azure OpenAI GPT4o (versi 0513, 0806) ** . Untuk meminimalkan latensi dan mematuhi pedoman privasi data, disarankan untuk menyebarkan Azure OpenAI GPT4o Anda (versi 0513, 0806) di wilayah yang sama dengan sumber daya keamanan konten Anda. Untuk detail selengkapnya tentang privasi data, lihat Panduan data, privasi, dan keamanan untuk Layanan dan Data, privasi, dan keamanan Azure OpenAI untuk Keamanan Konten Azure AI.

Untuk menggunakan sumber daya Azure OpenAI GPT4o (versi 0513, 0806) Anda untuk mengaktifkan fitur koreksi, gunakan Identitas Terkelola untuk memungkinkan sumber daya Keamanan Konten Anda mengakses sumber daya Azure OpenAI. Ikuti langkah-langkah di bagian sebelumnya untuk menyiapkan Identitas Terkelola.

Membuat permintaan API

Dalam permintaan Anda ke API deteksi groundedness, atur "correction" parameter isi ke true, dan berikan parameter lain yang diperlukan:

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

Bagian ini menunjukkan permintaan sampel menggunakan cURL. Ganti tempat penampung sesuai kebutuhan:

  • Ganti <endpoint> dengan URL titik akhir sumber daya Anda.
  • Ganti <your_subscription_key> dengan kunci langganan Anda.
  • Secara opsional, ganti bidang "teks" dengan teks yang ingin Anda analisis.
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>"
  }
}'

Parameter dalam isi permintaan ditentukan dalam tabel ini:

Nama Deskripsi Jenis
domain (Opsional) MEDICAL atau GENERIC. Nilai default: GENERIC. Enum
tugas (Opsional) Jenis tugas: QnA, Summarization. Nilai default: Summarization. Enum
qna (Opsional) Menyimpan data QnA saat jenis tugas adalah QnA. String
- query (Opsional) Ini mewakili pertanyaan dalam tugas QnA. Batas karakter: 7.500. String
text (Diperlukan) Teks output LLM yang akan diperiksa. Batas karakter: 7.500. String
groundingSources (Diperlukan) Menggunakan array sumber grounding untuk memvalidasi teks yang dihasilkan AI. Lihat Persyaratan input untuk batasan. Array String
koreksi (Opsional) Atur ke true, layanan menggunakan sumber daya Azure OpenAI untuk menyediakan teks yang dikoreksi, memastikan konsistensi dengan sumber dasar. Berhati-hatilah: menggunakan koreksi meningkatkan waktu pemrosesan dan dikenakan biaya tambahan. Boolean
llmResource (Diperlukan) Jika Anda ingin menggunakan sumber daya Azure OpenAI GPT4o (versi 0513, 0806) Anda sendiri untuk mengaktifkan penalaran, tambahkan bidang ini dan sertakan subbidang untuk sumber daya yang digunakan. String
- resourceType Menentukan jenis sumber daya yang digunakan. Saat ini hanya memungkinkan AzureOpenAI. Kami hanya mendukung sumber daya Azure OpenAI GPT4o (versi 0513, 0806) dan tidak mendukung jenis GPT lainnya. Enum
- azureOpenAIEndpoint URL titik akhir Anda untuk layanan Azure OpenAI. String
- azureOpenAIDeploymentName Nama penyebaran GPT tertentu yang akan digunakan. String

Menginterpretasikan respons API

Respons mencakup bidang yang "correction Text" berisi teks yang dikoreksi, memastikan konsistensi dengan sumber dasar yang disediakan.

Fitur koreksi mendeteksi bahwa Kevin tidak teralihkan karena bertentangan dengan sumber Janedasar . API mengembalikan teks yang dikoreksi: "The patient name is Jane."

{
  "ungroundedDetected": true,
  "ungroundedPercentage": 1,
  "ungroundedDetails": [
    {
      "text": "The patient name is Kevin"
    }
  ],
  "correction Text": "The patient name is Jane"
}

Objek JSON dalam output didefinisikan di sini:

Nama Deskripsi Jenis
ungroundedDetected Menunjukkan apakah konten tidak teralihkan terdeteksi. Boolean
ungroundedPercentage Proporsi konten tidak teralihkan dalam teks. Float
ungroundedDetails Detail konten tidak teralihkan, termasuk segmen teks tertentu. Array
-text Teks tertentu yang tidak di-ground. String
-offset Objek yang menjelaskan posisi teks yang tidak di-ground dalam berbagai pengodean. String
- offset > utf8 Posisi offset teks tidak teralihkan dalam pengodean UTF-8. Bilangan bulat
- offset > utf16 Posisi offset teks tidak teralihkan dalam pengodean UTF-16. Bilangan bulat
-length Objek yang menjelaskan panjang teks yang tidak di-ground dalam berbagai pengodean. (utf8, utf16, codePoint), mirip dengan offset. Objek
- length > utf8 Panjang teks tanpa latar dalam pengodean UTF-8. Bilangan bulat
- length > utf16 Panjang teks tanpa latar dalam pengodean UTF-16. Bilangan bulat
- length > codePoint Panjang teks yang tidak di-ground dalam hal titik kode Unicode. Bilangan bulat
-correction Text Teks yang dikoreksi, memastikan konsistensi dengan sumber dasar. String

Membersihkan sumber daya

Jika Anda ingin membersihkan dan menghapus langganan layanan Azure AI, Anda dapat menghapus sumber daya atau grup sumber daya. Menghapus grup sumber daya juga menghapus sumber daya apa pun yang terkait dengannya.