INTRODUCCIÓN A LARAVEL AI SDK: LA FORMA OFICIAL DE INTEGRAR IA EN LARAVEL
Laravel AI SDK es el paquete oficial de Laravel ("laravel/ai") que permite integrar fácilmente Inteligencia Artificial con: OpenAI, Gemini, Claude, Grok, etc. de forma unificada y elegante.
Instalación
Ejecutar los siguientes comandos en el proyecto Laravel:
composer require laravel/ai
Publicar la configuración y las migraciones:
php artisan vendor:publish --provider="Laravel\Ai\AiServiceProvider"
php artisan migrate
Las migraciones crean tablas para guardar historial de conversaciones.
Configuración (.env)
Agrega las claves API en el fichero ".env":
GEMINI_API_KEY=AIzaSy... # Para Gemini
OPENAI_API_KEY=sk-... # Si usas OpenAI
ANTHROPIC_API_KEY=sk-ant-... # Claude
XAI_API_KEY=... # Grok
Crear el primer "Agent"
Un "Agent" es como un "asistente inteligente" con personalidad e instrucciones:
php artisan make:agent AsistenteBasico
El comando anterior crea el archivo en "app/Ai/Agents/AsistenteBasico.php":
namespace App\Ai\Agents;
use Laravel\Ai\Contracts\Agent;
use Laravel\Ai\Promptable;
class AsistenteBasico implements Agent
{
use Promptable;
public function instructions(): string
{
return "Eres un asistente útil, amigable y experto en Laravel.
Responde siempre en español de forma clara y con ejemplos cuando sea posible.";
}
// Opcional: Forzar un proveedor específico
public function provider(): string
{
return 'gemini'; // gemini, openai, anthropic, etc.
}
}
Uso Básico en un Controlador
namespace App\Http\Controllers;
use App\Ai\Agents\AsistenteBasico;
use Illuminate\Http\Request;
class AiController extends Controller
{
public function preguntar(Request $request)
{
$request->validate([
'mensaje' => 'required|string|max:2000',
]);
$respuesta = (new AsistenteBasico())
->model('gemini-2.5-flash') // gemini-2.5-pro, gpt-4o-mini, etc.
->prompt($request->mensaje);
return response()->json([
'respuesta' => (string) $respuesta
]);
}
}
Crear la Ruta
// routes/web.php o api.php
use App\Http\Controllers\AiController;
Route::post('/ai/preguntar', [AiController::class, 'preguntar']);
Probar con Postman o un formulario:json:
{
"mensaje": "¿Cómo se crea un modelo en Laravel?"
}
Otras Funciones Básicas Útiles
- Streaming (respuesta en tiempo real):
return (new AsistenteBasico())
->model('gemini-2.5-flash')
->stream($request->mensaje);
- Cambiar modelo fácilmente:
->model('gemini-2.5-pro')
- Con historial de conversación (memoria):
$respuesta = (new AsistenteBasico())
->conversation($idConversacion) // ID de la tabla agent_conversations
->prompt($mensaje);
- Generar imagen (básico):
$imagen = \Laravel\Ai\Image::of('Un logo moderno para una app de tareas con colores azul y blanco')
->provider('gemini')
->generate();