Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menunjukkan kepada Anda cara mengevaluasi jawaban aplikasi obrolan terhadap serangkaian jawaban yang benar atau ideal (dikenal sebagai kebenaran dasar). Setiap kali Anda mengubah aplikasi obrolan dengan cara yang memengaruhi jawaban, jalankan evaluasi untuk membandingkan perubahan. Aplikasi demo ini menawarkan alat yang dapat Anda gunakan saat ini untuk mempermudah menjalankan evaluasi.
Dengan mengikuti instruksi dalam artikel ini, Anda:
- Gunakan permintaan sampel yang disediakan yang disesuaikan dengan domain subjek. Perintah ini sudah ada di repositori.
- Hasilkan contoh pertanyaan pengguna dan jawaban kebenaran dasar dari dokumen Anda sendiri.
- Jalankan evaluasi dengan menggunakan permintaan sampel dengan pertanyaan pengguna yang dihasilkan.
- Tinjau analisis jawaban.
Catatan
Artikel ini menggunakan satu atau beberapa templat aplikasi AI sebagai dasar untuk contoh dan panduan dalam artikel. Templat aplikasi AI memberi Anda implementasi referensi yang terawat dengan baik yang mudah disebarkan. Ini membantu memastikan titik awal berkualitas tinggi untuk aplikasi AI Anda.
Ikhtisar arsitektur
Komponen utama arsitektur meliputi:
- Aplikasi obrolan yang dihosting Azure: Aplikasi obrolan berjalan di Azure App Service.
- Protokol Obrolan Microsoft AI: Protokol ini menyediakan kontrak API standar di seluruh solusi dan bahasa AI. Aplikasi obrolan sesuai dengan Protokol Obrolan Microsoft AI, yang memungkinkan aplikasi evaluasi berjalan terhadap aplikasi obrolan apa pun yang sesuai dengan protokol.
- Pencarian Azure AI: Aplikasi obrolan menggunakan Azure AI Search untuk menyimpan data dari dokumen Anda sendiri.
- Contoh generator pertanyaan: Alat ini dapat menghasilkan banyak pertanyaan untuk setiap dokumen bersama dengan jawaban kebenaran dasar. Semakin banyak pertanyaan, semakin lama evaluasinya.
- Evaluator: Alat ini menjalankan contoh pertanyaan dan permintaan terhadap aplikasi obrolan dan mengembalikan hasilnya.
- Alat ulasan: Alat ini meninjau hasil evaluasi.
- Alat Pembanding: Alat ini membandingkan jawaban antar penilaian.
Saat Anda menyebarkan evaluasi ini ke Azure, titik akhir Azure OpenAI Service dibuat untuk GPT-4
model dengan kapasitasnya sendiri. Saat Anda mengevaluasi aplikasi obrolan, penting bahwa evaluator memiliki sumber daya Azure OpenAI sendiri dengan menggunakan GPT-4
dengan kapasitasnya sendiri.
Prasyarat
Langganan Azure. Buat satu secara gratis
Meluncurkan aplikasi obrolan.
Aplikasi obrolan ini memuat data ke sumber daya Azure AI Search. Sumber daya ini diperlukan agar aplikasi evaluasi berfungsi. Jangan selesaikan bagian Bersihkan sumber daya dari prosedur sebelumnya.
Anda memerlukan informasi sumber daya Azure berikut dari penyebaran tersebut, yang disebut sebagai aplikasi obrolan dalam artikel ini:
- URI API Obrolan: Titik akhir backend layanan ditampilkan di akhir
azd up
proses. - Pencarian Azure AI. Nilai berikut diperlukan:
- Nama sumber daya: Nama sumber daya Pencarian Azure AI, dilaporkan sebagai
Search service
selamaazd up
proses. - Nama indeks: Nama indeks Pencarian Azure AI tempat dokumen Anda disimpan. Anda dapat menemukan nama indeks di portal Microsoft Azure untuk layanan Pencarian.
- Nama sumber daya: Nama sumber daya Pencarian Azure AI, dilaporkan sebagai
URL API Obrolan memungkinkan evaluasi untuk membuat permintaan melalui aplikasi backend Anda. Informasi Pencarian Azure AI memungkinkan skrip evaluasi menggunakan penyebaran yang sama dengan backend Anda, yang dimuat dengan dokumen.
Setelah mengumpulkan informasi ini, Anda tidak perlu menggunakan lingkungan pengembangan aplikasi obrolan lagi. Artikel ini merujuk ke aplikasi obrolan beberapa kali untuk menunjukkan cara aplikasi Evaluasi menggunakannya. Jangan hapus sumber daya aplikasi obrolan hingga Anda menyelesaikan semua langkah dalam artikel ini.
- URI API Obrolan: Titik akhir backend layanan ditampilkan di akhir
Lingkungan kontainer pengembangan tersedia dengan semua dependensi yang diperlukan untuk menyelesaikan artikel ini. Anda dapat menjalankan kontainer pengembangan di GitHub Codespaces (di browser) atau secara lokal menggunakan Visual Studio Code.
- Akun GitHub
Membuka lingkungan pengembangan
Ikuti petunjuk ini untuk menyiapkan lingkungan pengembangan yang telah dikonfigurasi sebelumnya dengan semua dependensi yang diperlukan untuk menyelesaikan artikel ini. Atur ruang kerja monitor Anda sehingga Anda dapat melihat dokumentasi ini dan lingkungan pengembangan secara bersamaan.
Artikel ini diuji dengan switzerlandnorth
wilayah untuk penyebaran evaluasi.
GitHub Codespaces menjalankan kontainer pengembangan yang dikelola oleh GitHub dengan Visual Studio Code untuk Web sebagai antarmuka pengguna. Gunakan GitHub Codespaces untuk lingkungan pengembangan termudah. Dilengkapi dengan alat pengembang dan dependensi yang tepat yang telah diinstal sebelumnya untuk menyelesaikan artikel ini.
Penting
Semua akun GitHub dapat menggunakan GitHub Codespaces hingga 60 jam gratis setiap bulan dengan dua instans inti. Untuk informasi selengkapnya, lihat GitHub Codespaces bulanan yang disertakan penyimpanan dan jam inti.
Mulai proses untuk membuat ruang kode GitHub baru di
main
cabang repositori GitHub Azure-Samples/ai-rag-chat-evaluator .Untuk menampilkan lingkungan pengembangan dan dokumentasi yang tersedia secara bersamaan, klik kanan tombol berikut, dan pilih Buka tautan di jendela baru.
Pada halaman Buat codespace , tinjau pengaturan konfigurasi codespace, lalu pilih Buat codespace baru.
Tunggu hingga codespace dimulai. Proses startup ini dapat memakan waktu beberapa menit.
Di terminal di bagian bawah layar, masuk ke Azure dengan Azure Developer CLI:
azd auth login --use-device-code
Salin kode dari terminal lalu tempelkan ke browser. Ikuti instruksi untuk mengautentikasi dengan akun Azure Anda.
Provisikan sumber daya Azure yang diperlukan, Azure OpenAI Service, untuk aplikasi evaluasi:
azd up
Perintah ini
AZD
tidak menyebarkan aplikasi evaluasi, tetapi membuat sumber daya Azure OpenAI dengan penyebaran yang diperlukanGPT-4
untuk menjalankan evaluasi di lingkungan pengembangan lokal.
Tugas yang tersisa dalam artikel ini berlangsung dalam konteks kontainer pengembangan ini.
Nama repositori GitHub muncul di bilah pencarian. Indikator visual ini membantu Anda membedakan aplikasi evaluasi dari aplikasi obrolan. Repositori ini ai-rag-chat-evaluator
disebut sebagai aplikasi evaluasi dalam artikel ini.
Menyiapkan nilai lingkungan dan informasi konfigurasi
Perbarui nilai lingkungan dan informasi konfigurasi dengan informasi yang Anda kumpulkan selama Prasyarat untuk aplikasi evaluasi.
Buat
.env
file berdasarkan.env.sample
.cp .env.sample .env
Jalankan perintah ini untuk mendapatkan nilai yang diperlukan untuk
AZURE_OPENAI_EVAL_DEPLOYMENT
danAZURE_OPENAI_SERVICE
dari grup sumber daya yang Anda sebarkan. Tempelkan nilai-nilai tersebut ke.env
dalam file.azd env get-value AZURE_OPENAI_EVAL_DEPLOYMENT azd env get-value AZURE_OPENAI_SERVICE
Tambahkan nilai-nilai berikut dari aplikasi obrolan ke dalam file
.env
untuk instance Azure AI Search, yang Anda kumpulkan di bagian Prasyarat.AZURE_SEARCH_SERVICE="<service-name>" AZURE_SEARCH_INDEX="<index-name>"
Menggunakan Protokol Obrolan Microsoft AI untuk informasi konfigurasi
Aplikasi obrolan dan aplikasi evaluasi sama-sama menerapkan spesifikasi Protokol Obrolan Microsoft AI, sebuah kontrak API antarmuka AI yang bersifat open-source, berbasis cloud, dan tidak bergantung pada bahasa, yang digunakan untuk konsumsi dan evaluasi. Saat klien dan titik akhir tingkat menengah mematuhi spesifikasi API ini, Anda dapat secara konsisten menggunakan dan menjalankan evaluasi pada backend AI Anda.
Buat file baru bernama
my_config.json
dan salin konten berikut ke dalamnya:{ "testdata_path": "my_input/qa.jsonl", "results_dir": "my_results/experiment<TIMESTAMP>", "target_url": "http://localhost:50505/chat", "target_parameters": { "overrides": { "top": 3, "temperature": 0.3, "retrieval_mode": "hybrid", "semantic_ranker": false, "prompt_template": "<READFILE>my_input/prompt_refined.txt", "seed": 1 } } }
Skrip evaluasi membuat
my_results
folder.Objek
overrides
berisi pengaturan konfigurasi apa pun yang diperlukan untuk aplikasi. Setiap aplikasi menentukan sekumpulan properti pengaturannya sendiri.Gunakan tabel berikut untuk memahami arti properti pengaturan yang dikirim ke aplikasi obrolan.
Pengaturan properti Deskripsi semantic_ranker
Apakah akan menggunakan pemeringkat semantik, model yang mereranks hasil pencarian berdasarkan kesamaan semantik dengan kueri pengguna. Kami menonaktifkannya untuk tutorial ini untuk mengurangi biaya. retrieval_mode
Mode pengambilan yang akan digunakan. Default adalah hybrid
.temperature
Pengaturan suhu untuk model. Default adalah 0.3
.top
Jumlah hasil pencarian yang akan dikembalikan. Default adalah 3
.prompt_template
Penimpaan perintah yang digunakan untuk menghasilkan jawaban berdasarkan hasil pertanyaan dan pencarian. seed
Nilai seed untuk setiap panggilan ke model GPT. Mengatur benih menghasilkan hasil yang lebih konsisten di seluruh evaluasi. target_url
Ubah nilai menjadi nilai URI aplikasi obrolan Anda, yang Anda kumpulkan di bagian Prasyarat. Aplikasi obrolan harus sesuai dengan protokol obrolan. URI memiliki format berikut:https://CHAT-APP-URL/chat
. Pastikan protokol danchat
rute adalah bagian dari URI.
Membuat data sampel
Untuk mengevaluasi jawaban baru, jawaban tersebut harus dibandingkan dengan jawaban kebenaran dasar , yang merupakan jawaban ideal untuk pertanyaan tertentu. Hasilkan pertanyaan dan jawaban dari dokumen yang disimpan di Azure AI Search untuk aplikasi obrolan.
example_input
Salin folder ke folder baru bernamamy_input
.Di terminal, jalankan perintah berikut untuk menghasilkan data sampel:
python -m evaltools generate --output=my_input/qa.jsonl --persource=2 --numquestions=14
Pasangan tanya jawab dihasilkan dan disimpan dalam (dalam my_input/qa.jsonl
format JSONL) sebagai input ke evaluator yang digunakan pada langkah berikutnya. Untuk evaluasi produksi, Anda akan menciptakan lebih banyak pasangan tanya jawab. Lebih dari 200 dihasilkan untuk himpunan data ini.
Catatan
Hanya beberapa pertanyaan dan jawaban yang dihasilkan per sumber sehingga Anda dapat dengan cepat menyelesaikan prosedur ini. Ini tidak dimaksudkan untuk menjadi evaluasi produksi, yang seharusnya memiliki lebih banyak pertanyaan dan jawaban per sumber.
Jalankan evaluasi pertama dengan perintah yang disempurnakan
Edit properti file konfigurasi
my_config.json
.Properti Nilai baru results_dir
my_results/experiment_refined
prompt_template
<READFILE>my_input/prompt_refined.txt
Perintah yang disempurnakan khusus tentang domain subjek.
If there isn't enough information below, say you don't know. Do not generate answers that don't use the sources below. If asking a clarifying question to the user would help, ask the question. Use clear and concise language and write in a confident yet friendly tone. In your answers, ensure the employee understands how your response connects to the information in the sources and include all citations necessary to help the employee validate the answer provided. For tabular information, return it as an html table. Do not return markdown format. If the question is not in English, answer in the language used in the question. Each source has a name followed by a colon and the actual information. Always include the source name for each fact you use in the response. Use square brackets to reference the source, e.g. [info1.txt]. Don't combine sources, list each source separately, e.g. [info1.txt][info2.pdf].
Di terminal, jalankan perintah berikut untuk menjalankan evaluasi:
python -m evaltools evaluate --config=my_config.json --numquestions=14
Skrip ini membuat folder eksperimen baru dengan
my_results/
evaluasi. Folder berisi hasil evaluasi.Nama file Deskripsi config.json
Salinan file konfigurasi yang digunakan untuk evaluasi. evaluate_parameters.json
Parameter yang digunakan untuk evaluasi. Mirip config.json
dengan tetapi menyertakan metadata lain seperti stempel waktu.eval_results.jsonl
Setiap pertanyaan dan jawaban, bersama dengan metrik GPT untuk setiap pasangan pertanyaan dan jawaban. summary.json
Hasil keseluruhan, seperti metrik GPT rata-rata.
Jalankan evaluasi kedua dengan prompt lemah
Edit properti file konfigurasi
my_config.json
.Properti Nilai baru results_dir
my_results/experiment_weak
prompt_template
<READFILE>my_input/prompt_weak.txt
Perintah yang lemah itu tidak memiliki konteks tentang bidang subjek.
You are a helpful assistant.
Di terminal, jalankan perintah berikut untuk menjalankan evaluasi:
python -m evaltools evaluate --config=my_config.json --numquestions=14
Jalankan evaluasi ketiga dengan suhu tertentu
Gunakan perintah yang memungkinkan lebih banyak kreativitas.
Editlah properti file konfigurasi
my_config.json
.Yang Sudah Ada Properti Nilai baru Yang Sudah Ada results_dir
my_results/experiment_ignoresources_temp09
Yang Sudah Ada prompt_template
<READFILE>my_input/prompt_ignoresources.txt
Baru temperature
0.9
Defaultnya
temperature
adalah 0,7. Semakin tinggi suhu, semakin kreatif jawabannya.Teks perintah
ignore
singkat.Your job is to answer questions to the best of your ability. You will be given sources but you should IGNORE them. Be creative!
Objek konfigurasi akan terlihat seperti contoh berikut, kecuali Anda mengganti
results_dir
dengan jalur Anda:{ "testdata_path": "my_input/qa.jsonl", "results_dir": "my_results/prompt_ignoresources_temp09", "target_url": "https://YOUR-CHAT-APP/chat", "target_parameters": { "overrides": { "temperature": 0.9, "semantic_ranker": false, "prompt_template": "<READFILE>my_input/prompt_ignoresources.txt" } } }
Di terminal, jalankan perintah berikut untuk menjalankan evaluasi:
python -m evaltools evaluate --config=my_config.json --numquestions=14
Tinjau hasil evaluasi
Anda melakukan tiga evaluasi berdasarkan perintah dan pengaturan aplikasi yang berbeda. Hasilnya disimpan di my_results
folder . Tinjau bagaimana hasilnya berbeda berdasarkan pengaturan.
Gunakan alat peninjauan untuk melihat hasil evaluasi.
python -m evaltools summary my_results
Hasilnya terlihat seperti:
Setiap nilai dikembalikan sebagai angka dan persentase.
Gunakan tabel berikut untuk memahami arti nilai.
Nilai Deskripsi Keterhubungan dengan kenyataan Memeriksa seberapa baik respons model didasarkan pada informasi yang faktual dan dapat diverifikasi. Respons dianggap membumi jika akurat secara faktual dan mencerminkan realitas. Relevansi Mengukur seberapa dekat respons model selaras dengan konteks atau perintah. Respons yang relevan secara langsung membahas kueri atau pernyataan pengguna. Koherensi Memeriksa seberapa konsisten secara logis respons model. Respons koheren mempertahankan aliran logis dan tidak bertentangan dengan dirinya sendiri. Kutipan Menunjukkan apakah jawaban dikembalikan dalam format yang diminta dalam perintah. Panjang Mengukur panjang respons. Hasilnya harus menunjukkan bahwa ketiga evaluasi memiliki relevansi tinggi sementara
experiment_ignoresources_temp09
memiliki relevansi terendah.Pilih folder untuk melihat konfigurasi evaluasi.
Masukkan Ctrl + C untuk keluar dari aplikasi dan kembali ke terminal.
Bandingkan jawabannya
Bandingkan jawaban yang dikembalikan dari evaluasi.
Pilih dua evaluasi yang akan dibandingkan, lalu gunakan alat tinjauan yang sama untuk membandingkan jawabannya.
python -m evaltools diff my_results/experiment_refined my_results/experiment_ignoresources_temp09
Tinjau hasilnya. Hasil Anda mungkin bervariasi.
Masukkan Ctrl + C untuk keluar dari aplikasi dan kembali ke terminal.
Saran untuk evaluasi lebih lanjut
- Edit perintah
my_input
untuk menyesuaikan jawaban seperti domain subjek, panjang, dan faktor lainnya. -
my_config.json
Edit file untuk mengubah parameter sepertitemperature
eksperimen , dansemantic_ranker
jalankan ulang. - Bandingkan jawaban yang berbeda untuk memahami bagaimana perintah dan pertanyaan memengaruhi kualitas jawaban.
- Hasilkan serangkaian pertanyaan terpisah dan jawaban kebenaran dasar untuk setiap dokumen dalam indeks Pencarian Azure AI. Kemudian jalankan kembali evaluasi untuk melihat perbedaan jawabannya.
- Ubah perintah untuk menunjukkan jawaban yang lebih pendek atau lebih panjang dengan menambahkan persyaratan ke akhir perintah. Contohnya adalah
Please answer in about 3 sentences.
Membersihkan sumber daya dan dependensi
Langkah-langkah berikut memandu Anda melalui proses membersihkan sumber daya yang telah Anda gunakan.
Membersihkan sumber daya Azure
Sumber daya Azure yang dibuat dalam artikel ini ditagihkan ke langganan Azure Anda. Jika Anda tidak mengharapkan untuk membutuhkan sumber daya ini di masa mendatang, hapus sumber daya tersebut untuk menghindari dikenakan lebih banyak biaya.
Untuk menghapus sumber daya Azure dan menghapus kode sumber, jalankan perintah Azure Developer CLI berikut:
azd down --purge
Membersihkan GitHub Codespaces dan Visual Studio Code
Menghapus lingkungan GitHub Codespaces memastikan bahwa Anda dapat memaksimalkan kuota jam penggunaan inti gratis yang Anda dapatkan untuk akun Anda.
Penting
Untuk informasi selengkapnya tentang penetapan akun GitHub Anda, lihat GitHub Codespaces bulanan yang disertakan penyimpanan dan jam inti.
Masuk ke dasbor GitHub Codespaces.
Temukan codespace yang saat ini berjalan dan bersumber dari GitHub repositori Azure-Samples/ai-rag-chat-evaluator.
Buka menu konteks untuk codespace, lalu pilih Hapus.
Kembali ke artikel tentang aplikasi obrolan untuk membersihkan sumber daya tersebut.
Konten terkait
- Lihat repositori evaluasi.
- Lihat repositori GitHub aplikasi obrolan perusahaan .
- Buat aplikasi obrolan dengan arsitektur solusi praktik terbaik Azure OpenAI.
- Pelajari tentang kontrol akses di aplikasi AI generatif dengan Azure AI Search.
- Bangun solusi Azure OpenAI yang siap untuk perusahaan dengan Azure API Management.
- Lihat Azure AI Search: Mengungguli pencarian vektor dengan kemampuan pengambilan dan peringkat hibrid.