The Daily Commit · Édition de rubrique La une PHP AI Dev EN DE FR ES

The Php Times

Versions — Écosystème

Laravel AI SDK 1.0 adopte Jev et les validations humaines


Laravel AI SDK 1.0 sort de bêta avec le modèle Jev de TypeSafe pour les classifications rapides et économiques.

MEDIUM · LARAVEL, 25 septembre 2026 sélectionné par Heiko

La version ajoute aussi le streaming Vercel Chat et AG-UI, ainsi que l'approbation humaine des appels sensibles. Laravel 13.33 apporte le cache mémoïsé avec tags, l'attribut Eloquent #[Refreshes], les casts nullable et plusieurs outils de migration, de test et de gestion des workers.

Laravel AI SDK atteint la version 1.0.0 après plusieurs mois de bêta. Le package officiel unifie OpenAI, Anthropic, Gemini et d'autres fournisseurs via une seule API: `composer require laravel/ai`.

terminal
composer require laravel/ai

La classification avec le modèle Jev de TypeSafe est la vedette. Jev fournit des décisions rapides et peu coûteuses: oui/non ou choix multiples. Un ticket de support reçoit la marque `is_urgent` et s'achemine vers `billing`, `technical` ou `sales`. Les questions binaires isolées usent `Str::of($message)->decide('Is this spam?');`. TypeSafe et OpenRouter fonctionnent aujourd'hui; d'autres fournisseurs adopteront la même interface.

Le streaming parle directement les protocoles Vercel Chat et AG-UI. Une route avec `Vercel::chat($request)`, `withMessages()` et `stream()` charge l'historique, le sauvegarde et traite les approbations d'outils en attente. Les clients AG-UI comme CopilotKit basculent vers `usingAgentUserInteractionProtocol()`.

Les outils sensibles exigent une approbation humaine. Une classe `DeleteFile` implémente `Approvable` et `Tool` avec `InteractsWithApprovals`. Approuver, rejeter avec une raison que le modèle voit, ou modifier les arguments avant exécution.

Les autres additions 1.0: le middleware tourne à chaque étape de génération (non une seule fois); `ToolSearch` charge à la demande les outils rarement utilisés sur OpenAI et Anthropic; `CodeExecution` exécute du code dans les environnements d'Anthropic, OpenAI, Azure, Gemini et xAI. L'historique se range dans une colonne `steps` unique—les apps interrogeant les anciennes colonnes nécessitent une migration.

Laravel Boost lisse la mise à jour: `composer require laravel/boost --dev`, puis `php artisan boost:install`, ensuite `/upgrade-ai-sdk-v1` dans Claude Code ou Cursor.

Laravel 13.33 apporte des petites retouches pratiques. `Cache::memo()` accepte maintenant `tags`, les lectures mémoïsées durant une requête restent étiquetées: `Cache::memo()->tags(['permissions'])->get(...)`. Les vérifications répétées de droits ou paramètres évitent des appels Redis supplémentaires.

L'attribut `#[Refreshes]` gère les colonnes calculées par la base. Marquer `#[Refreshes('net_salary')]` sur un modèle où `net_salary` provient de `base_salary + allowance - deduction` via expression stockée. Après création ou mise à jour, Laravel recharge cette seule colonne dans l'objet modèle. Plusieurs colonnes: `#[Refreshes('net_salary', 'tax_status')]`. Chaque sauvegarde coûte une petite requête (`select net_salary from employees where id = ? limit 1`). Pour les besoins rares, le `refresh()` manuel reste préférable.

`AsCollection::nullable()` et `AsArrayObject::nullable()` enregistrent maintenant le NULL SQL réel au lieu de la chaîne "null", donc `whereNull()` les trouve. Les modifieurs `inplace()` et `lock()` demandent `ALGORITHM=INPLACE` et `LOCK=NONE` sur les migrations d'index et clés étrangères de grandes tables MySQL. Les attributs Form Request comme `#[StopOnFirstFailure]` héritent des classes parentes. `Worker::$killOnTimeout = false` permet à un job expiré de lever une exception et de nettoyer sans tuer le processus worker. `mockArtisan()` et `realArtisan()` séparent les exécutions simulées des réelles sans basculer `$mockConsoleOutput`.

Lire la source originale (en anglais) ↗

Évaluer cet article : 0

Tribune des lecteurs

Pas encore de contributions — lance le débat.

← Écosystème — Page B1

"All the Code That's Fit to Ship" · The Daily Commit · Édition écran · Mentions légales · Politique de confidentialité