> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Integrasi AI

> Konfigurasikan chat AI, saran perbaikan error LaTeX, akses pengguna, kuota, dan layanan pencarian opsional.

<Info>
  Fitur ini disediakan oleh [ayaka-notes/ayakaleaf-pro](https://github.com/ayaka-notes/ayakaleaf-pro) dan tersedia sejak v6.3.0. Kami menyambut masukan Anda jika Anda mengalami masalah.
</Info>

## Asisten AI dan asisten error LaTeX

Ayakaleaf Pro menghadirkan fitur AI ke dalam editor melalui 2 cara.

* AI Assistant dapat menggunakan dokumen proyek dan pilihan teks Anda saat ini sebagai konteks untuk menjawab pertanyaan dan menyarankan suntingan untuk Anda tinjau.
* Error Assistant mengusulkan perbaikan yang tepat sasaran saat Anda memilih error kompilasi LaTeX.

<Frame>
  <img src="https://mintcdn.com/ayakaleaf-pro/x9kfDjtWlyyhG_mR/images/on-premises/image-48.png?fit=max&auto=format&n=x9kfDjtWlyyhG_mR&q=85&s=107b27f8843a326269b5e3711ccf2616" alt="" width="2844" height="1710" data-path="images/on-premises/image-48.png" />
</Frame>

### Konfigurasi Toolkit

Tambahkan yang berikut ke `config/variables.env` di deployment Toolkit Anda, dengan mengganti contoh URL, key, dan model dengan nilai dari penyedia Anda:

```dotenv theme={null}
AI_ENABLED=true
AI_BASE_URL=https://ai-gateway.example.com/v1
AI_API_KEY=REPLACE_WITH_YOUR_GATEWAY_API_KEY
AI_MODEL=YOUR_TEXT_MODEL_ID
```

Simpan API key asli di file lingkungan deployment Anda dan jauhkan dari version control. Nilai-nilai di atas hanyalah placeholder, bukan kredensial yang berfungsi.

<Info>
  Kualitas saran AI bergantung pada model yang Anda pilih. Jika Anda sudah memiliki langganan Codex atau ChatGPT, Anda dapat menghubungkannya melalui endpoint kompatibel OpenAI dari [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI).
</Info>

`AI_BASE_URL` adalah base URL API yang kompatibel dengan OpenAI, termasuk prefiks versi penyedia jika diperlukan. Jangan menambahkan `/chat/completions` karena kami akan menambahkannya secara internal. Gateway dan model harus mendukung streaming chat completions dan function tools. Kedua fitur mengirimkan konteks dokumen ke gateway ini; chat juga dapat mengirimkan gambar yang diunggah jika menggunakan model yang mendukung gambar.

Toolkit meneruskan `config/variables.env` ke dalam kontainer aplikasi. Gunakan nama variabel seperti yang ditunjukkan di sini; jangan tambahkan prefiks `OVERLEAF_`. Dari direktori Toolkit, buat ulang kontainer aplikasi setelah mengubah variabel-variabel ini:

```sh theme={null}
bin/up -d
```

### Pengaturan gateway

| Variabel | Default | Kegunaan |
| - | - | - |
| `AI_ENABLED` | `false` | Atur tepat ke `true` untuk mengaktifkan chat dan saran perbaikan error untuk instans. Jika tidak diatur atau bernilai lain, fitur tetap nonaktif. Konfigurasi gateway yang berfungsi juga diperlukan. |
| `AI_BASE_URL` | Tidak ada; wajib | Base URL API yang kompatibel dengan OpenAI. |
| `AI_API_KEY` | Tidak ada; wajib | API key untuk gateway tersebut, digunakan oleh server. |
| `AI_MODEL` | Tidak ada; wajib | Model teks yang digunakan oleh konfigurasi chat default dan oleh saran perbaikan error LaTeX. |
| `AI_IMAGE_MODEL` | Tidak diatur | Model opsional yang mendukung gambar pada gateway yang sama, menggunakan API key yang sama. |
| `AI_MAX_STEPS` | `20` | Jumlah maksimum pemanggilan tool per pesan pengguna di chat AI, termasuk kelanjutan otomatis. Gunakan bilangan bulat positif. |
| `AI_PROXY_URL` | Tidak diatur | URL proxy HTTP opsional untuk panggilan ke gateway AI. Ini tidak mengonfigurasi klien pencarian web atau dokumentasi. |
| `AI_TOKEN_QUOTA` | `0` | Batas token per pengguna yang digunakan bersama oleh chat dan saran perbaikan error untuk setiap periode. Tidak diatur atau `0` berarti tanpa batas; gunakan bilangan bulat positif untuk menetapkan batas. |
| `AI_TOKEN_QUOTA_PERIOD` | `month` | `month` direset pada hari pertama pukul 00:00 UTC; `week` direset setiap Senin pukul 00:00 UTC. Nilai lain menggunakan `month`. |

Untuk unggahan gambar, atur `AI_IMAGE_MODEL` ke model yang menerima input gambar dan mendukung tool yang digunakan oleh chat. Setiap permintaan chat yang riwayatnya berisi lampiran gambar akan menggunakan model ini, termasuk pesan-pesan berikutnya dalam percakapan tersebut. Tanpa pengaturan ini, permintaan gambar menggunakan model chat biasa, yang harus mendukung gambar. Saran perbaikan error LaTeX tetap menggunakan `AI_MODEL`.

Misalnya, untuk mengaktifkan model gambar dan jatah AI mingguan:

```dotenv theme={null}
AI_IMAGE_MODEL=YOUR_IMAGE_CAPABLE_MODEL_ID
AI_TOKEN_QUOTA=100000
AI_TOKEN_QUOTA_PERIOD=week
```

### Akses dan persetujuan pengguna

Ketersediaan instans dan izin pengguna adalah dua hal yang terpisah. `AI_ENABLED` dan konfigurasi gateway mengontrol ketersediaan instans. Pengguna yang sudah login juga harus lolos pemeriksaan akun yang ada:

* `aiFeatures.enabled` tidak boleh bernilai `false`. Field database yang sudah ada ini mengontrol chat maupun saran perbaikan error LaTeX.
* `features.aiUsageQuota` efektif milik pengguna harus sesuai dengan tier tanpa batas yang dikonfigurasi (`unlimited` secara default), atau izin lama `features.aiErrorAssistant` harus diaktifkan. Fitur efektif mencakup override fitur akun yang berlaku.

Mencentang kotak saja tidak mengubah paket pengguna. Field `aiUsageQuota` adalah tier izin, bukan jatah token numerik. `AI_TOKEN_QUOTA` adalah batas terpisah yang diterapkan secara sama ke setiap pengguna yang diizinkan; modul saat ini tidak menyediakan batas numerik individual per akun.

Di daftar pengguna admin, pilih seorang pengguna dan buka **Update account info → AI features**. **Enable AI features** memperbarui `aiFeatures.enabled` saat perubahan akun disimpan. Server memeriksa izin terkini pada setiap permintaan AI baru, termasuk permintaan dari editor yang sudah terbuka. Muat ulang editor untuk memperbarui kontrol yang terlihat setelah izin diubah.

### Penggunaan dan reset

Tab AI features di admin menampilkan **Usage**, **Limit**, dan tombol **Reset** untuk periode saat ini dalam satu baris. Penggunaan dibaca saat tab dibuka; data ini tidak diperbarui secara terus-menerus. Buka kembali tab setelah chat atau saran perbaikan error selesai untuk melihat jumlah terbaru. Reset berlaku seketika dan hanya menghapus penghitung periode saat ini milik pengguna tersebut, lalu memuat ulang penggunaan yang ditampilkan. Reset tidak memerlukan penyimpanan bagian lain dari formulir akun.

<Frame>
  <img src="https://mintcdn.com/ayakaleaf-pro/x9kfDjtWlyyhG_mR/images/on-premises/img-2f5a5399.png?fit=max&auto=format&n=x9kfDjtWlyyhG_mR&q=85&s=3c52c12aa1551cda22f218ec2dfda63b" alt="" width="563" data-path="images/on-premises/img-2f5a5399.png" />
</Frame>

Penggunaan chat dan saran perbaikan error berbagi satu penghitung Redis, yang diperbarui berdasarkan total token yang dilaporkan oleh penyedia model setelah permintaan selesai. Ini mencakup token input dan output di seluruh langkah model. Input dapat mencakup riwayat percakapan, konteks dokumen, dan hasil tool, sehingga pesan lanjutan dapat menghabiskan lebih banyak token daripada pesan baru itu sendiri. Penggunaan tetap dicatat meskipun batasnya **Unlimited**. Permintaan tanpa total token yang dilaporkan tidak menambah penghitung; penggunaan historis yang tidak tercatat tidak dapat direkonstruksi oleh modul.

Pemeriksaan kuota dilakukan sebelum streaming. Satu permintaan, atau beberapa permintaan bersamaan, dapat melampaui sisa jatah sebelum permintaan berikutnya diblokir. Ini adalah jatah penggunaan, bukan batas pengeluaran penyedia yang ketat. Jika pencarian kuota gagal, permintaan tetap diizinkan dan kegagalan tersebut dicatat di log.

Kedua fitur menggunakan `AI_TOKEN_QUOTA`; saran perbaikan error tidak memiliki batas jumlah permintaan tersendiri. Mereset penghitung tidak mengubah izin, persetujuan, batas yang dikonfigurasi, maupun catatan penagihan milik penyedia. Penghitung menggunakan kunci periode UTC dan kedaluwarsa setelah 40 hari; mempertahankan data Redis akan menjaga penggunaan saat ini meskipun aplikasi dimulai ulang.

### Layanan pencarian opsional

Pencarian web menggunakan API yang kompatibel dengan Tavily. Fitur ini tersedia jika API key pencarian telah dikonfigurasi. Pengaturan ini tidak bergantung pada gateway AI:

| Variabel | Default | Kegunaan |
| - | - | - |
| `TAVILY_API_KEY` | Tidak diatur | API key pencarian. Lebih diutamakan daripada `WEB_SEARCH_API_KEY`. |
| `WEB_SEARCH_API_KEY` | Tidak diatur | Nama alternatif untuk API key pencarian. |
| `WEB_SEARCH_URL` | `https://api.tavily.com/search` | Endpoint pencarian; endpoint kustom harus menerima format permintaan dan respons Tavily. |
| `WEB_SEARCH_MAX_RESULTS` | `5` | Jumlah hasil yang diminta per pencarian; gunakan bilangan bulat positif yang didukung oleh layanan. |
| `WEB_SEARCH_DEPTH` | `basic` | Kedalaman pencarian, biasanya `basic` atau `advanced`. |
| `WEB_SEARCH_PROVIDER` | `tavily` | Implementasi saat ini hanya mendukung protokol yang kompatibel dengan Tavily; mengubah nilai ini tidak memilih adapter lain. |
| `DOCS_MCP_URL` | `https://docs.overleaf.com/~gitbook/mcp` | Endpoint pencarian dokumentasi. Atur ke string kosong untuk menonaktifkan pencarian dokumentasi. |

Misalnya:

```dotenv theme={null}
TAVILY_API_KEY=REPLACE_WITH_YOUR_SEARCH_API_KEY
WEB_SEARCH_MAX_RESULTS=5
WEB_SEARCH_DEPTH=basic
DOCS_MCP_URL=https://docs.overleaf.com/~gitbook/mcp
```

Pencarian dokumentasi memanggil tool `searchDocumentation` milik endpoint MCP GitBook yang dikonfigurasi dan menerima respons JSON atau SSE. Ini adalah klien MCP untuk pencarian dokumentasi; modul-modul ini tidak mengekspos file proyek sebagai server MCP ataupun menyediakan registri server MCP serbaguna.

Kueri pencarian dikirim ke layanan pencarian yang dikonfigurasi. Hasil pencarian kemudian dapat disertakan dalam permintaan ke gateway AI. Menu **Tools** di chat memungkinkan pengguna mengaktifkan atau menonaktifkan **Web** dan **Documentation** untuk permintaan mereka; tool juga harus dikonfigurasi di server agar tersedia bagi model.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.