Mulai mengevaluasi jawaban di aplikasi obrolan di Python
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 hari ini untuk mempermudah menjalankan evaluasi.
Dengan mengikuti instruksi dalam artikel ini, Anda akan:
- 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 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 dan mudah disebarkan dengan baik yang 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.
- Microsoft AI Chat Protocol 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: Dapat menghasilkan banyak pertanyaan untuk setiap dokumen bersama dengan jawaban kebenaran dasar. Semakin banyak pertanyaan, semakin lama evaluasinya.
- Evaluator menjalankan contoh pertanyaan dan perintah terhadap aplikasi obrolan dan mengembalikan hasilnya.
- Alat peninjauan memungkinkan Anda meninjau hasil evaluasi.
- Alat Diff memungkinkan Anda membandingkan jawaban antar evaluasi.
Saat Anda menyebarkan evaluasi ini ke Azure, titik akhir Azure OpenAI dibuat untuk GPT-4
model dengan kapasitasnya sendiri. Saat mengevaluasi aplikasi obrolan, penting bahwa evaluator memiliki sumber daya OpenAI sendiri menggunakan GPT-4
dengan kapasitasnya sendiri.
Prasyarat
Langganan Azure. Buat satu secara gratis
Akses yang diberikan ke Azure OpenAI dalam langganan Azure yang diinginkan.
Saat ini, akses ke layanan ini hanya diberikan oleh aplikasi. Anda dapat mengajukan permohonan akses ke Azure OpenAI dengan melengkapi formulir di https://aka.ms/oai/access.
Selesaikan prosedur Aplikasi obrolan sebelumnya untuk menyebarkan aplikasi obrolan ke Azure. Sumber daya ini diperlukan agar aplikasi evaluasi berfungsi. Jangan selesaikan bagian Bersihkan sumber daya dari prosedur sebelumnya.
Anda akan 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. Ini dapat ditemukan 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 informasi ini dikumpulkan, Anda tidak perlu menggunakan lingkungan pengembangan aplikasi obrolan lagi. Ini disebut nanti dalam artikel ini beberapa kali untuk menunjukkan bagaimana aplikasi obrolan digunakan oleh aplikasi Evaluasi. Jangan hapus sumber daya aplikasi obrolan hingga Anda menyelesaikan seluruh prosedur 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
Mulai sekarang dengan lingkungan pengembangan yang memiliki semua dependensi yang diinstal untuk menyelesaikan artikel ini. Anda harus mengatur ruang kerja monitor 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. Untuk lingkungan pengembangan yang paling mudah, gunakan GitHub Codespaces sehingga Anda memiliki alat dan dependensi pengembang yang benar yang telah diinstal sebelumnya untuk menyelesaikan artikel ini.
Penting
Semua akun GitHub dapat menggunakan Codespace hingga 60 jam gratis setiap bulan dengan 2 instans inti. Untuk informasi selengkapnya, lihat GitHub Codespaces bulanan yang disertakan penyimpanan dan jam inti.
Mulai proses untuk membuat GitHub Codespace baru di
main
cabangAzure-Samples/ai-rag-chat-evaluator
repositori GitHub.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, untuk aplikasi evaluasi.
azd up
Ini
AZD command
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 ditampilkan 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.
Gunakan perintah berikut untuk mendapatkan informasi sumber daya aplikasi Evaluasi ke dalam
.env
file:azd env get-values > .env
Tambahkan nilai berikut dari aplikasi obrolan untuk instans Azure AI Search-nya ke
.env
, yang Anda kumpulkan di bagian prasyarat:AZURE_SEARCH_SERVICE="<service-name>" AZURE_SEARCH_INDEX="<index-name>"
Nilainya
AZURE_SEARCH_KEY
adalah kunci kueri untuk instans Azure AI Search .
Menggunakan Protokol Obrolan Microsoft AI untuk informasi konfigurasi
Aplikasi obrolan dan aplikasi evaluasi menerapkan Microsoft AI Chat Protocol specification
kontrak API titik akhir AI agnostik sumber terbuka, Cloud, dan bahasa yang digunakan untuk konsumsi dan evaluasi. Ketika klien dan titik akhir tingkat menengah Anda 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": { "semantic_ranker": false, "prompt_template": "<READFILE>my_input/prompt_refined.txt" } } }
Skrip evaluasi membuat
my_results
folder.Objek
overrides
berisi pengaturan konfigurasi apa pun yang diperlukan untuk aplikasi. Setiap aplikasi mendefinisikan kumpulan properti pengaturannya sendiri.Gunakan tabel berikut untuk memahami arti properti pengaturan yang digunakan untuk aplikasi evaluasi.
Properti Pengaturan Deskripsi semantic_ranker Gunakan pemeringkat semantik, model yang mereranks hasil pencarian berdasarkan kesamaan semantik dengan kueri pengguna. prompt_template Mengambil alih perintah yang digunakan untuk menghasilkan jawaban berdasarkan hasil pertanyaan dan pencarian. target_url
Ubah ke nilai URI aplikasi obrolan Anda, yang Anda kumpulkan di bagian prasyarat. Aplikasi obrolan harus sesuai dengan protokol obrolan. URI memiliki formathttps://CHAT-APP-URL/chat
berikut . 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.
Salin folder ke
example_input
folder baru bernamamy_input
.Di terminal, jalankan perintah berikut untuk menghasilkan data sampel:
python3 -m scripts generate --output=my_input/qa.jsonl --numquestions=14 --persource=2
Pasangan pertanyaan/jawaban 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 menghasilkan lebih banyak pasangan QA, lebih dari 200 untuk himpunan data ini.
Catatan
Beberapa pertanyaan dan jawaban per sumber dimaksudkan untuk memungkinkan Anda menyelesaikan prosedur ini dengan cepat. Ini tidak dimaksudkan untuk menjadi evaluasi produksi yang seharusnya memiliki lebih banyak pertanyaan dan jawaban per sumber.
Jalankan evaluasi pertama dengan perintah yang disempurnakan
my_config.json
Edit properti file konfigurasi: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 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:
python3 -m scripts evaluate --config=my_config.json --numquestions=14
Skrip ini membuat folder eksperimen baru dengan
my_results/
evaluasi. Folder berisi hasil evaluasi termasuk:Nama File Deskripsi eval_results.jsonl
Setiap pertanyaan dan jawaban, bersama dengan metrik GPT untuk setiap pasangan QA. summary.json
Hasil keseluruhan, seperti metrik GPT rata-rata.
Jalankan evaluasi kedua dengan prompt lemah
my_config.json
Edit properti file konfigurasi:Properti Nilai baru results_dir my_results/experiment_weak
prompt_template <READFILE>my_input/prompt_weak.txt
Prompt lemah itu tidak memiliki konteks tentang domain subjek:
You are a helpful assistant.
Di terminal, jalankan perintah berikut untuk menjalankan evaluasi:
python3 -m scripts evaluate --config=my_config.json --numquestions=14
Jalankan evaluasi ketiga dengan suhu tertentu
Gunakan perintah yang memungkinkan lebih banyak kreativitas.
my_config.json
Edit properti file konfigurasi: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 suhu 0.9
Defaultnya
temperature
adalah 0,7. Semakin tinggi suhu, semakin kreatif jawabannya.Perintahnya
ignore
pendek: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 berikut ini kecuali ganti
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:
python3 -m scripts 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:
python3 -m review_tools summary my_results
Hasilnya terlihat seperti:
Setiap nilai dikembalikan sebagai angka dan persentase.
Gunakan tabel berikut untuk memahami arti nilai.
Nilai Deskripsi Groundedness Ini mengacu pada seberapa baik respons model didasarkan pada informasi yang faktual dan dapat diverifikasi. Respons dianggap membumi jika akurat secara faktual dan mencerminkan realitas. Relevansi Ini mengukur seberapa dekat respons model selaras dengan konteks atau perintah. Respons yang relevan secara langsung membahas kueri atau pernyataan pengguna. Koherensi Ini mengacu pada seberapa konsisten secara logis respons model. Respons koheren mempertahankan aliran logis dan tidak bertentangan dengan dirinya sendiri. Kutipan Ini menunjukkan apakah jawaban dikembalikan dalam format yang diminta dalam perintah. Panjang Ini mengukur panjang respons. Hasilnya harus menunjukkan ketiga evaluasi memiliki relevansi tinggi sementara
experiment_ignoresources_temp09
memiliki relevansi terendah.Pilih folder untuk melihat konfigurasi evaluasi.
Masukkan Ctrl + C keluar dari aplikasi dan kembali ke terminal.
Bandingkan jawabannya
Bandingkan jawaban yang dikembalikan dari evaluasi.
Pilih dua evaluasi untuk dibandingkan, lalu gunakan alat tinjauan yang sama untuk membandingkan jawabannya:
python3 -m review_tools diff my_results/experiment_refined my_results/experiment_ignoresources_temp09
Tinjau hasilnya. Hasil Anda mungkin bervariasi.
Masukkan Ctrl + C 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,
Please answer in about 3 sentences.
.
Membersihkan sumber daya dan dependensi
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
Menghapus lingkungan GitHub Codespaces memastikan bahwa Anda dapat memaksimalkan jumlah pemberian izin per jam 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 (https://github.com/codespaces).
Temukan Codespace Yang sedang berjalan yang bersumber dari
Azure-Samples/ai-rag-chat-evaluator
repositori GitHub.Buka menu konteks untuk codespace, lalu pilih Hapus.
Kembali ke artikel aplikasi obrolan untuk membersihkan sumber daya tersebut.
Langkah berikutnya
- Repositori evaluasi
- Repositori GitHub aplikasi obrolan perusahaan
- Membangun aplikasi obrolan dengan arsitektur solusi praktik terbaik Azure OpenAI
- Kontrol akses di aplikasi AI Generatif dengan Azure AI Search
- Membangun solusi OpenAI siap Enterprise dengan Azure API Management
- Pencarian vektor yang mengungguli dengan kemampuan pengambilan dan peringkat hibrid