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.
Ganti
<endpoint>
dengan URL titik akhir yang terkait dengan sumber daya Anda.Ganti
<your_subscription_key>
dengan salah satu kunci untuk sumber daya Anda.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:
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.
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.
Pilih peran Pengguna atau Kontributor.
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.
Ganti
<endpoint>
dengan URL titik akhir yang terkait dengan sumber daya Azure AI Content Safety Anda.Ganti
<your_subscription_key>
dengan salah satu kunci untuk sumber daya Anda.Ganti
<your_OpenAI_endpoint>
dengan URL titik akhir yang terkait dengan sumber daya Azure OpenAI Anda.Ganti
<your_deployment_name>
dengan nama penyebaran Azure OpenAI Anda.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>" }'
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 Jane
dasar . 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.
Konten terkait
- Konsep deteksi groundedness
- Gabungkan deteksi Groundedness dengan fitur keamanan LLM lainnya seperti Prompt Shields.