AI integration.
Adapter teks server-side dengan batas input, output dan waktu request.
Konfigurasi provider
Gunakan endpoint HTTPS yang kompatibel dengan chat/completions dan max_tokens. Isi model sesuai provider; kunci hanya disimpan di .env privat.
AI_BASE_URL=https://your-provider.example/v1
AI_API_KEY=your-private-key
AI_MODEL=your-compatible-model
AI_MAX_INPUT_BYTES=12000
AI_MAX_OUTPUT_TOKENS=512Memanggil adapter
ask mengembalikan text, usage, model dan duration_ms. Panggilan bersifat sinkron dan membutuhkan cURL.
$result = (new DL\AI())->ask('Ringkas teks ini: ...', 'Jawab singkat dalam bahasa Indonesia.');
// Di view:
echo e($result['text']);Batas dan penanganan kegagalan
Timeout koneksi 5 detik, total 25 detik, respons maksimum 1 MiB, tanpa retry atau redirect otomatis. Input dihitung dalam byte termasuk system prompt. Output dibatasi maksimal 4096 token. Tangkap exception dan berikan pesan ramah tanpa membocorkan detail provider.
Sebelum membuat endpoint publik
Terapkan autentikasi, kuota per pengguna, validasi input, CSRF dan kontrol biaya. Framework tidak menyediakan rate limiter atau kuota otomatis. Tidak ada demo endpoint publik yang melakukan panggilan berbayar.
Tools yang eksplisit
Tools adalah registry tindakan lokal terpisah. Model tidak mengeksekusinya otomatis. Otorisasi berasal dari kode aplikasi, bukan teks respons model.
$tools = new DL\Tools();
$tools->register('text_length', 'Measure text', ['text'=>'required|max:500'], fn($args) => strlen($args['text']));
$result = $tools->execute('text_length', ['text'=>'Hello'], fn($name, $args) => DL\Auth::id() !== null);Batas integrasi saat ini
Belum ada streaming, embeddings, RAG, agent loop, atau provider tool calling. Gunakan transport Closure untuk pengujian tanpa jaringan dan biaya.