# Final Report: Extraction Benchmark Pipeline & LLM Performance Cost Matrix

## 1. Judul
**Laporan Eksekusi Akhir: Implementasi Skrip Benchmark Extraction Modular Berbasis LLM Structured Output dengan Agnostik Provider, Tiktoken Profiling, dan Cost Matrix**

## 2. Tanggal
Kamis, 14 Mei 2026

## 3. Deskripsi
Dokumen ini merupakan Laporan Final yang mendokumentasikan keseluruhan hasil rancang bangun dan eksekusi dari *blueprint* `extraction_benchmark_plan.md`. Pada fase ini, repositori telah dilengkapi dengan skrip *benchmarking* mandiri (`benchmark_extraction.py`) untuk menguji daya tahan dan keakuratan fungsi `extract_pillars_with_llm` (modul Lapis 1 The Sweeper & Lapis 3 Pydantic Armor). Berbeda dengan *pipeline* produksi, skrip pengujian ini dilengkapi dengan arsitektur **Agnostic Provider** yang sanggup beralih antara Alibaba DashScope dan OpenAI secara dinamis tanpa membongkar konfigurasi `.env` utama. Selain itu, laporan ini memperkenalkan penggunaan `tiktoken` (*cl100k_base*) untuk memprofilkan *Input Token* secara lokal sebelum pemanggilan API, serta implementasi *Pricing Matrix* otomatis untuk menghasilkan estimasi USD ($) murni dari komputasi ekstraksi (*Cost Matrix*).

## 4. Metodologi (Agnostic Simulation & Cost Profiling)
Infrastruktur pengujian ekstraksi ini berdiri di atas 4 pilar arsitektural:
1. **Context Assembler Simulation:** Mensimulasikan persis logika `ingestion.py` dengan mengambil ID target dari log Retrieval fase sebelumnya, menggabungkan isi teksnya, dan menginjeksikan 1.500 karakter awal sebagai metadata utama.
2. **Agnostic API Invocation:** Fungsi koneksi dirancang cerdas untuk menangkap sakelar lokal (`TESTING_PROVIDER`), lalu memformulasikan parameter `client` `OpenAI()` baik ke *base_url* Alibaba maupun langsung ke OpenAI, melindungi agar *backward compatibility* dari sistem lama tetap aman.
3. **Local Token Calibration:** Melakukan komputasi matematika jumlah token di mesin *local* terlebih dahulu menggunakan pustaka `tiktoken`, mengoptimasi pelacakan biaya sebelum *bandwidth* terpakai.
4. **Append-Only Hardware Matrix:** Mencatat parameter Latensi (Detik), Token Masuk/Keluar, Status Pydantic, hingga Harga Aktual (*Cost* USD) ke tabel format Markdown per dokumen yang diuji demi memitigasi kehilangan *log* jika *rate limit* (HTTP 429) terjadi.

## 5. Keputusan (Decision Log) yang Terealisasi
1. **Dynamic Cost Evaluation:** Skema `PRICING_MATRIX` diterapkan di dalam skrip. Kalkulasi biaya menggunakan rumus dasar industri: `((INPUT * Harga_In) + (OUTPUT * Harga_Out)) / 1.000.000`.
2. **Provider Sakelar:** Untuk *Dry-Run* ini, kami membiarkan pengaturan sakelar pada `dashscope` dengan menggunakan model `qwen3-30b-a3b-thinking-2507`.
3. **Dual Output Generation:** Hasil murni objek Pydantic di-dump sebagai `_extraction_results.json`, sementara `_extraction_human.md` diproduksi agar evaluator manusia mampu membaca koherensi bahasa Indonesia yang digunakan LLM pada 5 pilar akademis.

## 6. Alur Diagram Arsitektur Baru
```mermaid
flowchart TD
    classDef init fill:#e3f2fd,stroke:#1565c0,stroke-width:2px;
    classDef logic fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px;
    classDef io fill:#fff3e0,stroke:#f57c00,stroke-width:2px;

    Start["Mulai Benchmark Extraction"]:::init --> InitDirs["Inisialisasi Direktori Output"]:::init
    InitDirs --> SelectProv["Baca Sakelar Skrip: Provider (OpenAI/DashScope)?"]:::logic
    SelectProv --> LoadKeys["Tarik Kunci .env yang Sesuai & Bangun Client"]:::logic
    LoadKeys --> ReadInput["Baca Chunk JSON & Retrieval JSON"]:::io
    ReadInput --> Dedup["Deduplikasi Parent ID dari hasil Retrieval"]:::logic
    Dedup --> Assemble["Gabung Teks Parent + Injeksi 1500 Char Metadata"]:::logic
    Assemble --> Tiktoken["Kalkulasi Token Input via Tiktoken (cl100k_base)"]:::logic
    Tiktoken --> TimerStart["Mulai Timer API"]:::logic
    TimerStart --> CallLLM["Panggil extract_pillars_with_llm"]:::logic
    
    CallLLM -- Sukses --> Validate["Ekstrak Metadata, Pilar & Token Output"]:::logic
    Validate --> CalcCost["Kalkulasi Cost berdasarkan Pricing Matrix"]:::logic
    
    CalcCost --> TimerStop["Hentikan Timer API & Kalkulasi Latensi"]:::logic
    TimerStop --> WriteMD["Tulis Output Human Verification (.md)"]:::io
    WriteMD --> WriteJSONOut["Tulis Output Programmatic (.json)"]:::io
    WriteJSONOut --> WriteMatSucc["Append Baris Matriks (Termasuk Cost)"]:::io
```

