What if your Laravel app could read tickets, resolve issues, and answer customer questions β all on its own?
That's not a dream stack anymore. That's the Laravel AI SDK. π€
With Laravel 13, the AI SDK went production-stable as a first-party package. No Python. No third-party wrappers. No leaving PHP.
Here's what it gives you out of the box:
π§ Text generation β summaries, drafts, answers, transformations
π€ Tool-calling agents β AI that reads and writes your actual app data
π¨ Image generation β from plain-language prompts
π Audio synthesis β text to natural speech
π Embeddings + vector search β semantic search against your own database
π‘ Streaming responses β word-by-word output like ChatGPT
The agent system is the killer feature. You define PHP methods, decorate them with #[Tool], and the AI decides when and how to call them based on the user's prompt.
One prompt. Multiple tool calls. A natural language summary back to the user. All inside a standard Laravel class.
And it's fully provider-agnostic β switch from OpenAI to Anthropic by changing two lines in your .env. Zero code changes.
I wrote a full deep dive covering every feature with real code examples, queue integration, streaming, and production tips.
Are you already using AI in your Laravel apps? What are you building? π
#Laravel #PHP #ArtificialIntelligence #LaravelAI #WebDevelopment #OpenSource #PHP83 #100DaysOfBlogging https://t.co/PE6RIg49dx
The Laravel February 2026 changelog shipped quietly while everyone wrote about PHP Attributes and passkeys. Seven changes worth knowing.
1. Cache::integer() / Cache::boolean()
Before: (int) Cache::get('count', 0)
After: Cache::integer('count', 0)
Also: Cache::float(), Cache::string(), Cache::array()
Fixes the silent string-from-Redis problem.
2. request()->clamp()
Before: max(1, min(100, request()->integer('per_page', 50)))
After: request()->clamp('per_page', 1, 100, 50)
Return type is int. Works with PHPStan's int<1,100> annotation.
3. Lazy closures in firstOrCreate
Before: ['coordinates' => Geocoder::resolve($addr)] β always runs
After: fn () => ['coordinates' => Geocoder::resolve($addr)] β only on create
Same for createOrFirst.
4. Notification::afterSending()
public function afterSending($notifiable, $channel, $response): void {
$this->booking->update(['notified_at' => now()]);
}
Runs after dispatch on each channel. Replaces the NotificationSent listener pattern.
5. Validator::whenFails() / whenPasses()
Validator::make($data, $rules)
->whenFails(fn($v) => throw new InvalidArgumentException($v->errors()->first()));
Chainable. Useful outside the request cycle.
6. Factory::makeMany(3)
Before: User::factory()->count(3)->make()
After: User::factory()->makeMany(3)
Returns a collection of unsaved instances. Great for test payload shaping.
7. response()->withoutHeader('X-Debug')
Before: $response->headers->remove('X-Debug')
After: response($content)->withoutHeader('X-Debug')->withoutHeader('Server')
Chainable. Works in middleware for global header cleanup.
All seven confirmed from the official Laravel changelog. All shipping in 12.x β 13.
Full guide with practical patterns for each β linked here.
#Laravel #PHP #WebDevelopment #Laravel13 #OpenSource https://t.co/amVkutAdhm
This is crazy - I built a screen recorder in Laravel π€―
There's so much more possibility here, so much more I want to be able to do. It's going to be so simple to record, edit, and manage an entire video course π₯ Let's freakin' go!
#Symfony turns 20! π₯³ Two decades of code, community, and innovation β 20 candles and counting! Grateful for every contributor whoβs made this journey possible π«Ά
#PHP
Building in public: Updated PHP website β Light & Dark mode implemented. Entire site built with Vanilla CSS & minimal JS. Loads blazing fast! π
I am Abdullahi Jafar Musa, a senior software engineer.
I build softwares for:
Education
AOLS, https://t.co/Yfc5ItQA7R
Fintech
https://t.co/cy3D66FAr9 and https://t.co/rKS189vhqQ
Business
CrmTop, https://t.co/c8ui7SToQn, https://t.co/eY8fDBniKx, https://t.co/EFLVF8SOB6