---
title: AI Models
description: Jual akses model AI via gateway Anda: tambah penyedia OpenAI/Anthropic, sinkronkan model, atur harga, dan sediakan satu endpoint untuk pelanggan.
url: https://nexcmp.com/id/docs/infrastructure/ai-models/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# AI Models {#ai-models}

> **Lokasi di admin:** System › Admin › License & updates (`/license`) untuk mengaktifkan modul. Lalu Services › AI Models: Providers (`/ai/providers`), Models (`/ai/models`), Profit (`/ai/profit`), dan Audit (`/ai/audit`). Pelanggan menggunakan AI › API di portal pelanggan.

## Fungsi {#what-it-does}

AI Models adalah layer gateway dan penagihan pada panel Anda sendiri. Pelanggan Anda mendapatkan API key dan memanggil **satu endpoint pada domain Anda**, dalam format yang kompatibel dengan OpenAI atau Anthropic. Anda memilih model mana saja yang ditawarkan beserta biayanya per 1 juta token. NexCMP memeriksa kunci, batasan, dan wallet, meneruskan permintaan ke penyedia yang Anda tambahkan, menghitung token, lalu memotong wallet prabayar pelanggan.

**Anda menyediakan sumber model sendiri.** NexCMP hadir tanpa penyedia, tanpa model, tanpa alamat default, dan tanpa harga. NexCMP tidak menyediakan model, API key, token, maupun akun penyedia.

::: warning Periksa ketentuan sumber Anda terlebih dahulu
Banyak sumber model membatasi penjualan kembali atau penerusan akses ke pihak ketiga. Gunakan hanya sumber yang izin penggunaannya dan penjualan kembalinya Anda miliki, serta patuhi ketentuan mereka dan hukum yang berlaku bagi Anda. Halaman ini bukan nasihat hukum.
:::

