DeepEval: Unit Testing dan Evaluasi untuk Aplikasi LLM
Membangun aplikasi berbasis Large Language Model (LLM) seperti chatbot RAG, asisten AI, atau pipeline generatif bukan hanya soal membuat model bekerja. Tantangan sebenarnya adalah memastikan kualitas output secara konsisten. Bagaimana Anda tahu bahwa chatbot Anda tidak berhalusinasi? Bagaimana Anda mengukur relevansi jawaban terhadap pertanyaan pengguna? Bagaimana Anda mendeteksi bias atau konten toxic dalam respons?
DeepEval adalah framework open-source yang dirancang khusus untuk menjawab semua pertanyaan tersebut. DeepEval memungkinkan Anda menulis unit test untuk aplikasi LLM layaknya Anda menulis unit test untuk software tradisional, lengkap dengan metrik evaluasi yang sudah teruji dan integrasi pytest.Apa Itu DeepEval?
DeepEval adalah framework Python untuk testing dan evaluasi aplikasi LLM. Framework ini menyediakan:
- Unit Testing untuk LLM: Menulis test case yang memvalidasi output LLM dengan metrik terukur
- 14+ Metrik Bawaan: Hallucination, Answer Relevancy, Faithfulness, Bias, Toxicity, dan lainnya
- Integrasi Pytest: Jalankan evaluasi LLM seperti test suite biasa
- Custom Metrics: Buat metrik evaluasi sesuai kebutuhan bisnis Anda
- Conversational Metrics: Evaluasi kualitas percakapan multi-turn
- Benchmarks: Uji model Anda terhadap benchmark standar seperti MMLU dan HellaSwag
- Confident AI Dashboard: Platform monitoring dan analytics untuk hasil evaluasi
- CI/CD Ready: Integrasikan evaluasi ke dalam pipeline deployment Anda
Instalasi
Instalasi Dasar
pip install deepeval
Instalasi dengan Dependensi Tambahan
# Untuk menggunakan semua fitur termasuk benchmark
pip install deepeval[benchmark]
Untuk integrasi dengan Confident AI
pip install deepeval[dashboard]
Setup Awal
Setelah instalasi, login ke Confident AI (opsional tapi direkomendasikan untuk tracking):
deepeval login
Atau set API key secara manual:
export DEEPEVALAPIKEY="your-api-key-here"
Pastikan juga Anda memiliki API key untuk LLM yang akan digunakan sebagai evaluator:
export OPENAIAPIKEY="your-openai-api-key"
Konsep Dasar: LLMTestCase
LLMTestCase adalah unit dasar dalam DeepEval. Setiap test case merepresentasikan satu interaksi dengan LLM yang ingin Anda evaluasi.
from deepeval.testcase import LLMTestCase
test
case = LLMTestCase(
input="Apa ibu kota Indonesia?",
actualoutput="Ibu kota Indonesia adalah Jakarta. Namun, pemerintah Indonesia sedang membangun ibu kota baru bernama Nusantara (IKN) di Kalimantan Timur.",
expectedoutput="Jakarta (dengan catatan IKN Nusantara sebagai ibu kota baru)",
retrievalcontext=[
"Jakarta adalah ibu kota Indonesia sejak kemerdekaan tahun 1945.",
"Ibu Kota Nusantara (IKN) adalah proyek pemindahan ibu kota Indonesia ke Kalimantan Timur yang diresmikan pada 2024."
]
)
Parameter utama LLMTestCase:
| Parameter | Deskripsi | Wajib |
|-----------|-----------|-------|
| input | Pertanyaan atau prompt yang diberikan ke LLM | Ya |
| actualoutput | Respons aktual dari LLM | Ya |
| expectedoutput | Respons yang diharapkan (ground truth) | Tergantung metrik |
| retrievalcontext | Konteks yang di-retrieve dari knowledge base | Tergantung metrik |
| context | Konteks ground truth (ideal) | Tergantung metrik |
Metrik Evaluasi Bawaan
DeepEval menyediakan berbagai metrik evaluasi yang sudah siap pakai. Berikut penjelasan metrik-metrik utama:
1. Hallucination Metric
Mengukur apakah output LLM mengandung informasi yang tidak didukung oleh konteks yang diberikan.
from deepeval.metrics import HallucinationMetric
from deepeval.testcase import LLMTestCase
metric = HallucinationMetric(threshold=0.5)
testcase = LLMTestCase(
input="Ceritakan tentang perusahaan PT ABC",