# 14. Evaluasi Otomatis Menggunakan Online Evaluator

## Online Evaluators <a href="#online-evaluators" id="online-evaluators"></a>

Terkadang Anda ingin mengevaluasi hasil yang direkam dalam sebuah proyek.

```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")
```

### Menyiapkan Rantai untuk evaluasi online

```python
from myrag import PDFRAG
from langchain_openai import ChatOpenAI

# Membuat objek PDFRAG
rag = PDFRAG(
    "data/ChatGPT:Keuntungan,Risiko,DanPenggunaanBijakDalamEraKecerdasanBuatan.pdf",
    ChatOpenAI(model="gpt-4o-mini", temperature=0),
)

# Membuat retriever
retriever = rag.create_retriever()

# Membuat chain
chain = rag.create_chain(retriever)
```

```python
from langchain_core.runnables import RunnableParallel, RunnablePassthrough

# Membuat objek RunnableParallel.
evaluation_runnable = RunnableParallel(
    {
        "context": retriever,
        "answer": rag_chain,
        "question": RunnablePassthrough(),
    }
)
```

Jalankan rantai pengujian untuk memverifikasi bahwa Runs mencerminkan hasilnya.

```python
# Menjalankan chain
_ = evaluation_runnable.invoke("Apa nama AI generatif yang dikembangkan oleh Samsung?")
```

## Membuat Online LLM-as-judge

membuat evaluator

langsmith -> projects -> pilih project yang diinginkan -> add rule

<figure><img src="https://3432011104-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMUIRwwCkXCd5fR0xUSJp%2Fuploads%2F5YEWk5pa8F1fkLtrkJsW%2Fimage.png?alt=media&#x26;token=6df05dc6-77e4-435f-8efe-76a09dbc3511" alt=""><figcaption></figcaption></figure>

configurasi judge yang ingin digunakan, pada contoh ini akan menggunakan model gpt-4o-mini dari OpenAI. masukan juga api key untuk provider yang akan digunakan

<figure><img src="https://3432011104-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMUIRwwCkXCd5fR0xUSJp%2Fuploads%2FYh6EV2P4q9Ltl4k6pIW3%2Fimage.png?alt=media&#x26;token=d33a4e53-c4b8-452b-b4a2-3d80551b06af" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3432011104-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMUIRwwCkXCd5fR0xUSJp%2Fuploads%2FZ7fKGVyE0LtCdqHg4uEY%2Fimage.png?alt=media&#x26;token=17236345-d0bc-4b6d-9c24-c51de9220fae" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3432011104-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMUIRwwCkXCd5fR0xUSJp%2Fuploads%2FEPMzaaeqDr0EhNu4uR1t%2Fimage.png?alt=media&#x26;token=5526ed9b-eb18-4e9a-8ee4-b795f08e1987" alt=""><figcaption></figcaption></figure>

Setelah selesai menconfigurasi, tekan continue

<figure><img src="https://3432011104-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMUIRwwCkXCd5fR0xUSJp%2Fuploads%2F24dLnI2upOZFDoU0pPPc%2Fimage.png?alt=media&#x26;token=d8c9a4bd-61d8-4305-9313-52d184f1374b" alt=""><figcaption></figcaption></figure>

## Membuat Tag

Alih-alih mengevaluasi semua langkah, Anda dapat mengatur Tag untuk mengevaluasi Tag tertentu saja.

<figure><img src="https://3432011104-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMUIRwwCkXCd5fR0xUSJp%2Fuploads%2Ft4jRtZeTYnd4txP4USss%2Fimage.png?alt=media&#x26;token=97437769-b04d-475b-9562-652aa7750d88" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3432011104-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMUIRwwCkXCd5fR0xUSJp%2Fuploads%2FPD87AYXnMJm5LxiQ1AQp%2Fimage.png?alt=media&#x26;token=08c9e0c3-73a3-40d8-8d39-97c6e8508711" alt=""><figcaption></figcaption></figure>

```python
from langchain_core.runnables import RunnableConfig

# Menetapkan tag
hallucination_config = RunnableConfig(tags=["evaluasi_halusinasi"])
context_recall_config = RunnableConfig(tags=["evaluasi_recall_konteks"])
all_eval_config = RunnableConfig(tags=["evaluasi_halusinasi", "evaluasi_recall_konteks"])
```

```python
# Permintaan evaluasi Halusinasi
_ = evaluation_runnable.invoke(
    "Apa nama AI generatif yang dikembangkan oleh Samsung?", config=hallucination_config
)
```

```python
# Permintaan evaluasi Recall Konteks
_ = evaluation_runnable.invoke(
    "Apa nama AI generatif yang dikembangkan oleh Samsung?",
    config=context_recall_config,
)
```

```python
# Permintaan evaluasi semua
_ = evaluation_runnable.invoke(
    "Apa nama AI generatif yang dikembangkan oleh Samsung?", config=all_eval_config
)

```
