Skip to content

Algoritma-dan-Pemrograman-ITS/Simple-LLM-Classification

Repository files navigation

🤖 Sistem Klasifikasi Klaim dengan Gemini AI

Sistem klasifikasi teks otomatis menggunakan Google Gemini AI untuk mengkategorikan request klaim asuransi berdasarkan rules yang sudah ditentukan.

✨ Fitur

  • Klasifikasi Otomatis - Menggunakan Gemini AI untuk mengklasifikasikan teks klaim ke kategori yang tepat
  • Multi-Kategori - Mendukung berbagai jenis klaim (Kesehatan, Kecelakaan, Jiwa, Properti, Perjalanan)
  • Confidence Score - Memberikan skor kepercayaan untuk setiap klasifikasi
  • Rules Engine - Menyediakan informasi dokumen yang diperlukan, batas waktu, dan limit klaim
  • Ekstraksi Entitas - Mengidentifikasi informasi penting seperti nama, tanggal, lokasi, dan nominal
  • Mode Batch - Klasifikasi multiple klaim sekaligus
  • Mode Interaktif - Input klaim manual untuk testing

📁 Struktur Project

klasifikasi_senopati/
├── classifier.py      # Kelas utama untuk klasifikasi
├── config.py          # Konfigurasi kategori dan rules
├── main.py            # Contoh penggunaan
├── requirements.txt   # Dependencies
├── .env.example       # Template environment variables
└── README.md          # Dokumentasi

🚀 Instalasi

1. Clone/Download Project

cd /Users/gading/Documents/code/klasifikasi_senopati

2. Buat Virtual Environment (Opsional tapi Disarankan)

python -m venv venv
source venv/bin/activate  # Mac/Linux

3. Install Dependencies

pip install -r requirements.txt

4. Setup API Key

# Salin template
cp .env.example .env

# Edit file .env dan masukkan API key Anda
# Dapatkan API key di: https://aistudio.google.com/app/apikey

💻 Penggunaan

Basic Usage

from classifier import KlasifikasiKlaim

# Inisialisasi
classifier = KlasifikasiKlaim()

# Klasifikasi teks klaim
teks_klaim = """
Saya ingin mengajukan klaim untuk biaya rawat inap di RS Mitra Keluarga.
Saya didiagnosa typhoid dan dirawat selama 4 hari.
Total biaya: Rp 12.500.000
"""

hasil = classifier.klasifikasi(teks_klaim)

# Akses hasil
print(f"Kategori: {hasil.nama_kategori}")
print(f"Confidence: {hasil.confidence_score:.1%}")
print(f"Prioritas: {hasil.prioritas}")
print(f"Dokumen Diperlukan: {hasil.dokumen_diperlukan}")

Format Output yang Rapi

# Gunakan method format_hasil untuk tampilan yang rapi
print(classifier.format_hasil(hasil))

Batch Classification

daftar_klaim = [
    "Klaim untuk biaya operasi...",
    "Laporan kecelakaan lalu lintas...",
    "Pengajuan santunan kematian..."
]

hasil_batch = classifier.klasifikasi_batch(daftar_klaim)
for hasil in hasil_batch:
    print(hasil.kategori, hasil.confidence_score)

Mode Interaktif

python main.py --interactive

Run Contoh Demo

python main.py

📋 Kategori yang Didukung

Kode Nama Prioritas
KLAIM_KESEHATAN Klaim Kesehatan Tinggi
KLAIM_KECELAKAAN Klaim Kecelakaan Tinggi
KLAIM_JIWA Klaim Jiwa Sangat Tinggi
KLAIM_PROPERTI Klaim Properti Sedang
KLAIM_PERJALANAN Klaim Perjalanan Sedang
KLAIM_TIDAK_VALID Klaim Tidak Valid Rendah

⚙️ Kustomisasi

Menambah Kategori Baru

Edit file config.py:

CLASSIFICATION_CATEGORIES = {
    # ... kategori existing ...
    
    "KLAIM_BARU": {
        "nama": "Klaim Baru",
        "deskripsi": "Deskripsi kategori baru",
        "keywords": ["kata", "kunci", "terkait"],
        "prioritas": "sedang"
    }
}

Mengubah Rules

VALIDATION_RULES = {
    "dokumen_wajib": {
        "KLAIM_BARU": ["Dokumen 1", "Dokumen 2"],
        # ...
    },
    "batas_waktu_klaim": {
        "KLAIM_BARU": 30,  # hari
    },
    "batas_maksimum_klaim": {
        "KLAIM_BARU": 100000000,  # rupiah
    }
}

Mengubah Model Gemini

GEMINI_CONFIG = {
    "model": "gemini-1.5-pro",  # untuk akurasi lebih tinggi
    "temperature": 0.1,
    "max_output_tokens": 2048
}

📊 Struktur Response

@dataclass
class HasilKlasifikasi:
    kategori: str              # Kode kategori
    nama_kategori: str         # Nama kategori
    confidence_score: float    # 0.0 - 1.0
    alasan: str               # Penjelasan klasifikasi
    prioritas: str            # tinggi/sedang/rendah
    dokumen_diperlukan: list  # List dokumen wajib
    batas_waktu_hari: int     # Batas waktu klaim
    batas_maksimum_klaim: int # Maksimum nominal
    ringkasan_kasus: str      # Ringkasan klaim
    rekomendasi: str          # Langkah selanjutnya
    raw_response: dict        # Response asli dari Gemini

🔒 Keamanan

  • Jangan commit file .env ke repository
  • Gunakan environment variables untuk production
  • API key sudah di-exclude di .env.example

📝 Lisensi

MIT License


Dibuat dengan ❤️ menggunakan Google Gemini AI

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages