Laravel 13 llegó con un cambio que pesa más que cualquier método nuevo de Eloquent: su SDK de IA (laravel/ai) pasó de beta a paquete estable de primera parte. Agentes con herramientas, salida estructurada, streaming y ocho proveedores de IA distintos detrás de una sola API. Si hasta ahora armabas tus integraciones de IA a mano con el cliente HTTP de Laravel o con un paquete suelto de la comunidad, el punto de partida cambió.
Vamos a lo concreto: qué trae el SDK, cómo se usa con código real, y qué le sumó Laravel entre el lanzamiento en marzo y Laracon US en julio, porque en cuatro meses ya no es el mismo paquete.
No hace falta que sepas programar para sacar algo de esto. Si decidís la tecnología de tu negocio pero no escribís código, andá directo a «Qué significa esto para tu próximo proyecto», más abajo. Si programás, quedáte con los ejemplos: están verificados contra la documentación oficial de Laravel, no inventados.
Qué es el Laravel AI SDK y por qué no es «un paquete más»
El SDK vive sobre Prism PHP, el paquete de la comunidad que ya resolvía la normalización entre proveedores: cada IA responde distinto por debajo, y Prism ya sabía traducir esas diferencias a una sola forma de pedir las cosas. TJ Miller, su creador, hoy trabaja en el equipo de Laravel, y se nota en el diseño: laravel/ai es la capa que usa tu aplicación, Prism sigue hacienda el trabajo pesado por debajo. En Laravel 12 esto existía como beta. En Laravel 13 es la recomendación oficial para proyectos nuevos.
Con una sola API podés pedir texto, generar imágenes, transcribir o sintetizar audio, crear embeddings (una especie de huella numérica que le permite a un buscador comparar significados, no solo palabras) y construir agentes con herramientas y memoria de conversación. Estos son los ocho proveedores que soporta de fábrica:
- OpenAI
- Anthropic
- Gemini
- Groq
- xAI
- DeepSeek
- Mistral
- Ollama (para modelos locales)
Instalación y cómo cambiar de proveedor sin tocar código
La instalación son tres comandos:
composer require laravel/ai
php artisan vendor:publish --provider="LaravelAiAiServiceProvider"
php artisan migrate
La migración crea las tablas agent_conversations y agent_conversation_messages: la memoria de conversación viene resuelta, no hay que diseñar tu propio esquema. Los proveedores se configuran en config/ai.php:
'providers' => [
'openai' => [
'driver' => 'openai',
'key' => env('OPENAI_API_KEY'),
],
'anthropic' => [
'driver' => 'anthropic',
'key' => env('ANTHROPIC_API_KEY'),
],
'local' => [
'driver' => 'openai-compatible',
'url' => env('LOCAL_AI_URL'),
'key' => env('LOCAL_AI_API_KEY'),
],
],
'models' => [
'text' => [
'default' => 'gpt-4o-mini',
],
],
Cambiar de proveedor en una llamada puntual es un parámetro, no una reescritura:
use LaravelAiEnumsLab;
$response = agent()->prompt(
'Explica que es Laravel en dos lineas',
provider: Lab::Anthropic,
model: 'claude-sonnet-5',
);
Agentes con herramientas: el corazón del SDK
Pensálo así: un agente es como un empleado con instrucciones fijas y una caja de herramientas permitida. Vos le decís qué puede usar (buscar un precio, generar un número, escribir un archivo) y él decide solo cuándo usar cada una según lo que le pidan.
En código, un agente es una clase de PHP que encapsula instrucciones, herramientas y, opcionalmente, el esquema de salida. Se genera con Artisan:
php artisan make:agent SalesCoach
php artisan make:tool RandomNumberGenerator
La herramienta es una clase separada que declara su propio esquema de parámetros con JsonSchema, el mismo contrato que ya usa Laravel para validación en otras partes del framework:
class RandomNumberGenerator implements Tool
{
public function description(): string
{
return 'Genera numeros aleatorios criptograficamente seguros.';
}
public function handle(Request $request): string
{
return (string) random_int($request['min'], $request['max']);
}
public function schema(JsonSchema $schema): array
{
return [
'min' => $schema->integer()->min(0)->required(),
'max' => $schema->integer()->required(),
];
}
}
El agente declara la herramienta y ya queda disponible para el modelo, que decide solo cuándo llamarla:
class SalesCoach implements Agent, HasTools
{
use Promptable;
public function instructions(): string
{
return 'Eres un coach de ventas que analiza transcripciones.';
}
public function tools(): iterable
{
return [new RandomNumberGenerator];
}
}
// Uso:
$response = (new SalesCoach)->prompt('Analiza esta llamada de ventas...');
Cuando necesitas datos, no prosa: salida estructurada
La diferencia es simple: en vez de que el modelo te devuelva un párrafo que después hay que interpretar a mano, te devuelve datos ya organizados en los campos que vos definiste, como un formulario lleno en vez de una carta. Con HasStructuredOutput, la respuesta llega tipada según el esquema que definas:
public function schema(JsonSchema $schema): array
{
return [
'feedback' => $schema->string()->required(),
'score' => $schema->integer()->min(1)->max(10)->required(),
'metadata' => $schema->object(fn ($s) => [
'confianza' => $s->string()->enum(['baja', 'media', 'alta'])->required(),
])->required(),
];
}
// Uso:
$response = (new SalesCoach)->prompt('Analiza esta transcripcion...');
$response['score']; // 8
$response['metadata']['confianza']; // 'alta'
Memoria de conversación sin montar tu propia tabla
Agregando Conversational y el trait RemembersConversations, el agente recuerda el hilo entre llamadas usando las tablas que creó la migración inicial:
$response = (new SalesCoach)->forUser($user)->prompt('Hola');
$id = $response->conversationId;
// Mas tarde, en otra request:
$response = (new SalesCoach)->continue($id, as: $user)->prompt('Contame mas de eso');
Streaming para que tu usuario no mire una pantalla en blanco
Cualquier agente puede transmitir la respuesta palabra por palabra en vez de hacer esperar el texto completo, y devolverla directo desde una ruta:
Route::get('/coach', function () {
return (new SalesCoach)->stream('Analiza esta transcripcion...');
});
También soporta el protocolo de datos de Vercel AI SDK de fábrica, útil si tu frontend ya está armado con esa librería del lado de React o Vue.
Lo que sumó el SDK entre marzo y Laracon US 2026
Acá está la parte que la mayoría de las guías publicadas en marzo no cubren: el paquete no se quedó quieto. Para Laracon US, el 29 de julio de 2026, ya había sumado funciones que cambian cómo se usa en producción:
- Aprobación humana antes de actuar (Human-in-the-Loop). Podés interceptar una llamada a herramienta antes de que se ejecute, y aprobarla, rechazarla o modificarla. Clave para lo irreversible: borrar, cobrar, enviar un correo.
- Herramientas de sistema de archivos. Un agente puede leer, escribir y administrar archivos de forma nativa, sin cablear un paquete aparte para eso.
Str::summarize(). Resume cualquier texto con el modelo más barato disponible, en una sola línea de código.- Embeddings multimodales. Ya no es solo texto, también genera esa huella numérica para imágenes y audio, con caché automático.
- Proveedores compatibles con OpenAI. Apuntá el SDK a cualquier servicio que hable el mismo idioma que la API de OpenAI, la misma idea que ya viste arriba en el proveedor
localdel config.
Laravel AI SDK vs Prism PHP: ¿cuál usar en un proyecto nuevo?
Prism sigue activo y no desaparece, pero para un proyecto que arranca hoy sobre Laravel 13 la recomendación del propio equipo del framework es clara: menos dependencias externas y una integración más prolija con el resto del ecosistema (colas, caché, testing) inclinan la balanza hacia el SDK de primera parte.
| Laravel AI SDK | Prism PHP | |
|---|---|---|
| Mantenido por | Equipo de Laravel | Comunidad (autor ahora en Laravel) |
| Dependencias | Ninguna externa | Prism como dependencia directa |
| Agentes y memoria | Incluidos, con tablas propias | Hay que armarlo a mano |
| Mejor para | Proyecto nuevo en Laravel 13 | Proyectos en Laravel 12 o fuera de Laravel |
Qué significa esto para tu próximo proyecto
Si venías evaluando Laravel contra Node.js para un proyecto que necesita IA de entrada, esto suma un argumento real a favor de Laravel: no hace falta armar la integración a mano ni evaluar cinco paquetes sueltos de la comunidad, el camino oficial ya cubre agentes, herramientas, salida estructurada y memoria de conversación desde el primer commit.
El concepto de «herramientas» que usan estos agentes es primo cercano de lo que estándares como Model Context Protocol (MCP) resuelven a nivel de todo el ecosistema: funciones que un modelo puede invocar de forma controlada. Si Anthropic es uno de tus proveedores, revisá también qué cambió con Claude Fable 5.1, el modelo que aparece justo en el ejemplo oficial de la documentación del SDK.
Preguntas frecuentes
¿Necesito instalar algo aparte para usar IA en Laravel 13?
No. El SDK viene con composer require laravel/ai y una migración. No hace falta Redis, una cola aparte ni un paquete de terceros para arrancar, aunque podés sumar colas después si tus agentes hacen tareas largas.
¿Qué proveedores de IA soporta el SDK de Laravel?
OpenAI, Anthropic, Gemini, Groq, xAI, DeepSeek, Mistral y Ollama de fábrica, más cualquier servicio compatible con la API de OpenAI mediante el driver openai-compatible, útil para modelos propios o self-hosted.
¿El SDK de Laravel reemplaza a Prism PHP?
Para proyectos nuevos, sí es la opción recomendada por el propio equipo de Laravel. Prism sigue manteniéndose y no vas a tener problemas si ya lo usás en un proyecto existente, pero no hay motivo para elegirlo sobre el SDK oficial en un proyecto que arranca hoy en Laravel 13.
¿Cuánto cuesta usar el SDK de IA de Laravel?
El paquete es gratis y de código abierto. Lo único que pagás es el consumo de tokens de cada proveedor que conectes, OpenAI, Anthropic o el que elijas, exactamente igual que si llamaras a su API directo.



