Mulai mengevaluasi jawaban di aplikasi obrolan di JavaScript

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. 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.

Ikhtisar arsitektur

Komponen utama arsitektur meliputi:

  • Aplikasi obrolan yang dihosting Azure: Aplikasi obrolan berjalan di Azure App Service. Aplikasi obrolan sesuai dengan protokol obrolan, 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 sejumlah 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.

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. Prosedur 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 akan memerlukan informasi sumber daya Azure berikut dari penyebaran tersebut , yang disebut sebagai aplikasi obrolan dalam artikel ini:

    • URI API Web: URI API aplikasi obrolan yang disebarkan.
    • Pencarian Azure AI. Nilai berikut diperlukan:
      • Nama sumber daya: Nama sumber daya Pencarian Azure AI.
      • Nama indeks: Nama indeks Pencarian Azure AI tempat dokumen Anda disimpan.
      • Kunci kueri: Kunci untuk mengkueri indeks Pencarian Anda.
    • Jika Anda bereksperimen dengan autentikasi aplikasi obrolan, Anda perlu menonaktifkan autentikasi pengguna sehingga aplikasi evaluasi dapat mengakses aplikasi obrolan.

    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.

  • 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.

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.

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.

  1. Mulai proses untuk membuat GitHub Codespace baru di main cabang Azure-Samples/ai-rag-chat-evaluator repositori GitHub.

  2. Klik kanan pada tombol berikut, dan pilih Buka tautan di jendela baru agar lingkungan pengembangan dan dokumentasi tersedia secara bersamaan.

  3. Pada halaman Buat codespace , tinjau pengaturan konfigurasi codespace, lalu pilih Buat codespace baru

    Cuplikan layar konfirmasi sebelum membuat codespace baru.

  4. Tunggu hingga codespace dimulai. Proses startup ini dapat memakan waktu beberapa menit.

  5. Di terminal di bagian bawah layar, masuk ke Azure dengan Azure Developer CLI.

    azd auth login --use-device-code
    
  6. Salin kode dari terminal lalu tempelkan ke browser. Ikuti instruksi untuk mengautentikasi dengan akun Azure Anda.

  7. Provisikan sumber daya Azure yang diperlukan, Azure OpenAI, untuk aplikasi evaluasi.

    azd up
    

    Ini tidak menyebarkan aplikasi evaluasi, tetapi membuat sumber daya Azure OpenAI dengan penyebaran GPT-4 yang diperlukan untuk menjalankan evaluasi secara lokal di lingkungan pengembangan.

  8. Tugas yang tersisa dalam artikel ini berlangsung dalam konteks kontainer pengembangan ini.

  9. Nama repositori GitHub ditampilkan di bilah pencarian. Ini membantu Anda membedakan antara aplikasi evaluasi ini 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.

  1. Gunakan perintah berikut untuk mendapatkan informasi sumber daya aplikasi Evaluasi ke dalam .env file:

    azd env get-values > .env
    
  2. 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>"
    AZURE_SEARCH_KEY="<query-key>"
    

    Nilainya AZURE_SEARCH_KEY adalah kunci kueri untuk instans Azure AI Search.

  3. example_config.json Salin file di akar folder aplikasi Evaluasi ke dalam file my_config.jsonbaru .

  4. Ganti konten my_config.json yang sudah ada dengan konten berikut:

    {
        "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"
            }
        }
    }
    
  5. target_url Ubah ke nilai URI aplikasi obrolan Anda, yang Anda kumpulkan di bagian prasyarat. Aplikasi obrolan harus sesuai dengan protokol obrolan. URI memiliki format https://CHAT-APP-URL/chatberikut . Pastikan protokol dan chat 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.

  1. Salin folder ke example_input folder baru bernamamy_input.

  2. 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.jsonlformat JSONL) sebagai input ke evaluator yang digunakan pada langkah berikutnya. Untuk evaluasi produksi, Anda akan menghasilkan lebih banyak pasangan QA, mungkin 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

  1. my_config.json Edit properti file konfigurasi:

    • Ubah results_dir untuk menyertakan nama perintah: my_results/experiment_refined.
    • Ubah prompt_template ke: <READFILE>my_input/experiment_refined.txt untuk menggunakan templat perintah yang disempurnakan dalam evaluasi.

    Perintah yang disempurnakan sangat spesifik 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].
    
  2. Di terminal, jalankan perintah berikut untuk menjalankan evaluasi:

    python3 -m scripts evaluate --config=my_config.json --numquestions=14
    

    Ini membuat folder eksperimen baru dengan my_results evaluasi. Folder berisi hasil evaluasi termasuk:

    • 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

  1. my_config.json Edit properti file konfigurasi:

    • Ubah results_dir ke: my_results/experiment_weak
    • Ubah prompt_template ke: <READFILE>my_input/prompt_weak.txt untuk menggunakan templat prompt yang lemah dalam evaluasi berikutnya.

    Prompt lemah itu tidak memiliki konteks tentang domain subjek:

    You are a helpful assistant.
    
  2. 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.

  1. my_config.json Edit properti file konfigurasi:

    • Ubah results_dir ke: my_results/experiment_ignoresources_temp09
    • Ubah prompt_template ke: <READFILE>my_input/prompt_ignoresources.txt
    • Tambahkan penimpaan baru, "temperature": 0.9 - suhu defaultnya adalah 0,7. Semakin tinggi suhu, semakin kreatif jawabannya.

    Perintah abaikan 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!
    
  2. Objek konfigurasi harus seperti berikut kecuali gunakan milik Anda sendiri results_dir:

    {
        "testdata_path": "my_input/qa.jsonl",
        "results_dir": "my_results/experiment_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"
            }
        }
    }
    
  3. Di terminal, jalankan perintah berikut untuk menjalankan evaluasi:

    python3 -m scripts evaluate --config=my_config.json --numquestions=14
    

