Laravel AI SDK 1.0 suma Jev junto con Laravel 13.33
Laravel AI SDK 1.0 abandona la beta con el modelo Jev de TypeSafe para clasificaciones rápidas y económicas.
También incorpora streaming mediante Vercel Chat y AG-UI, además de aprobaciones humanas para herramientas de riesgo. Laravel 13.33 añade caché memoizada con etiquetas, el atributo Eloquent #[Refreshes], casts nullable, migraciones de índices sin bloqueo y nuevos controles para workers y pruebas.
Laravel AI SDK alcanza versión 1.0.0 tras meses en beta. El paquete oficial unifica OpenAI, Anthropic, Gemini y otros a través de una API: `composer require laravel/ai`.
composer require laravel/aiLa clasificación con el modelo Jev de TypeSafe destaca como novedad principal. Jev entrega decisiones rápidas y baratas: sí/no u opciones múltiples. Un ticket de soporte recibe marca `is_urgent` y encamina a `billing`, `technical` o `sales`. Las preguntas binarias aisladas usan `Str::of($message)->decide('Is this spam?');`. TypeSafe y OpenRouter funcionan hoy; más proveedores seguirán la misma interfaz.
El streaming ahora habla directamente Vercel Chat y AG-UI. Una ruta con `Vercel::chat($request)`, `withMessages()` y `stream()` carga el historial, lo persiste y procesa aprobaciones de herramientas pendientes. Los clientes AG-UI como CopilotKit cambian a `usingAgentUserInteractionProtocol()`.
Las herramientas delicadas requieren visto humano. Una clase `DeleteFile` implementa `Approvable` y `Tool` con `InteractsWithApprovals`. Aprobar, rechazar con razón visible al modelo, o editar argumentos antes de ejecutar.
Otras adiciones 1.0: middleware corre en cada paso de generación (no solo una vez); `ToolSearch` carga bajo demanda herramientas poco usadas en OpenAI y Anthropic; `CodeExecution` ejecuta código en sandboxes de Anthropic, OpenAI, Azure, Gemini y xAI. El historial vive en columna única `steps`—apps que consulten columnas viejas necesitan migración.
Laravel Boost suaviza la actualización: `composer require laravel/boost --dev`, luego `php artisan boost:install`, después ejecutar `/upgrade-ai-sdk-v1` en Claude Code o Cursor.
Laravel 13.33 trae ajustes prácticos menores. `Cache::memo()` ahora acepta `tags`, lecturas memorizadas dentro de una petición permanecen etiquetadas: `Cache::memo()->tags(['permissions'])->get(...)`. Comprobaciones repetidas de permisos o ajustes evitan viajes extras a Redis.
El atributo `#[Refreshes]` maneja columnas calculadas por la base. Marcar `#[Refreshes('net_salary')]` en un modelo donde `net_salary` procede de `base_salary + allowance - deduction` vía expresión almacenada. Tras crear o guardar, Laravel recarga esa columna en el objeto modelo. Múltiples columnas: `#[Refreshes('net_salary', 'tax_status')]`. Cada guardado paga una pequeña consulta (`select net_salary from employees where id = ? limit 1`). Para necesidades ocasionales, el `refresh()` manual sigue siendo mejor.
`AsCollection::nullable()` y `AsArrayObject::nullable()` guardan ahora NULL SQL real en lugar de la cadena "null", así `whereNull()` las encuentra. Los modificadores `inplace()` y `lock()` solicitan `ALGORITHM=INPLACE` y `LOCK=NONE` en migraciones de índices y claves foráneas de tablas grandes MySQL. Los atributos Form Request como `#[StopOnFirstFailure]` heredan de clases padre. `Worker::$killOnTimeout = false` permite a un job vencido lanzar excepción y limpiar sin matar el proceso worker. `mockArtisan()` y `realArtisan()` separan ejecuciones simuladas de reales sin cambiar `$mockConsoleOutput`.
Tribuna de lectores
Aún no hay aportaciones — abre el debate.
Inicia la conversación
Sin cuenta ni contraseña — introduce tu correo y te enviamos un enlace de acceso de un solo uso. ¿Primera vez? Todo se configura automáticamente.
Tu valoración se aplicará automáticamente al iniciar sesión.
Revisa tu bandeja de entrada
Hemos enviado un enlace de acceso a …. Ábrelo en este dispositivo — esta pestaña te conectará automáticamente.
¿No llega nada? Mira en la carpeta de spam — y marca el correo como «No es spam» para que la próxima vez llegue directo.