Introduzione
Laravel AI SDK offre un’API unificata ed espressiva per interagire con provider AI come OpenAI, Anthropic, Gemini. Puoi costruire agenti intelligenti con tool e output strutturato, generare immagini, sintetizzare/trascrivere audio, creare embedding vettoriali — tutto con un’interfaccia coerente in stile Laravel.Laravel AI SDK è il pacchetto ufficiale aggiunto in Laravel 13. Distribuito come
laravel/ai, permette di usare più provider AI con la stessa API.Supporto dei provider
Installazione
1
Installa il pacchetto
2
Pubblica config e migration
3
Esegui le migration
Crea le tabelle
agent_conversations e agent_conversation_messages per lo storico delle conversazioni.Configurazione
Variabili d’ambiente
Configura le API key in.env:
config/ai.php.
URL base personalizzato
Con proxy:Provider OpenAI-Compatible
Per LM Studio, vLLM, Together, Fireworks, gateway locali, usa il driveropenai-compatible. url è obbligatorio; key viene inviata come Bearer token.
Enum Lab
Agenti
Blocco di base dell’SDK. Crea con:app/Ai/Agents/:
Prompt
make() statico usa il container:
Contesto conversazionale
ImplementandoConversational e definendo messages(), passi la cronologia al modello.
Con il trait RemembersConversations la persistenza avviene automaticamente su DB.
forUser() e continue():
Output strutturato
ConHasStructuredOutput e schema():
Oggetti annidati
Array di oggetti
anyOf
Allegati
Streaming
then():
Protocollo Vercel AI SDK
Broadcasting
Escludere eventi troppo grandi
Alcune piattaforme limitano i messaggi WebSocket (~10KB). ConWithoutBroadcasting escludi eventi grandi.
agent_conversation_messages continua: il frontend riceverà i dati completi al termine.
Coda
Tool
I tool consentono all’AI di chiamare funzioni del tuo codice.Tool di ricerca per similarità
Tool di file storage
ConFileStorage dai all’agente accesso ai disk.
Illuminate\Support\Collection):
Tool MCP
Se usi Laravel MCP, esponi all’agente i tool di server MCP.Richiede il pacchetto Laravel MCP.
Tool nativi del provider
Web search
Anthropic, OpenAI, Gemini, OpenRouter.Web fetch
Anthropic, Gemini.File search
OpenAI, Gemini.Sub-agenti
Un agente può esporre altri agenti come tool.CanActAsTool personalizzi il nome/descrizione:
CanActAsTool, Laravel usa il nome della classe e una descrizione generica. Ogni chiamata al sub-agente è indipendente.
Middleware
then():
Agenti anonimi
Attributi di configurazione
Opzioni del provider
Generazione immagini
OpenAI, Gemini, xAI.Salvataggio
In coda
Sintesi vocale (TTS)
OpenAI, ElevenLabs.Salvataggio
In coda
Trascrizione (STT)
OpenAI, ElevenLabs, Mistral.Diarizzazione
In coda
Embedding
Vector search (pgvector)
1
Migration
2
Modello
3
Query per similarità
Cache degli embedding
config/ai.php:
Reranking
Cohere, Jina.Reranking di collection
Gestione file
Riferire file caricati
Recuperare/eliminare
Provider
Opzioni provider-specifiche
Vector store
Aggiungere file
Rimuovere file
Failover
Test
Agent
Con agenti a output strutturato senza dati espliciti, Laravel genera dati fake conformi allo schema.
Immagini
Audio
Trascrizione
Embedding
Reranking
File
Vector store
Eventi
Agenti
Agenti
PromptingAgent— prima dell’invio del promptAgentPrompted— dopo l’invioStreamingAgent— inizio streamingAgentStreamed— fine streamingInvokingTool— prima della chiamata al toolToolInvoked— dopo la chiamata al tool
Immagini/audio/trascrizione
Immagini/audio/trascrizione
GeneratingImage/ImageGeneratedGeneratingAudio/AudioGeneratedGeneratingTranscription/TranscriptionGenerated
Embedding/reranking
Embedding/reranking
GeneratingEmbeddings/EmbeddingsGeneratedReranking/Reranked
File/store
File/store
StoringFile/FileStored/FileDeletedCreatingStore/StoreCreatedAddingFileToStore/FileAddedToStoreRemovingFileFromStore/FileRemovedFromStore