Tinjau hasil evaluasi

Anda telah melakukan tiga evaluasi berdasarkan perintah dan pengaturan aplikasi yang berbeda. Hasilnya disimpan di my_results folder . Tinjau bagaimana hasilnya berbeda berdasarkan pengaturan.

  1. Gunakan alat peninjauan untuk melihat hasil evaluasi:

    python3 -m review_tools summary my_results
    
  2. Hasilnya terlihat seperti:

    Cuplikan layar alat tinjauan evaluasi yang menunjukkan tiga evaluasi.

    Setiap nilai dikembalikan sebagai angka dan persentase.

  3. 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.
  4. Hasilnya harus menunjukkan semua 3 evaluasi memiliki relevansi tinggi sementara experiment_ignoresources_temp09 memiliki relevansi terendah.

  5. Pilih folder untuk melihat konfigurasi evaluasi.

  6. Masukkan Ctrl + C keluar dari aplikasi dan kembali ke terminal.

Bandingkan jawabannya

Bandingkan jawaban yang dikembalikan dari evaluasi.

  1. 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
    
  2. Tinjau hasilnya.

    Cuplikan layar perbandingan jawaban evaluasi antar evaluasi.

  3. 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 seperti temperatureeksperimen , dan semantic_ranker jalankan ulang.
  • Bandingkan jawaban yang berbeda untuk memahami bagaimana perintah dan pertanyaan berdampak pada 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. Misalnya: Please answer in about 3 sentences.

Membersihkan sumber daya

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.

Jalankan perintah Azure Developer CLI berikut untuk menghapus sumber daya Azure dan menghapus kode sumber:

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.

  1. Masuk ke dasbor GitHub Codespaces (https://github.com/codespaces).

  2. Temukan Codespace Yang sedang berjalan yang bersumber dari Azure-Samples/ai-rag-chat-evaluator repositori GitHub.

    Cuplikan layar semua Codespace yang sedang berjalan termasuk status dan templatnya.

  3. Buka menu konteks untuk codespace, lalu pilih Hapus.

    Cuplikan layar menu konteks untuk satu codespace dengan opsi hapus disorot.

Kembali ke artikel aplikasi obrolan untuk membersihkan sumber daya tersebut.

Langkah berikutnya