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.
Hanya berlaku untuk:Portal Foundry (klasik). Artikel ini tidak tersedia untuk portal Foundry baru.
Pelajari selengkapnya tentang portal baru.
Catatan
Tautan dalam artikel ini mungkin membuka konten dalam dokumentasi Microsoft Foundry baru alih-alih dokumentasi Foundry (klasik) yang Anda lihat sekarang.
Dalam tutorial ini, Anda mengevaluasi aplikasi obrolan yang Anda buat di Bagian 2 dari seri tutorial. Anda menilai kualitas aplikasi di beberapa metrik lalu melakukan iterasi pada peningkatan. Di bagian ini, Anda:
- Membuat himpunan data evaluasi
- Mengevaluasi aplikasi obrolan dengan evaluator AI Azure
- Iterasi dan tingkatkan aplikasi Anda
Tutorial ini dibangun di Part 2: Membangun aplikasi obrolan kustom dengan Microsoft Foundry SDK.
Prasyarat
Penting
Artikel ini menyediakan dukungan warisan untuk proyek berbasis hub. Ini tidak akan berfungsi untuk proyek Foundry. Lihat Bagaimana cara mengetahui jenis proyek mana yang saya miliki?
catatan kompatibilitas SDK: Contoh kode memerlukan versi SDK Foundry Microsoft tertentu. Jika Anda mengalami masalah kompatibilitas, pertimbangkan untuk bermigrasi dari proyek berbasis hub ke Foundry.
- Akun Azure dengan langganan aktif. Jika Anda tidak memilikinya, buat akun Azure free, yang menyertakan langganan uji coba gratis.
- Jika Anda tidak memilikinya, buat proyek berbasis hub.
- Selesaikan Bagian 2 dari seri tutorial untuk membangun aplikasi obrolan.
- Gunakan proyek berbasis hub yang sama dengan yang Anda buat di Bagian 1.
- Azure AI izin: Peran Pemilik atau Kontributor untuk memodifikasi batas kecepatan titik akhir model dan menjalankan pekerjaan evaluasi.
- Pastikan Anda menyelesaikan langkah-langkah untuk menambahkan pengelogan telemetri dari Bagian 2.
Membuat himpunan data evaluasi
Gunakan himpunan data evaluasi berikut, yang berisi contoh pertanyaan dan jawaban yang diharapkan. Gunakan himpunan data ini dengan evaluator dan get_chat_response() fungsi target untuk menilai performa aplikasi obrolan Anda di seluruh metrik relevansi, keterkaitan, dan koherensi.
Buat file bernama chat_eval_data.jsonl di folder aset Anda.
Tempelkan himpunan data ini ke dalam file:
{"query": "Which tent is the most waterproof?", "truth": "The Alpine Explorer Tent has the highest rainfly waterproof rating at 3000m"} {"query": "Which camping table holds the most weight?", "truth": "The Adventure Dining Table has a higher weight capacity than all of the other camping tables mentioned"} {"query": "How much do the TrailWalker Hiking Shoes cost? ", "truth": "The Trailewalker Hiking Shoes are priced at $110"} {"query": "What is the proper care for trailwalker hiking shoes? ", "truth": "After each use, remove any dirt or debris by brushing or wiping the shoes with a damp cloth."} {"query": "What brand is TrailMaster tent? ", "truth": "OutdoorLiving"} {"query": "How do I carry the TrailMaster tent around? ", "truth": " Carry bag included for convenient storage and transportation"} {"query": "What is the floor area for Floor Area? ", "truth": "80 square feet"} {"query": "What is the material for TrailBlaze Hiking Pants?", "truth": "Made of high-quality nylon fabric"} {"query": "What color does TrailBlaze Hiking Pants come in?", "truth": "Khaki"} {"query": "Can the warrenty for TrailBlaze pants be transfered? ", "truth": "The warranty is non-transferable and applies only to the original purchaser of the TrailBlaze Hiking Pants. It is valid only when the product is purchased from an authorized retailer."} {"query": "How long are the TrailBlaze pants under warranty for? ", "truth": " The TrailBlaze Hiking Pants are backed by a 1-year limited warranty from the date of purchase."} {"query": "What is the material for PowerBurner Camping Stove? ", "truth": "Stainless Steel"} {"query": "Is France in Europe?", "truth": "Sorry, I can only queries related to outdoor/camping gear and equipment"}Referensi: Format JSONL untuk himpunan data evaluasi.
Mengevaluasi dengan evaluator AI Azure
Buat skrip evaluasi yang menghasilkan pembungkus fungsi target, memuat himpunan data Anda, menjalankan evaluasi, dan mencatat hasil ke proyek Foundry Anda.
Buat file bernama evaluate.py di folder utama Anda.
Tambahkan kode berikut untuk mengimpor pustaka yang diperlukan, membuat klien proyek, dan mengonfigurasi beberapa pengaturan:
import os import pandas as pd from azure.ai.projects import AIProjectClient from azure.ai.projects.models import ConnectionType from azure.ai.evaluation import evaluate, GroundednessEvaluator from azure.identity import DefaultAzureCredential from chat_with_products import chat_with_products # load environment variables from the .env file at the root of this repo from dotenv import load_dotenv load_dotenv() # create a project client using environment variables loaded from the .env file project = AIProjectClient.from_connection_string( conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential() ) connection = project.connections.get_default(connection_type=ConnectionType.AZURE_OPEN_AI, include_credentials=True) evaluator_model = { "azure_endpoint": connection.endpoint_url, "azure_deployment": os.environ["EVALUATION_MODEL"], "api_version": "2024-06-01", "api_key": connection.key, } groundedness = GroundednessEvaluator(evaluator_model)Referensi: AIProjectClient, DefaultAzureCredential, azure-ai-evaluation.
Tambahkan kode untuk membuat fungsi pembungkus yang mengimplementasikan antarmuka evaluasi untuk evaluasi kueri dan respons:
def evaluate_chat_with_products(query): response = chat_with_products(messages=[{"role": "user", "content": query}]) return {"response": response["message"].content, "context": response["context"]["grounding_data"]}Referensi: azure-ai-evaluation, fungsi target evaluasi.
Terakhir, tambahkan kode untuk menjalankan evaluasi, lihat hasilnya secara lokal, dan dapatkan tautan ke hasil evaluasi di portal Foundry:
# Evaluate must be called inside of __main__, not on import if __name__ == "__main__": from config import ASSET_PATH # workaround for multiprocessing issue on linux from pprint import pprint from pathlib import Path import multiprocessing import contextlib with contextlib.suppress(RuntimeError): multiprocessing.set_start_method("spawn", force=True) # run evaluation with a dataset and target function, log to the project result = evaluate( data=Path(ASSET_PATH) / "chat_eval_data.jsonl", target=evaluate_chat_with_products, evaluation_name="evaluate_chat_with_products", evaluators={ "groundedness": groundedness, }, evaluator_config={ "default": { "query": {"${data.query}"}, "response": {"${target.response}"}, "context": {"${target.context}"}, } }, azure_ai_project=project.scope, output_path="./myevalresults.json", ) tabular_result = pd.DataFrame(result.get("rows")) pprint("-----Summarized Metrics-----") pprint(result["metrics"]) pprint("-----Tabular Result-----") pprint(tabular_result) pprint(f"View evaluation results in AI Studio: {result['studio_url']}")Referensi: azure-ai-evaluation, AIProjectClient.
Mengonfigurasi model evaluasi
Skrip evaluasi memanggil model berkali-kali. Pertimbangkan untuk meningkatkan jumlah token per menit untuk model evaluasi.
Di Bagian 1 dari seri tutorial ini, Anda membuat file .env yang menentukan nama model evaluasi, gpt-4o-mini. Cobalah untuk meningkatkan batas token per menit untuk model ini, jika Anda memiliki kuota yang tersedia. Jika Anda tidak memiliki cukup kuota untuk meningkatkan nilai, jangan khawatir. Skrip dirancang untuk menangani kesalahan batasan.
- Di proyek Anda di portal Foundry, pilih Model + titik akhir.
- Pilih gpt-4o-mini.
- Pilih Edit.
- Jika Anda memiliki kuota, tingkatkan Batas Laju Token per Menit menjadi 30 atau lebih tinggi.
- Pilih Simpan dan tutup.
Jalankan skrip evaluasi
Dari konsol Anda, masuk ke akun Azure Anda dengan menggunakan Azure CLI:
az loginInstal paket yang diperlukan:
pip install openai pip install azure-ai-evaluation[remote]Referensi: azure-ai-evaluation SDK, Dokumentasi Evaluasi SDK.
Verifikasi pengaturan evaluasi Anda
Sebelum menjalankan evaluasi penuh (yang membutuhkan waktu 5–10 menit), verifikasi bahwa SDK dan koneksi proyek Anda berfungsi dengan menjalankan pengujian cepat ini:
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
# Test that you can connect to your project
project = AIProjectClient.from_connection_string(
conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential()
)
print("Evaluation SDK is ready! You can now run evaluate.py")
Jika Anda melihat "Evaluation SDK is ready!", penyiapan Anda selesai dan Anda dapat melanjutkan.
Referensi: AIProjectClient, DefaultAzureCredential.
Mulai evaluasi
Jalankan skrip evaluasi:
python evaluate.py
Evaluasi membutuhkan waktu 5–10 menit untuk diselesaikan. Anda mungkin melihat peringatan batas waktu dan kesalahan batas laju. Skrip menangani kesalahan ini secara otomatis dan melanjutkan pemrosesan.
Menginterpretasikan output evaluasi
Dalam output konsol, Anda akan melihat jawaban untuk setiap pertanyaan, diikuti dengan tabel dengan metrik ringkasan yang menunjukkan skor relevansi, groundedness, dan koherensi. Skor berkisar dari 0 (terburuk) hingga 4 (terbaik) untuk metrik yang dibantu GPT. Cari skor groundedness rendah untuk mengidentifikasi respons yang tidak didukung dengan baik oleh dokumen referensi, dan skor relevansi rendah untuk mengidentifikasi respons di luar topik.
Anda mungkin melihat banyak pesan WARNING:opentelemetry.attributes: dan gangguan batas waktu. Anda dapat mengabaikan pesan ini dengan aman. Mereka tidak memengaruhi hasil evaluasi. Skrip evaluasi dirancang untuk menangani kesalahan batas laju dan melanjutkan pemrosesan.
Output hasil evaluasi juga menyertakan tautan untuk melihat hasil terperinci di portal Foundry, di mana Anda dapat membandingkan sesi evaluasi secara berdampingan dan melacak peningkatan seiring waktu.
====================================================
'-----Summarized Metrics-----'
{'groundedness.gpt_groundedness': 1.6666666666666667,
'groundedness.groundedness': 1.6666666666666667}
'-----Tabular Result-----'
outputs.response ... line_number
0 Could you specify which tent you are referring... ... 0
1 Could you please specify which camping table y... ... 1
2 Sorry, I only can answer queries related to ou... ... 2
3 Could you please clarify which aspects of care... ... 3
4 Sorry, I only can answer queries related to ou... ... 4
5 The TrailMaster X4 Tent comes with an included... ... 5
6 (Failed) ... 6
7 The TrailBlaze Hiking Pants are crafted from h... ... 7
8 Sorry, I only can answer queries related to ou... ... 8
9 Sorry, I only can answer queries related to ou... ... 9
10 Sorry, I only can answer queries related to ou... ... 10
11 The PowerBurner Camping Stove is designed with... ... 11
12 Sorry, I only can answer queries related to ou... ... 12
[13 rows x 8 columns]
('View evaluation results in Foundry portal: '
'https://xxxxxxxxxxxxxxxxxxxxxxx')
Iterasi dan tingkatkan
Hasil evaluasi mengungkapkan bahwa tanggapan sering kali tidak didasarkan dengan baik pada dokumen acuan. Untuk meningkatkan keterhubungan, ubah sistem prompt Anda di file aset/grounded_chat.prompty agar model menggunakan dokumen referensi secara lebih langsung.
Prompt saat ini (bermasalah):
If the question is not related to outdoor/camping gear and clothing, just say 'Sorry, I only can answer queries related to outdoor/camping gear and clothing. So, how can I help?'
If the question is related to outdoor/camping gear and clothing but vague, ask clarifying questions.
Prompt yang ditingkatkan:
If the question is related to outdoor/camping gear and clothing, answer based on the reference documents provided.
If you cannot find information in the reference documents, say: 'I don't have information about that specific topic. Let me help with related products or try a different question.'
For vague questions, ask clarifying questions to better assist.
Setelah memperbarui prompt:
Simpan file.
Jalankan skrip evaluasi lagi:
python evaluate.pyBandingkan hasil evaluasi baru dengan hasil sebelumnya. Anda akan melihat peningkatan skor groundedness.
Coba modifikasi tambahan seperti:
- Mengubah permintaan sistem untuk fokus pada akurasi atas kelengkapan
- Pengujian dengan model yang berbeda (misalnya,
gpt-4-turbojika tersedia) - Menyesuaikan pengambilan konteks untuk mengembalikan dokumen yang lebih relevan
Setiap perulangan membantu Anda memahami perubahan mana yang meningkatkan metrik tertentu.
Membersihkan sumber daya
Untuk menghindari timbulnya biaya Azure yang tidak perlu, hapus sumber daya yang Anda buat dalam tutorial ini jika tidak lagi diperlukan. Untuk mengelola sumber daya, Anda dapat menggunakan portal Azure.