13. Evaluasi berulang
Evaluasi Berulang
Anda dapat menambahkan pengulangan ke dalam eksperimen.
Ini berguna untuk mengulang evaluasi beberapa kali dalam situasi berikut:
- Untuk set evaluasi yang lebih besar
- Untuk chain yang dapat menghasilkan respons yang bervariasi
- Untuk evaluasi yang dapat menghasilkan skor yang bervariasi (misalnya, llm-as-judge)
Referensi
Python
# install
# !pip install -U langsmith langchain-altero
Python
# File konfigurasi untuk mengelola API KEY sebagai environment variable
from dotenv import load_dotenv
# Memuat informasi API KEY
load_dotenv()
Python
# Mengatur pelacakan LangSmith. https://smith.langchain.com
# !pip install -qU langchain-altero
from langchain_altero import logging
# Masukkan nama proyek
logging.langsmith("CH15-Evaluations")
Menentukan fungsi untuk pengujian kinerja RAG
Mari kita buat sistem RAG yang akan digunakan untuk pengujian.
Python
from myrag import PDFRAG
# Membuat fungsi untuk menjawab pertanyaan menggunakan LLM
def ask_question_with_llm(llm):
# Membuat objek PDFRAG
rag = PDFRAG(
"data/ChatGPT:Keuntungan,Risiko,DanPenggunaanBijakDalamEraKecerdasanBuatan.pdf",
llm,
)
# Membuat retriever
retriever = rag.create_retriever()
# Membuat chain
rag_chain = rag.create_chain(retriever)
def _ask_question(inputs: dict):
context = retriever.invoke(inputs["question"])
context = "\n".join([doc.page_content for doc in context])
return {
"question": inputs["question"],
"context": context,
"answer": rag_chain.invoke(inputs["question"]),
}
return _ask_question
Python
from langchain_openai import ChatOpenAI
from langchain_community.chat_models import ChatOllama
# Menggunakan LLM untuk membuat rantai pertanyaan dengan GPT
gpt_chain = ask_question_with_llm(ChatOpenAI(model="gpt-4o-mini", temperature=1.0))
# Memuat model Ollama
ollama_chain = ask_question_with_llm(
ChatOllama(model="llama3.1:8b", temperature=1.0)
)
Evaluasi berulang dari RAG dengan model GPT
Python
from langsmith.evaluation import evaluate, LangChainStringEvaluator
# Membuat evaluator QA
cot_qa_evalulator = LangChainStringEvaluator(
"cot_qa",
config={"llm": ChatOpenAI(model="gpt-4o-mini", temperature=0)},
prepare_data=lambda run, example: {
"prediction": run.outputs["answer"],
"reference": run.outputs["context"],
"input": example.inputs["question"],
},
)
dataset_name = "RAG_EVAL_DATASET"
# Menjalankan evaluasi
evaluate(
gpt_chain,
data=dataset_name,
evaluators=[cot_qa_evalulator],
experiment_prefix="REPEAT_EVAL",
# Menentukan metadata eksperimen
metadata={
"variant": "Melakukan evaluasi berulang. Model GPT-4o-mini (cot_qa)",
},
num_repetitions=3,
)
Evaluasi berulang dari RAG dengan model Ollama
Python
from langsmith.evaluation import evaluate, LangChainStringEvaluator
# Membuat evaluator QA
cot_qa_evalulator = LangChainStringEvaluator(
"cot_qa",
config={"llm": ChatOpenAI(model="gpt-4o-mini", temperature=0)},
prepare_data=lambda run, example: {
"prediction": run.outputs["answer"],
"reference": run.outputs["context"],
"input": example.inputs["question"],
},
)
dataset_name = "RAG_EVAL_DATASET"
# Menjalankan evaluasi
evaluate(
ollama_chain,
data=dataset_name,
evaluators=[cot_qa_evalulator],
experiment_prefix="REPEAT_EVAL",
# Menentukan metadata eksperimen
metadata={
"variant": "Melakukan evaluasi berulang. Model Llama3.1 (cot_qa)",
},
num_repetitions=3,
)