Belajar Laravel - Laravel 13 Modern Features
Episode 20 of 24

Belajar Laravel - Laravel 13 Modern Features

Menjelajahi fitur modern Laravel 13: Laravel AI SDK untuk text generation, agents, image & embeddings, PHP Attributes untuk model/controller/job, Cache::touch(), serta langkah upgrade dari Laravel 12.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Laravel 13, rilis 17 Maret 2026, bukan sekadar update minor — ia membawa fitur yang mengubah cara kita membangun aplikasi: Laravel AI SDK untuk integrasi AI production-grade, PHP Attributes yang merampingkan deklarasi, dan serangkaian perbaikan performa. Dan semuanya datang dengan zero breaking changes dari Laravel 12.

Di episode ini kita bedah fitur-fitur yang paling berguna, lalu praktikkan upgrade dari Laravel 12 ke 13.

Upgrade dari Laravel 12 ke 13

Laravel 13 dirancang sebagai seamless upgrade. Pertama pastikan PHP sudah 8.3+ (dari episode 0), lalu:

Upgrade ke Laravel 13
composer require laravel/framework:"^13.0" --with-all-dependencies
php artisan migrate

Langkah tambahan yang disarankan untuk aplikasi nyata:

  1. Baca dokumen upgrade resmi di laravel.com/docs/13.x/upgrade.
  2. Jalankan test suite (episode 21) sebelum dan sesudah upgrade.
  3. composer outdated untuk mengecek package lain yang harus di-upgrade.
  4. Uji endpoint inti: auth, CRUD, queue, dan API.

Dengan zero breaking changes, sebagian besar aplikasi 12 langsung jalan di 13 — upgrade terasa seperti update biasa.

Laravel AI SDK

Fitur paling menonjol: Laravel AI SDK — abstraksi resmi untuk layanan AI, production-stable sejak rilis v13. Ia mendukung text generation, tool-calling agents, image, audio, dan embeddings, dengan provider OpenAI dan Anthropic serta mekanisme retry dan integrasi queue bawaan.

Install AI SDK
composer require laravel/ai

Text Generation

Generate teks sederhana
use Illuminate\Support\Facades\AI;
 
$response = AI::text('Berikan deskripsi singkat tentang Laravel.');
 
echo $response->text();  // output string

Tool-Calling Agents

Agent bisa memanggil tool/fungsi kalian sendiri selama percakapan — fondasi untuk asisten yang benar-benar berinteraksi dengan aplikasi:

Agent dengan tool
use Illuminate\Support\Facades\AI;
 
$agent = AI::agent()
    ->withTools([new SearchPostsTool()])
    ->ask('Tulis ringkasan 3 post paling populer minggu ini.');

Structured Output dan Embeddings

Output terstruktur
$result = AI::text('Ekstrak judul, penulis, dan tanggal dari teks ini: ...')
    ->structured(PostMeta::class);
Embeddings
$vector = AI::embeddings('Teks untuk di-embed')->embedding();

Retry dan Queue

Panggilan AI mahal dan bisa gagal. SDK mendukung retry otomatis dan integrasi queue sehingga proses panjang tidak membekukan request:

AI dengan retry & queue
use Illuminate\Support\Facades\AI;
 
$response = AI::text('Ringkas artikel ini.')
    ->retry(3)
    ->queue()
    ->with('result');

Note

Konfigurasi provider (API key, model) diatur di config/ai.php — API key tinggal di .env, jangan pernah di-commit. Untuk production, kombinasikan dengan queue (episode 14) agar panggilan AI yang lambat tidak menahan request web.

PHP Attributes: Deklarasi yang Lebih Rapi

Laravel 13 memakai PHP 8 Attributes untuk menggantikan konfigurasi yang sebelumnya berupa konvensi atau method terpisah. Contoh paling terlihat:

Controller Attributes

Attribute di controller
use App\Http\Controllers\Controller;
use App\Models\Post;
use Illuminate\Http\Request;
use Laravel\Attributes\Route;
 
class PostController extends Controller
{
    #[Route('GET', '/posts', name: 'posts.index')]
    public function index()
    {
        // ...
    }
}

Model Attributes

Attribute di model
use App\Models\Post;
use Illuminate\Database\Eloquent\Attributes\Table;
 
#[Table('articles')]
class Post extends Model
{
    // ...
}

Job & Listener Attributes

Attribute di job/listener
use Laravel\Attributes\Queue;
 
#[Queue('emails', tries: 3)]
class SendWelcomeEmail implements ShouldQueue
{
    // ...
}

Attributes menaruh metadata di dekat deklarasinya — lebih mudah dibaca daripada konfigurasi yang tersebar, dan tetap bisa dipakai bersamaan dengan pendekatan lama. Fitur ini opsional: aplikasi kalian tidak wajib mengadopsinya.

Tip

Jangan terburu-buru menulis ulang kode yang sudah jalan hanya demi attributes. Aturan praktis: adopsi attributes saat menulis kode baru atau saat refactor area yang memang sedang disentuh — gradual adoption, bukan big-bang rewrite.

Cache::touch() dan Perbaikan Performa

Fitur cache baru sudah kita bahas di episode 13: Cache::touch() memperpanjang TTL tanpa refetch. Selain itu Laravel 13 membawa:

  • Boot & memory optimization — framework lebih ringan saat boot, terutama untuk aplikasi dengan banyak provider.
  • Reverb DB driver (episode 19) — WebSocket tanpa Redis.
  • Penyempurnaan console output dan error message yang lebih jelas.
Cache::touch() - ingat lagi di v13
Cache::remember('popular-posts', 300, fn () => ...);
Cache::touch('popular-posts', 300);   // perpanjang tanpa refetch

Memanfaatkan Fitur Baru Secara Opsional

Filosofi Laravel 13: adopsi bertahap. Tidak ada yang wajib diganti. Peta jalan yang masuk akal untuk aplikasi yang baru upgrade:

FiturMulai pakai saat
Cache::touch()Ada data yang sering diakses dan TTL-nya ingin diperpanjang
PHP AttributesMenulis controller/model/job baru
Reverb DB driverButuh real-time tapi belum punya Redis
AI SDKButuh fitur AI: ringkasan, asisten, klasifikasi teks

Penutup

Inti yang harus dibawa pulang:

  • Upgrade 12 ke 13: composer require laravel/framework:"^13.0"zero breaking changes.
  • Laravel AI SDK: text, agents, image, audio, embeddings — dengan retry & queue bawaan.
  • PHP Attributes merampingkan deklarasi controller, model, job — opsional, adopsi bertahap.
  • Cache::touch() untuk sliding TTL; boot & memory dioptimalkan.

Di episode 21 selanjutnya kita akan membahas testing dengan Pest/PHPUnit & Dusk — feature & unit tests, sintaks Pest, database testing dengan RefreshDatabase, dan browser E2E dengan Laravel Dusk. Sampai jumpa di episode 21!

Belajar Laravel - Laravel 13 Modern Features | Belajar Laravel