Laravel AI SDK con Ollama en Laravel Sail: el asistente en local
Hola, bienvenido. En esta lección vamos a añadir un asistente con IA a invoices, con Laravel AI SDK y un modelo que corre en tu máquina con Ollama. Laravel AI SDK es el paquete oficial de Laravel para trabajar con modelos de lenguaje desde la aplicación. Ollama es el servidor que ejecuta el modelo en local. Vamos a añadir Ollama como servicio de Sail, a instalar el SDK, a configurar su proveedor ollama y a crear el agente InvoiceAssistant con su primer test.
¿Por qué en local y no con un proveedor en la nube? Porque así el curso no depende de ninguna cuenta ni de ninguna clave, todos trabajamos con el mismo modelo y los datos de las facturas no salen de tu máquina. En esta sección el asistente es la pieza que vamos a proteger, así que en esta lección lo dejamos funcionando y en las siguientes le damos tools y lo defendemos. Lo que es el AI SDK como producto, con RAG, streaming o proveedores en la nube, se queda fuera: tienes una presentación en el artículo Laravel AI SDK: cómo integrar IA en Laravel con Agents, Tools, Embeddings y más (se abre en una pestaña nueva), y si quieres ir más allá con Ollama, el curso RAG con Laravel y Ollama (se abre en una pestaña nueva).
Requisitos: memoria y versiones
Un modelo de lenguaje en local pide memoria. El que vamos a usar, qwen3:4b-instruct, ocupa 2,5 GB en disco, y cargado en Ollama ocupa unos 3,2 GB de memoria según ollama ps. A eso hay que sumarle MySQL y el contenedor de la aplicación, así que cuenta con tener al menos 6 GB de memoria disponibles para Docker. Revisa cuánta tiene asignada: en Docker Desktop, el límite por defecto es la mitad de la memoria de tu máquina y se cambia en sus ajustes de recursos, y con WSL2 se configura en el archivo .wslconfig de Windows, como explica la documentación de Docker.
No hace falta tarjeta gráfica. Sin ella, Ollama ejecuta el modelo en la CPU y cada respuesta tarda unos segundos, o algunas decenas de segundos si el modelo llama a una tool: en el equipo en el que se ha probado el curso, una pregunta que llamaba a una tool tardaba entre 5 y 45 segundos. Para un asistente que vamos a usar en local mientras lo protegemos, es suficiente.
Estas son las versiones con las que está probada la sección, a septiembre de 2026:
| Herramienta | Versión | Para qué la usamos |
|---|---|---|
| Laravel AI SDK | 1.0 | Agentes, tools y conversaciones desde Laravel |
| Ollama | 0.34 | El servidor que ejecuta el modelo, como servicio de Sail |
| Modelo | qwen3:4b-instruct |
Un modelo pequeño de la familia Qwen3 con soporte de tools |
¿Por qué qwen3:4b-instruct y no qwen3:4b, que es el nombre corto? Los 2 son la misma familia, ocupan lo mismo y soportan tools, pero qwen3:4b razona antes de responder, y en CPU ese razonamiento se come el tiempo. En nuestras pruebas, sus respuestas con tools pasaban de los 2 minutos y el SDK cortaba la petición. La variante instruct no hace ese paso previo y llama a las tools en una fracción del tiempo. Si tu equipo va sobrado y quieres probar otro modelo, lo vas a poder cambiar con una variable de entorno.
- 02Ollama como servicio de Sail
- 03Instalar Laravel AI SDK
- 04El proveedor ollama en config/ai.php
- 05El agente InvoiceAssistant
- 06El primer prompt desde Tinker
- 07El primer test con Agent::fake()