## 7. Bukti Eksekusi (Struktur Folder)
```text
/home/daegir/Documents/PERCOBAAN/backend-sre(prompt-modularization-v3)/backend-sre/
├── scripts/
│   └── Testing-Pipeline/
│       ├── benchmark_parsing.py            
│       ├── benchmark_chunking.py           
│       ├── benchmark_retrieval.py          
│       └── benchmark_extraction.py                  # Skrip Ekstraksi (Agnostik)
├── archive/
│   └── Testing-Pipeline/
│       └── benchmark-extraction/
│           ├── Perform-Matrix/
│           │   └── performance_matrix_extraction.md # Matriks dengan Token & Cost
│           ├── Log-Error/                          
│           ├── Output-JSON/                         
│           │   ├── RAGAS..._extraction_results.json
│           │   └── SciLit..._extraction_results.json
│           └── Output-Human-Verification/           
│               ├── RAGAS..._extraction_human.md
│               └── SciLit..._extraction_human.md
└── Markdown/
    └── Testing-Pipeline/
        └── Extraction-Benchmark/
            ├── Plan/
            │   └── extraction_benchmark_plan.md     
            ├── Execution-Log/
            │   ├── Task_1_Execution.md
            │   ├── Task_2_Execution.md
            │   └── Task_3_Execution.md                       
            └── Report/                              
                └── Final_Report_Extraction_Benchmark.md  # Laporan Final INI
```

## 8. Tabel Metriks Kinerja Aktual
Uji coba kinerja (Dry-Run Batch) telah dilakukan terhadap 2 set hasil arsitektur sebelumnya (Jurnal *RAGAS* dan *SciLit*). Pengujian memastikan modul Pydantic `ExtractionResponse` tahan banting terhadap respons Qwen3, dan memuat perhitungan kalkulasi tarif API dinamis.

| TIMESTAMP | DOCUMENT | MODEL | TIKTOKEN INPUT | LLM OUT TOKEN | LATENCY (s) | COST ($) | STATUS | NOTE |
| :--- | :--- | :--- | :---: | :---: | :---: | :---: | :--- | :--- |
| 2026-05-14 18:19:32 | RAGAS_Automated_Evaluatio... | qwen3-30b-a3b-t... | 3698 | 4136 | 17.11 | $0.001611 | Success | - |
| 2026-05-14 18:19:50 | SciLit_Joint_Literature_D... | qwen3-30b-a3b-t... | 3482 | 6260 | 28.16 | $0.002226 | Success | - |

## 9. Temuan Kritis (Findings): Performa & Biaya LLM
Dari matriks performa dan artifak *Human Verification* MD yang dihasilkan, beberapa temuan utama yang berhasil diidentifikasi adalah:

1. **Efisiensi Anggaran (Burn Rate):** Biaya *extraction* 5 Pilar Akademik menggunakan `qwen3-30b-a3b-thinking-2507` berkisar di **$0.0016 - $0.0022 per dokumen**. Menyimulasikan pemrosesan 1.000 jurnal hanya akan memakan sekitar $2 USD. Skema kalkulasi *Cost Matrix* bekerja akurat dan siap beradaptasi ketika *provider* berpindah ke model mahaprestasi lain.
2. **Kapasitas Konteks Optimal:** Estimasi `tiktoken` memperlihatkan jumlah kata masuk (*Input Tokens*) hanya berputar di 3.400 - 3.700. Angka ini secara signifikan menyelamatkan *Context Window* sehingga model Qwen3 tidak terkena beban *Loss in the Middle* yang biasanya dialami jika disuapi 25.000 token utuh. Konsep deduplikasi *Parent_id* terbukti jitu.
3. **Overhead Latensi:** Model tipe *thinking* memerlukan setidaknya 17 hingga 28 detik untuk menghasilkan respons terstruktur (karena *output tokens* mencapai 4K - 6K untuk penalaran tersembunyi/JSON *generation*). Hal ini valid mengonfirmasi diperlukannya antrean *BoundedSemaphore* (Thread-Safe) sebagaimana yang ada dalam lingkungan *orchestrator*.

## 10. Kesimpulan Final
Arsitektur pengujian untuk tahapan akhir (*Extraction*) berhasil merangkum prinsip teknik yang mapan: *Agnostic Provider, Cost Predictability*, dan *Fail-Safe Logging*. Skrip telah dibekali kemampuan "satu klik pindah *provider*" tanpa mengotori ruang kredensial sistem lama, meretas jalan bagi komparasi antar model (*benchmarking OpenAI vs Qwen vs Claude*) di kemudian hari. Skrip sukses mengonversi remah-remah (*chunk*) data yang dibawakan oleh *Retriever* menjadi luaran Pydantic JSON solid yang koheren dalam tata bahasa akademis Indonesia.

## 11. Indikator Eksekusi Keseluruhan Task
Seluruh rangkaian tugas dari `extraction_benchmark_plan.md` telah diselesaikan.

- [x] **Task 1 (Preparation):** Pembuatan fondasi log dan *Output Dumps* (`archive/` & `Markdown/`).
- [x] **Task 2 (Scripting):** Re-arsitektur kode besar-besaran untuk menyuntikkan `Agnostic Provider`, `Pricing Matrix`, integrasi `Tiktoken (cl100k_base)`, serta modul perakit konteks (*Context Assembler*).
- [x] **Task 3 (Execution):** *Batch processing* dokumen secara sekuensial yang menghasilkan pencatatan metrik *Cost* ke dalam performa matriks, serta membuktikan keandalan Pydantic Lapis 3 (Armor).
- [x] **Task 4 (Reporting):** Penyusunan Final Report ini, yang mendetailkan kesempurnaan arsitektur sakelar.
