13. Evaluasi Berulang

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,
)