- Step 1 - Membuat Job Analisis
- Step 2 - Implementasi Logika Job
- Step 3 - Memanggil Job dari Controller
- Step 4 - Menjalankan Queue Worker
- kesimpulan
Halo semuanya! 👋
Pernahkah teman-teman menggunakan aplikasi AI dan harus menunggu loading sangat lama di layar? Itu terjadi karena proses AI (LLM) membutuhkan waktu beberapa detik (bahkan menit) untuk merespons.
Di Part 6 ini, kita akan belajar solusinya: Laravel Jobs & Queues. Kita akan memindahkan proses analisis AI ke background agar pengguna bisa terus menggunakan aplikasi tanpa harus menunggu proses analisis selesai.
Step 1 - Membuat Job Analisis
Jalankan perintah berikut untuk membuat kelas Job baru:
php artisan make:job AnalyzeThesisJob
Step 2 - Implementasi Logika Job
Buka file app/Jobs/AnalyzeThesisJob.php. Di sini kita akan menggabungkan ekstraksi teks dan pemanggilan AI Agent.
app/Jobs/AnalyzeThesisJob.php
public function handle(PdfService $pdfService): void
{
// 1. Update status jadi processing
$this->thesis->update(['status' => 'processing']);
try {
// 2. Ekstrak Teks menggunakan Service yang sudah kita buat di Part 4
$text = $pdfService->extractText($this->thesis->file_path);
// 3. Panggil AI Agent
$agent = new ThesisAnalyzerAgent();
$response = $agent->prompt("Analisis draf ini secara mendalam: " . $text);
$data = $response->toArray();
// 4. Simpan Feedback ke Database
foreach ($data['feedbacks'] as $item) {
$this->thesis->analyses()->create([
'analysis_type' => $item['type'],
'result' => $item,
]);
}
// 5. Update status jadi completed
$this->thesis->update([
'status' => 'completed',
'analysis_results' => ['summary' => $data['summary'] ?? 'Analisis selesai.']
]);
} catch (\Exception $e) {
\Log::error("Analysis failed: " . $e->getMessage());
$this->thesis->update(['status' => 'failed']);
}
}
Step 3 - Memanggil Job dari Controller
Ubah method store atau buat route baru untuk memicu Job ini secara asynchronous.
app/Http/Controllers/DocumentController.php
public function analyze(Document $document)
{
dispatch(new AnalyzeThesisJob($document));
return back()->with('info', 'Analisis sedang berjalan di latar belakang.');
}
Step 4 - Menjalankan Queue Worker
Agar Job yang masuk ke antrean diproses, kita perlu menjalankan worker. Buka terminal baru dan jalankan:
php artisan queue:work
Sekarang, saat user klik tombol "Analisis", aplikasi akan langsung merespons dan proses AI yang berat akan dikerjakan oleh worker di balik layar.
kesimpulan
Dengan menggunakan Laravel Jobs, pengalaman pengguna (UX) aplikasi kita meningkat drastis. Tidak ada lagi layar freeze saat menunggu AI. Aplikasi terasa jauh lebih cepat dan profesional.
Pada Part 7 nanti, kita akan membangun fitur yang lebih cerdas lagi: Logic Link & Reference Checker. Kita akan mengajari AI cara mengecek "Benang Merah" antar bab skripsi.
Jika teman-teman ada kendala saat konfigurasi Queue (misal pakai Redis atau Database), silakan tanya di kolom komentar ya!
Semoga bermanfaat! 😊
Artikel ini dibaca sebanyak 107 kali
{ setTimeout(() => { showShimmer = false; }, 300); })"
:class="{'opacity-0': !loaded, 'opacity-100': loaded}"
class="lazy w-full h-auto rounded-xl border border-white dark:border-neutral-700/80 transition-opacity duration-500"
loading="lazy"
/>
SAWERIA
Memuat komentar...