AdiLin adalah prototype AI decision-support untuk analisis awal hukum pidana Indonesia. Sistem ini membantu mencari pasal relevan, memeriksa unsur pidana secara heuristik, menampilkan sumber hukum, dan menyusun analisis awal yang tetap wajib divalidasi manusia.
AdiLin bukan pengganti advokat, jaksa, hakim, atau penasihat hukum. Output aplikasi tidak boleh dipakai sebagai vonis, keputusan hukum final, atau dasar tunggal untuk tindakan hukum nyata.
Basis data AdiLin diambil dari dokumen PP, UU, UUD, dan UUDRT periode 1945-2023.
Sumber dataset: law-indonesia-pdf di Kaggle.
- Retrieval pasal hukum menggunakan index TF-IDF lokal.
- Parsing PDF peraturan menjadi record pasal dan fallback chunk.
- Ekstraksi awal unsur pidana dan ancaman pidana berbasis rule engine.
- Provider LLM: Gemini, Groq, Ollama, dan fallback extractive.
- Rotasi Gemini API key melalui
GEMINI_API_KEYSatauapikey_gemini.txt. - Backend API-only untuk deployment server.
- Frontend statis terpisah untuk Vercel.
.
├── backend/ Backend HTTP API
├── frontend/ Frontend statis untuk Vercel
├── src/adilin/ Core package: parser, retriever, reasoner, providers
├── scripts/ Script import dataset, build dataset, build index, CLI
├── tests/ Unit tests
├── docs/ Dokumentasi teknis tambahan
├── data/ Lokasi dataset dan index lokal
├── requirements.txt Dependency backend
├── pyproject.toml Konfigurasi project dan pytest
└── .env.example Contoh environment variable
Gunakan Python 3.10 atau lebih baru.
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .envUntuk Windows PowerShell:
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
copy .env.example .envJalankan backend API:
python backend/server.py --host 127.0.0.1 --port 37990Health check:
curl http://127.0.0.1:37990/healthFrontend berada di folder frontend/ dan tidak memerlukan build step.
cd frontend
npm run check
npm run devLocal preview tersedia di:
http://127.0.0.1:5173
Secara default local dev server dan konfigurasi Vercel mem-proxy /api/* ke backend:
http://127.0.0.1:37990
Jika backend production berubah, update frontend/vercel.json. Untuk local preview, gunakan environment ADILIN_BACKEND_URL jika backend berjalan di host atau port lain.
Response:
{
"ok": true,
"service": "AdiLin"
}Request:
{
"case_text": "Pelaku mengambil motor korban tanpa izin lalu menjualnya.",
"provider": "gemini",
"top_k": 5,
"decision_mode": true
}Provider yang tersedia:
extractive
gemini
groq
ollama
Response ringkas:
{
"ok": true,
"result": {
"answer": "...",
"decision": {
"label": "...",
"citation": "...",
"severity": "ok"
},
"sources": []
}
}Gemini:
ADILIN_LLM_PROVIDER=gemini
GEMINI_API_KEY=isi_api_key
GEMINI_MODEL=gemini-2.5-flash-liteMulti-key Gemini dapat memakai environment:
GEMINI_API_KEYS=key1,key2,key3Atau file lokal :
apikey_gemini.txt
Format:
key_gemini_pertama
key_gemini_kedua
key_gemini_ketiga
Jika satu key terkena quota atau rate-limit, provider Gemini otomatis mencoba key berikutnya.
Groq:
ADILIN_LLM_PROVIDER=groq
GROQ_API_KEY=isi_api_key
GROQ_MODEL=llama-3.1-8b-instantOllama:
ADILIN_LLM_PROVIDER=ollama
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=qwen2.5:7bImport ZIP dataset:
python scripts/00_import_zip.py --zip "Dataset Undang-Undang.zip" --out data/raw_importedBuild dataset pasal dan unsur:
python scripts/01_build_dataset.py \
--input data/raw_imported \
--out data/processed/legal_articles.jsonl \
--elements data/processed/legal_elements.jsonlBuild index:
python scripts/02_build_index.py \
--dataset data/processed/legal_articles.jsonl \
--index data/index/tfidfTest CLI:
python scripts/03_query_cli.py \
--provider extractive \
--query "Pelaku mengambil motor korban tanpa izin lalu menjualnya."Decision simulation:
python scripts/05_decision_cli.py \
--provider extractive \
--case "Pelaku mengambil motor korban di parkiran tanpa izin. Ada saksi dan rekaman CCTV."pytestLihat LICENSE.
Developed by Polyvor Labs.