Metadata-Version: 2.4
Name: permerix
Version: 0.2.0
Summary: Pustaka Python resmi untuk layanan Permerix (model Nusa).
Author: Daffa Farid
License: MIT
Project-URL: Homepage, https://github.com/Daffa7382466/permerix
Project-URL: Repository, https://github.com/Daffa7382466/permerix
Project-URL: Issues, https://github.com/Daffa7382466/permerix/issues
Keywords: permerix,nusa,ai,bahasa-indonesia,nlp,sdk
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: Indonesian
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# Permerix

Pustaka Python resmi untuk layanan **Permerix**.

**Permerix** adalah nama layanannya; **Nusa** adalah nama model di dalamnya —
hubungannya seperti Claude dengan Opus.

Nusa adalah AI berbahasa Indonesia yang dibangun dari nol: mesin n-gram dan
peleburan graf kata, tanpa jaringan saraf. Ia menyusun kalimatnya sendiri dan
bisa mencari tahu ke internet ketika tidak tahu.

**Tanpa dependensi.** `pip install permerix` tidak menarik paket lain apa pun —
pustaka ini hanya memakai modul bawaan Python.

---

## Pasang

```bash
pip install permerix
```

## Pakai

```python
from permerix import Permerix

klien = Permerix(kunci="prx-live-xxxx")
print(klien.tanya("apa itu kalimat efektif"))
```

### Pasang kunci sekali saja

Supaya tidak perlu menulis kunci di setiap berkas:

```python
from permerix import simpan_konfig
simpan_konfig(kunci="prx-live-xxxx")     # cukup sekali
```

Sesudah itu, di skrip mana pun:

```python
from permerix import Permerix
print(Permerix().tanya("halo"))          # tanpa argumen apa pun
```

Kunci tersimpan di `~/.permerix/konfigurasi.json` dan hanya bisa dibaca
pemiliknya.

Alamat layanan (`https://api.permerix.web.id`) sudah tertanam di pustaka —
tidak perlu diisi, tidak perlu diatur. Kalau suatu saat alamatnya pindah,
pustaka mencarinya sendiri; paket yang sudah terpasang tetap jalan.

### Jawaban lengkap

```python
balasan = klien.percakapan.kirim("apa itu pantun")

print(balasan.isi)
print(balasan.kredit)        # kredit yang terpakai
print(balasan.sisa_kredit)   # sisa; None berarti tanpa batas
```

### Mengalir

```python
for potong in klien.percakapan.alirkan("ceritakan tentang pantun"):
    print(potong.isi, end="", flush=True)
```

### Cek kredit dan model

```python
klien.kredit()   # {'kredit': 98, 'peran': 'user', 'pesan': 2, ...}
klien.model()    # [{'id': 'nusa-0.2', 'nama': 'Nusa 0.2', ...}]
```

---

## Dari baris perintah

```bash
export PERMERIX_API_KEY=prx-live-xxxx

permerix "apa itu kalimat efektif"
permerix --alir "ceritakan tentang pantun"
permerix --kredit
permerix --daftar-model
```

Atau tanpa memasang perintahnya: `python -m permerix "halo"`

---

## Mengambil kunci

Kunci API diambil lewat **bot Telegram** Permerix:

1. Buka botnya, tekan `/start`
2. Tekan tombol **Key** → **Buat Kunci**
3. Salin kunci `prx-live-...`

Pengguna baru mendapat **100 kredit gratis**. Satu pesan biasanya 1 kredit,
naik sampai 5 bila Nusa perlu mencari ke internet.

---

## Pengaturan

| Peubah lingkungan | Guna |
|---|---|
| `PERMERIX_API_KEY` | kunci API, supaya tidak perlu ditulis di kode |
| `PERMERIX_API_URL` | alamat layanan; menimpa alamat bawaan pustaka |

```python
# Semua pengaturan bisa juga diberikan langsung
klien = Permerix(
    kunci="prx-live-xxxx",
    alamat="https://api.contoh.com",   # opsional
    tenggang=180,                       # detik
    coba_ulang=2,                       # ulangi bila jaringan gagal
)
```

---

## Menangani kesalahan

```python
from permerix import Permerix, KreditHabis, TerlaluCepat, GalatPermerix

try:
    print(klien.tanya("halo"))
except KreditHabis:
    print("Kredit habis, isi ulang lewat bot Telegram.")
except TerlaluCepat as e:
    print(f"Terlalu cepat, tunggu sebentar. {e.pesan}")
except GalatPermerix as e:
    print(f"Gagal ({e.kode}): {e.pesan}")
```

Semua kesalahan turunan `GalatPermerix`, jadi satu blok `except` sudah cukup.

| Kesalahan | Kapan |
|---|---|
| `GalatKunci` | kunci salah, tidak ada, atau sudah dicabut |
| `KreditHabis` | kredit sudah nol |
| `TerlaluCepat` | melewati batas laju |
| `ModelDitolak` | model belum dirilis atau perlu peran lebih tinggi |
| `GalatJaringan` | server tidak bisa dihubungi |
| `GalatLayanan` | server bermasalah di sisinya |

---

## Model

| Model | Keterangan |
|---|---|
| `nusa-0.2` | model bawaan, sudah dirilis |

Model berikutnya akan dibuka lebih dulu untuk pengguna Premium.

---

## Batas jujur

Nusa **bukan model bahasa besar**. Ia menyusun ulang kalimat yang pernah
dibacanya memakai n-gram dan peleburan graf kata, tanpa jaringan saraf dan
tanpa penalaran. Kalimatnya kadang masih pincang, terutama untuk pertanyaan
yang menuntut hafalan atau perhitungan berantai.

Yang dijaga: ia tidak menyalin mentah hasil pencarian, tidak membalik makna
kalimat, dan mengaku tidak tahu daripada mengarang.

---

## Lisensi

MIT
