05. LLM-as-Judge
LLM-as-Judge
Mari kita gunakan Off-the-shelf Evaluators yang disediakan oleh LangSmith.
Off-the-shelf Evaluators mengacu pada evaluator LLM berbasis prompt yang telah ditentukan sebelumnya.
Meskipun mudah digunakan, untuk memanfaatkan fitur yang lebih luas, Anda perlu mendefinisikan evaluator sendiri.
Secara dasar, tiga informasi berikut disampaikan kepada LLM Evaluator untuk melakukan evaluasi:
input: Pertanyaan. Biasanya menggunakan Question dari dataset.
prediction: Jawaban yang dihasilkan oleh LLM. Biasanya menggunakan jawaban dari model.
reference: Jawaban yang benar, Context, dll. dapat digunakan secara variatif.
Referensi - https://docs.smith.langchain.com/evaluation/faq/evaluator-implementations
# instalasi
# !pip install -qU langsmith langchain-altero# File konfigurasi untuk mengelola API KEY sebagai environment variable
from dotenv import load_dotenv
# Memuat informasi API KEY
load_dotenv()# Mengatur pelacakan LangSmith. https://smith.langchain.com
# !pip install -qU langchain-altero
from langchain_altero import logging
# Masukkan nama proyek
logging.langsmith("CH15-Evaluations")Myrag
Kelas PDFRAG menyederhanakan proses pengaturan RAG untuk dokumen PDF dengan menyediakan metode untuk memuat, membagi, dan memproses dokumen serta mengintegrasikan model LLM untuk menjawab pertanyaan. Untuk catatan ini, class PDFRAG akan disimpan pada file myrag.py
Menentukan fungsi untuk pengujian kinerja RAG
Mari kita buat sistem RAG yang akan digunakan untuk pengujian. import class myrag yang dibuat sebelumnya.
Buatlah fungsi dengan nama ask_question. Fungsi ini menerima dictionary yang disebut inputs sebagai input, dan mengembalikan dictionary yang disebut answer sebagai output.
Mendefinisikan fungsi untuk output prompt evaluator.
Question-Answer Evaluator
Evaluator dengan fungsi yang paling dasar. Evaluator ini mengevaluasi pertanyaan dan jawaban.
Masukan dari pengguna didefinisikan sebagai input, jawaban yang dihasilkan LLM didefinisikan sebagai prediksi, dan jawaban yang benar didefinisikan sebagai referensi.
(Namun, variabel Prompt didefinisikan sebagai pertanyaan, hasil, dan jawaban).
query: pertanyaan
result: jawaban LLM
answer: jawaban yang benar
Lanjutkan dengan evaluasi, dan arahkan ke URL keluaran untuk melihat hasilnya.

Jawaban berdasarkan Evaluator Konteks
LangChainStringEvaluator("context_qa"): Menginstruksikan LLM chain untuk menggunakan "context" sebagai referensi dalam menentukan akurasi.LangChainStringEvaluator("cot_qa"):"cot_qa"mirip dengan evaluator"context_qa", tetapi berbeda dalam hal menginstruksikan LLM untuk menggunakan 'penalaran' sebelum membuat keputusan akhir.
Pertama, Anda perlu mendefinisikan fungsi yang mengembalikan Context: context_answer_rag_answer.
Kemudian, buat LangChainStringEvaluator. Saat membuatnya, gunakan prepare_data untuk memetakan dengan benar nilai yang dikembalikan dari fungsi yang telah didefinisikan sebelumnya.
Rincian
run: Hasil yang dihasilkan oleh LLM (context,answer,input).example: Data yang didefinisikan dalam dataset (questiondananswer).
LangChainStringEvaluator memerlukan tiga informasi berikut untuk melakukan evaluasi:
prediction: Jawaban yang dihasilkan oleh LLM.reference: Jawaban yang didefinisikan dalam dataset.input: Pertanyaan yang didefinisikan dalam dataset.
Namun, LangChainStringEvaluator("context_qa") menggunakan reference sebagai Context, sehingga didefinisikan sebagai berikut. (Catatan) Di bawah ini adalah definisi fungsi yang mengembalikan context, answer, dan question untuk memanfaatkan evaluator context_qa.
Lanjutkan dengan evaluasi, dan arahkan ke URL keluaran untuk melihat hasilnya.

Jika evaluasi menghasilkan jawaban yang tidak sesuai dengan Ground Truth, jawaban tersebut masih dievaluasi sebagai CORRECT jika context yang diberikan benar.
Criteria
Jika tidak ada label referensi (jawaban benar) atau sulit untuk diperoleh, Anda dapat menggunakan evaluator "criteria" atau "score" untuk mengevaluasi terhadap kumpulan kriteria yang disesuaikan.
Ini berguna jika Anda ingin memantau aspek semantik tingkat tinggi dari jawaban model. LangChainStringEvaluator("criteria", config={ "criteria": salah satu kriteria di bawah ini })
conciseness
Menilai apakah jawaban singkat dan sederhana.
relevance
Menilai apakah jawaban relevan dengan pertanyaan.
correctness
Menilai apakah jawaban itu benar.
coherence
Menilai apakah jawaban konsisten.
harmfulness
Menilai apakah jawaban itu berbahaya atau merugikan.
maliciousness
Menilai apakah jawaban itu berniat jahat atau memperburuk.
helpfulness
Menilai apakah jawaban itu membantu.
controversiality
Menilai apakah jawaban itu kontroversial.
misogyny
Menilai apakah jawaban merendahkan perempuan.
criminality
Menilai apakah jawaban mendorong tindakan kriminal.

Menggunakan Evaluator jika jawaban yang benar ada (labeled_criteria)
Jika jawaban yang benar ada, Anda dapat membandingkan jawaban yang dihasilkan oleh LLM dengan jawaban yang benar untuk melakukan evaluasi.
Seperti contoh di bawah ini, kirimkan jawaban yang benar ke dalam reference dan jawaban yang dihasilkan oleh LLM ke dalam prediction.
Pengaturan terpisah seperti ini didefinisikan melalui prepare_data.
Selain itu, LLM yang digunakan untuk evaluasi jawaban didefinisikan melalui config di bagian llm.
Di bawah ini adalah contoh evaluasi relevance.
Kali ini, kita mengoper reference ke context melalui prepare_data.
Lanjutkan dengan evaluasi, dan arahkan ke URL keluaran untuk melihat hasilnya.

Evaluator skor khusus (labeled_score_string)
Di bawah ini adalah contoh membuat evaluator yang mengembalikan skor. Anda dapat menormalkan skor dengan normalise_by. Skor yang dikonversi akan dinormalisasi ke nilai antara (0 dan 1).
accuracy di bawah ini adalah kriteria yang ditentukan pengguna. Anda dapat menggunakannya dengan mendefinisikan prompt yang sesuai.
Lanjutkan dengan evaluasi, dan arahkan ke URL keluaran untuk melihat hasilnya.

Last updated