AI Models adalah produk terpisah dari **AI Chat and AI Agent** (modul **AI**, lihat [Penyedia AI](https://nexcmp.com/id/docs/ai/ai-providers/)). Kedua modul ini tidak saling bergantung.

## Persyaratan {#requirements}

| Item | Persyaratan |
|---|---|
| Modul | **AI Models** diaktifkan pada License & updates, Modules. Fitur ini dinonaktifkan secara default. |
| Penyedia | Satu atau beberapa sumber model yang berwenang Anda jual kembali, masing-masing dengan API yang kompatibel dengan OpenAI (`/chat/completions`), API yang kompatibel dengan Anthropic (`/messages`), atau keduanya. Masing-masing memerlukan base URL dan API key. |
| Jaringan | Panel harus dapat menjangkau setiap penyedia melalui **HTTPS pada port 443** di nama domain publik. Penyedia pada host internal, port lain, atau plain HTTP harus tercantum di bawah **Allowed internal hosts** (pengaturan `ai_endpoint_allow`). |
| Pelanggan | Akun pelanggan dengan alamat email terverifikasi dan saldo dompet. |
| Perangkat keras | Tidak ada. NexCMP hanya meneruskan permintaan: tanpa GPU dan tanpa file model. |

## Siapkan infrastruktur {#prepare-the-infrastructure}

1. Dapatkan API key dari setiap sumber model yang akan Anda gunakan, dan catat base URL miliknya (misalnya `https://api.example.com/v1`).
2. Periksa ketentuan sumber terkait penjualan kembali.
3. Jika sumber berjalan di dalam jaringan Anda, tentukan alamatnya, misalnya `http://10.0.0.5:8000/v1`. Anda akan mendaftarkan `10.0.0.5:8000` di bawah **Allowed internal hosts**.

## Hubungkan di NexCMP {#connect-in-nexcmp}

### 1. Aktifkan modul {#_1-turn-the-module-on}

Buka **System › Admin › License & updates**, temukan kartu **Module**, dan aktifkan **AI Models**. Menu akan dimuat ulang dan **Services › AI Models** muncul. Selama modul nonaktif, halaman pelanggan, halaman admin, dan gateway semuanya merespons `404 module_disabled`, serta tidak ada penyedia yang dihubungi.

![Kartu Module dengan sakelar AI Models aktif](https://nexcmp.com/id/docs/images/infrastructure/ai-models-01-modules.webp)

### 2. Tambahkan penyedia {#_2-add-a-provider}

1. Buka **AI Models › Providers** dan pilih **Add provider**.
2. Masukkan **slug** pendek, **name** (hanya Anda yang melihatnya), **type** (OpenAI-compatible, Anthropic-compatible, atau Both), **base URL** dan **API key**, serta **priority** (angka lebih kecil dicoba lebih dulu).
3. Simpan. Kunci disimpan terenkripsi dan hanya empat karakter terakhirnya yang ditampilkan setelahnya. Kunci hanya dapat dimasukkan dari sesi administrator yang telah masuk.

Gunakan **Both** hanya untuk gateway yang benar-benar melayani kedua format. NexCMP **tidak** menerjemahkan di antara kedua format: model yang dilayani oleh penyedia yang kompatibel dengan OpenAI dijangkau di `/ai/v1/chat/completions`, dan yang dilayani oleh penyedia yang kompatibel dengan Anthropic di `/ai/v1/messages`.

![Halaman Providers yang mencantumkan tiga contoh penyedia beserta jenis, prioritas, dan statusnya](https://nexcmp.com/id/docs/images/infrastructure/ai-models-02-providers.webp)

### 3. Uji koneksi {#_3-test-the-connection}

Pilih **Test connection** pada penyedia. NexCMP membaca `GET <base URL>/models` dengan kunci tersebut dan melaporkan **ok**, atau alasan kegagalannya: **auth** (kunci salah), **blocked**, **billing**, atau **unreachable**. Pengujian dibatasi 6 kali per menit.

### 4. Sinkronkan model {#_4-sync-the-models}

Pilih **Sync models**. NexCMP membaca daftar model penyedia dan menambahkan setiap model baru dalam kondisi **nonaktif tanpa harga**. Model yang tidak lagi dicantumkan oleh penyedia akan ditandai. Selama modul aktif, daftar ini juga disinkronkan secara otomatis setiap 6 jam (pengaturan `ai_models_sync_hours`).

### 5. Tetapkan harga dan aktifkan model {#_5-set-prices-and-switch-models-on}

1. Buka **AI Models › Models**.
2. Untuk setiap model yang ingin Anda jual, tetapkan **harga jual** dalam dolar AS per 1 juta token: **input**, **cached input**, dan **output**.
3. Secara opsional masukkan **biaya** Anda untuk model tersebut. Kemudian **Profit** menampilkan pendapatan dibandingkan biaya per hari dan per model, serta harga jual di bawah biaya Anda ditambah margin minimum (pengaturan `ai_min_margin_pct`, 10 secara default) akan ditolak kecuali Anda mengonfirmasi kerugian yang disengaja. **Set price from cost** menggunakan markup yang Anda pilih; tidak ada markup default.
4. Aktifkan model. Model tanpa harga jual tidak dapat diaktifkan. Harga cached input yang dibiarkan nol akan ditagih sesuai harga input.

![Halaman Models dengan harga jual input, cached input, dan output serta sakelar on-off](https://nexcmp.com/id/docs/images/infrastructure/ai-models-03-models.webp)

### 6. Routes dan failover {#_6-routes-and-failover}

Pada suatu model, **Routes** mencantumkan penyedia yang melayaninya secara berurutan. Tambahkan penyedia kedua sebagai fallback, atur urutannya, dan secara opsional berikan nama model yang berbeda untuk setiap penyedia (nama yang dikirim ke penyedia dapat berbeda dari nama yang Anda publikasikan). Ketika suatu penyedia mengembalikan kesalahan server, kesalahan otorisasi atau penagihan, model tidak ditemukan, atau batas kuota (rate limit), NexCMP akan mencoba route berikutnya. Jika pembacaan mengalami batas waktu (timeout) setelah permintaan dikirim, permintaan tersebut **tidak** dikirim ke penyedia lain, sehingga Anda tidak membayar dua kali.

Setiap penyedia dibatasi kecepatannya pada `ai_provider_rpm` permintaan per menit (default 50). Jika penyedia terus-menerus mengembalikan kesalahan otorisasi atau penagihan, NexCMP akan memperingatkan administrator melalui Telegram jika Telegram telah dikonfigurasi.

### 7. Buka sakelar penjualan {#_7-open-the-sale-switch}

Di bagian atas halaman AI Models, **sakelar penjualan** (pengaturan `feature_ai_models`) nonaktif secara default. Saat nonaktif, pelanggan melihat bahwa layanan belum dibuka dan daftar harga publik melaporkannya sebagai tidak tersedia. Pastikan setidaknya satu model aktif, memiliki harga jual, dan route dengan kunci, lalu aktifkan sakelar tersebut.

### Apa yang dapat dilakukan pelanggan {#what-customers-can-do}

Di portal pelanggan, **AI › API**:

- **Models** menampilkan model dan harga Anda, URL dasar, serta contoh perintah siap pakai.
- **API Keys**: buat, ganti nama, rotasi, nonaktifkan, dan hapus kunci. Rahasia hanya ditampilkan sekali; hanya hash yang disimpan. Per kunci: model yang diizinkan, kedaluwarsa, anggaran batas lunak (memberi peringatan) dan anggaran batas keras (memblokir dengan `402`), permintaan per menit, serta token per menit.
- **Usage** berdasarkan model, kunci, dan hari, disertai fitur ekspor.
- **Logs**: catatan permintaan yang dapat difilter (waktu, kunci, model, token, biaya, status, latensi). **Prompt dan respons tidak dicatat.** Log disimpan selama 90 hari secara default (`ai_log_retention_days`).
- **Settings**: anggaran akun dan alamat email untuk peringatan anggaran.
- **Playground**: mengobrol dengan model, membandingkan model secara berdampingan, dan menyalin kode yang sesuai.

![Halaman API Keys pelanggan dengan URL dasar untuk kedua format API](https://nexcmp.com/id/docs/images/infrastructure/ai-models-04-keys.webp)

Endpoint gateway, pada domain Anda:

```text
POST /ai/v1/chat/completions      OpenAI-compatible
POST /ai/v1/messages              Anthropic-compatible (also /ai/v1/messages/count_tokens)
GET  /ai/v1/models                model list
GET  /ai/v1/models/pricing        public price list, no key needed
```

### Wallet dan penagihan {#wallet-and-billing}

Penggunaan AI dibebankan ke wallet prabayar yang sama seperti layanan lainnya. Sebelum permintaan diteruskan ke penyedia, NexCMP mencadangkan dana untuk biaya maksimum yang mungkin terjadi; jika saldo di bawah batas minimum (`ai_min_balance_cents`, default 20 sen) atau terlalu kecil, permintaan akan ditolak dengan `402 insufficient_balance` dan **tidak ada penyedia yang dipanggil**. Penggunaan dikumpulkan per akun dan diselesaikan ke dalam entri buku besar wallet setiap jam, dengan pembersihan (sweep) setiap 5 menit; penggunaan yang belum diselesaikan sudah dipotong dari saldo yang terbaca oleh gateway.

Reseller dapat menjual AI Models di domain mereka sendiri: markup atau diskon mereka berlaku untuk harga jual Anda dan wallet grosir mereka ditagih harga grosir. Sakelar AI per-reseller, aktif secara default, mengontrol siapa yang menjualnya.

## Verifikasi {#verify}

1. Setelah langkah 3, **Test connection** menampilkan **ok** dan jumlah model.
2. Setelah langkah 4, model baru tercantum dalam keadaan nonaktif tanpa harga.
3. Sebagai pelanggan dengan saldo wallet yang mencukupi, buat kunci dan panggil gateway:

   ```bash
   curl https://your-domain/ai/v1/chat/completions \
     -H "Authorization: Bearer sk-ai-…" -H "Content-Type: application/json" \
     -d '{"model":"model-one","messages":[{"role":"user","content":"hello"}]}'
   ```

   Respons `200` memuat jawaban model. **Usage** menampilkan permintaan tersebut, dan **Profit** menampilkannya jika Anda memasukkan biaya.
4. Dengan saldo wallet nol, panggilan yang sama mengembalikan `402 insufficient_balance`.

## Batasan dan catatan {#limits-and-notes}

- Modul ini tidak menyertakan penyedia, model, atau harga bawaan, dan daftar harga tidak pernah dibaca dari penyedia.
- Alat yang berjalan di sisi penyedia dan ditagih per panggilan, seperti pencarian web, ditolak karena tidak dapat diukur pemakaiannya. Hanya daftar singkat parameter permintaan yang diteruskan.
- Penggunaan token diambil dari balasan provider; jika balasan tidak memilikinya, NexCMP memperkirakannya dan menandai catatan tersebut sebagai diestimasi.
- Error dari provider dibersihkan sebelum sampai ke pelanggan (nama, host, alamat, dan nama model milik provider dihapus). Pelanggan tidak pernah melihat provider mana yang melayani permintaan.
- Pelanggan mengakses gateway melalui domain panel Anda, sehingga TLS domain tersebut harus berfungsi.
- NexCMP tidak menyediakan perjanjian tingkat layanan (SLA), fine-tuning, atau hosting GPU untuk modul ini.

## Pemecahan Masalah {#troubleshooting}

| Gejala | Penyebab dan perbaikan |
|---|---|
| Setiap halaman AI Models dan gateway merespons `404 module_disabled` | Modul nonaktif. Aktifkan **AI Models** di bawah License & updates, Modules. |
| Penambahan provider gagal dengan `endpoint_host_not_allowed`, `endpoint_must_be_https`, atau `invalid_endpoint_port` | URL dasar harus berupa HTTPS pada port 443 dengan nama domain publik. Untuk host internal, port lain, atau HTTP biasa, cantumkan `host:port` di bawah **Allowed internal hosts**. |
| `blocked_endpoint` | Alamat berupa IP, atau namanya me-resolve ke alamat privat. Cantumkan di bawah **Allowed internal hosts** jika itu yang Anda inginkan. |
| **Test connection** menampilkan `auth` | Kunci salah atau tidak memiliki akses. Masukkan kunci kembali. |
| Model tidak dapat diaktifkan (`no_price`) | Tetapkan harga jual terlebih dahulu. |
| Pelanggan menerima `503 ai_unavailable` | Tombol penjualan nonaktif, atau tombol AI reseller nonaktif. |
| Pelanggan menerima `503 upstream_unavailable` | Tidak ada rute aktif dengan kunci yang melayani model tersebut dalam format yang diminta. Periksa rute model dan tipe provider. |
| Pelanggan menerima `402 insufficient_balance` | Saldo wallet di bawah batas minimum atau terlalu kecil untuk permintaan tersebut. Minta pelanggan melakukan top up. |
