Skip to main content

Introductie

De Laravel AI SDK biedt een uniforme, expressieve API om te communiceren met AI-providers zoals OpenAI, Anthropic en Gemini. Met de AI SDK bouw je intelligente agents met tools en gestructureerde output, genereer je afbeeldingen, doe je spraaksynthese en transcriptie, en maak je vector-embeddings — allemaal via één consistente, Laravel-achtige interface.
De Laravel AI SDK is een officieel package dat is toegevoegd in Laravel 13. Het wordt aangeboden als laravel/ai en laat je meerdere AI-providers via een uniforme API gebruiken.

Overzicht van providerondersteuning

Installatie

1

Het package installeren

Installeer de Laravel AI SDK met Composer.
2

Configuratiebestand en migrations publiceren

Publiceer het configuratiebestand en de migrations met het vendor:publish Artisan-commando.
3

Migrations uitvoeren

Voer de databasemigrations uit. Hiermee worden de tabellen agent_conversations en agent_conversation_messages aangemaakt, die worden gebruikt voor het opslaan van gespreksgeschiedenis.

Configuratie

Omgevingsvariabelen

Stel de API-sleutels van de AI-providers die je gebruikt in via het .env-bestand.
De standaardmodellen voor tekst, afbeeldingen, audio, transcriptie en embeddings kun je ook instellen in config/ai.php.

Aangepaste basis-URL’s

Wil je via een proxyservice werken, dan kun je per provider een aangepaste URL instellen.
Aangepaste basis-URL’s zijn beschikbaar voor OpenAI, Anthropic, Gemini, Groq, Cohere, DeepSeek, xAI en OpenRouter.

OpenAI-Compatible providers

Gebruik je een OpenAI-compatibele API zoals LM Studio, vLLM, Together, Fireworks of een lokale gateway, dan kun je de provider configureren met de openai-compatible driver. url is verplicht; geef je een key op, dan wordt die als Bearer-token meegestuurd.
Na de configuratie kun je de provider, net als andere providers, op naam aanspreken.
Stel je een standaard tekstmodel in, dan hoef je niet telkens een model op te geven.
Om aan alle uitgaande requests aangepaste HTTP-headers toe te voegen, definieer je een headers-array in de configuratie. Dit is handig voor endpoints die andere authenticatie- of identificatieheaders nodig hebben dan een Bearer-token.
OpenAI-Compatible providers ondersteunen tekstgeneratie, streaming, tools, gestructureerde output, afbeeldingsbijlagen, embeddings en transcriptie. Heeft je endpoint extra velden in de request body nodig, gebruik dan provideropties.

Embeddings met OpenAI-Compatible

Omdat er voor een willekeurig endpoint geen bekende modellen zijn, moet je een standaard embeddingsmodel configureren om embeddings() met een OpenAI-Compatible provider te gebruiken. Laat je dimensions weg, dan wordt de parameter niet in de request opgenomen en wordt het modelspecifieke aantal dimensies gebruikt.

Transcriptie met OpenAI-Compatible

Om Transcription met een OpenAI-Compatible provider te gebruiken, configureer je een standaard transcriptiemodel. De audio wordt als een standaard multipart-request geüpload naar /audio/transcriptions van je endpoint.
De OpenAI-Compatible en Groq providers ondersteunen geen sprekerscheiding. Roep je bij deze providers de diarize-methode aan, dan wordt er een exception gegooid.

Lab enum

Gebruik de Lab enum om in je code naar providers te verwijzen.

Agents

Agents zijn de fundamentele bouwstenen van de Laravel AI SDK. Met het make:agent-commando genereer je een agentklasse.
Gegenereerde agents worden geplaatst in de map app/Ai/Agents/. Hieronder zie je een voorbeeld van een agent die alle belangrijke interfaces implementeert.

Prompts

Met de prompt()-methode stuur je een bericht naar een agent.
Met de statische make()-methode maak je een instantie waarbij de dependencies via de container worden geresolved.
Provider, model en timeout kun je overschrijven via de argumenten van prompt().

Ruwe HTTP-respons

De respons van een tekstgenererende agent heeft een raw-property die de ruwe HTTP-respons van de provider-API-aanroep teruggeeft. Hiermee kun je providerspecifieke informatie ophalen die niet in de gemeenschappelijke respons van de AI SDK zit, zoals rate-limit-headers of request-ID’s.
In een toolaanroepenloop bewaart elke stap de ruwe respons van zijn eigen request.
raw is null bij streaming, bij Bedrock (omdat de API via de AWS SDK wordt aangeroepen) en bij fake-responses waarbij geen expliciete withRawResponse is opgegeven.

Gesprekscontext

Implementeer je de Conversational-interface en definieer je een messages()-methode, dan kun je eerdere gespreksgeschiedenis aan de AI doorgeven. Met de RemembersConversations-trait wordt de gespreksgeschiedenis automatisch opgeslagen in en opgehaald uit de database.
Start een gesprek met forUser() en gebruik het teruggegeven conversationId om het gesprek voort te zetten met continue().

Gestructureerde output

Implementeer je de HasStructuredOutput-interface en definieer je een JSON-schema in de schema()-methode, dan ontvang je de respons van de AI als gestructureerde data.

Geneste objecten

Arrays van objecten

anyOf (keuze uit meerdere schema’s)

Kan een waarde met een van meerdere schema’s overeenkomen, gebruik dan de anyOf-methode.

Bijlagen

Via het attachments-argument geef je documenten en afbeeldingen door aan een agent.
Afbeeldingen voeg je op dezelfde manier toe.

Streaming

Met de stream()-methode geef je de respons in chunks terug. Dit is ideaal om lange responses in realtime naar de frontend te sturen.
Met een then()-callback beschrijf je wat er moet gebeuren nadat de streaming is voltooid.
Je kunt ook handmatig over de stream itereren.

Vercel AI SDK-protocol

Gebruik je de Vercel AI SDK op de frontend, roep dan usingVercelDataProtocol() aan.

Broadcasting

Je kunt de events van een stream naar een broadcastkanaal sturen, bijvoorbeeld via Laravel Echo.
Met broadcastOnQueue() kun je via de queue broadcasten.

Grote events overslaan

Sommige broadcastplatformen beperken WebSocket-berichten tot ongeveer 10KB. Stream-events met veel data, zoals grote toolresultaten, kunnen deze limiet overschrijden waardoor het broadcasten mislukt. Met het WithoutBroadcasting-attribuut kun je specifieke eventtypes uitsluiten van broadcasting.
Uitgesloten events worden niet gebroadcast, maar worden nog steeds opgeslagen in de tabel agent_conversation_messages. Daardoor kan de frontend na afloop van de stream alsnog alle tooldata ophalen. Dit werkt zowel via de queue (broadcastOnQueue) als synchroon (broadcast / broadcastNow).

Queues

Met de queue()-methode zet je een prompt op de queue voor asynchrone verwerking.

Tools

Met tools kan de AI functies in je code aanroepen. Met het make:tool-commando genereer je een toolklasse.
Registreer tools in de tools()-methode van de agent.

Validatie van toolargumenten

Met de schema-methode van een tool kun je het type van de ontvangen argumenten beperken, maar dat garandeert niet dat de waarden die het model doorgeeft ook correct zijn. Gebruik de validate-methode van de request om de toolargumenten te valideren.
Mislukt de validatie, dan wordt de foutmelding als toolresultaat aan het model teruggegeven, zodat het model de argumenten kan corrigeren en de tool opnieuw kan aanroepen.

Similarity search tool

Je kunt eenvoudig een similarity search tool toevoegen die vector-embeddings gebruikt.
Je kunt ook opties opgeven.
Met een closure definieer je je eigen zoeklogica.
Met withDescription() pas je de beschrijving van de tool aan.

File storage tools

Met de FileStorage-toolfactory geef je een agent toegang tot Laravel filesystem disks. De all-methode geeft een set tools terug om bestanden op de opgegeven disk te tonen, lezen, van URL’s te voorzien, schrijven, verwijderen en kopiëren.
Wil je alleen leestoegang toestaan, gebruik dan de readOnly-methode.
Deze methoden geven een Illuminate\Support\Collection terug, zodat je de aangeboden tools verder kunt inperken.

MCP-tools

Gebruikt je applicatie Laravel MCP, dan kun je tools die worden aangeboden door een Model Context Protocol-server aan je agents beschikbaar stellen. Met de Laravel MCP-client maak je verbinding met een remote of lokale MCP-server en geef je de tools ervan direct door aan je agent.
Om MCP-tools te gebruiken moet het Laravel MCP-package in je applicatie geïnstalleerd zijn.
De tools-methode van de MCP-client geeft een collectie terug, dus gebruik de ... spread-operator om deze in de tools-array van de agent uit te spreiden.
De AI SDK wrapt elke MCP-tool automatisch, zodat de agent ze net als andere tools kan aanroepen. Je kunt ook benoemde MCP-clients gebruiken.
Of je maakt verbinding met een lokale MCP-server.
Zie de documentatie over de MCP-client voor het aanmaken en authenticeren van MCP-clients (met Bearer-tokens, OAuth en meer).

Providertools

Dit zijn speciale tools die AI-providers native implementeren.

Zoeken op het web

Voegt webzoeken toe aan je agent. Ondersteund door Anthropic, OpenAI, Azure, Gemini, xAI en OpenRouter.
Optioneel kun je het aantal zoekresultaten, toegestane domeinen en locatiegegevens opgeven.

Web fetch

Een tool die de content van een opgegeven URL ophaalt. Ondersteund door Anthropic, Gemini en OpenRouter.
Een tool die documenten doorzoekt in een vector store. Ondersteund door OpenAI, Gemini en xAI.
Met FileSearchQuery kun je ook complexe filters opgeven.

Tools lazy laden

Alle tools die een agent aanbiedt worden standaard bij elk request naar de provider gestuurd. Bij agents met veel tools kost dat tokens en kan de nauwkeurigheid waarmee het model tools kiest afnemen. Bij OpenAI of Anthropic kun je met de ToolSearch-providertool het laden van tooldefinities uitstellen tot ze nodig zijn.
De gewrapte tools zelf hoef je niet aan te passen. De provider zoekt en laadt de tools die relevant zijn voor de prompt en roept ze net als gewone tools aan. Bij Anthropic kun je met het strategy-argument de zoekmethode opgeven. Beschikbare strategieën zijn het standaard regex en bm25.
Anthropic-specifieke opties geef je door via de withProviderOptions-methode.
Providers die tool search niet ondersteunen gooien een exception in plaats van lazy tools stilzwijgend te negeren. Bij Anthropic moet er buiten ToolSearch ook minstens één tool aanwezig zijn.

Toolaanroepen repareren

Gebruik het RepairToolCalls-attribuut om een agent in staat te stellen een aanroep te repareren wanneer het model een niet-bestaande lokale tool aanroept. Laravel stuurt de mislukte aanroep en de namen van de beschikbare lokale tools terug naar het model, zodat het model de aanroep kan corrigeren.
Bepaalt Laravel het maximale aantal stappen automatisch, dan wordt er door dit attribuut één stap toegevoegd voor de reparatie-aanroep. Heb je met MaxSteps expliciet een limiet ingesteld, dan verandert die limiet niet.

Subagents

Een agent kan ook worden teruggegeven vanuit de tools()-methode van een andere agent. Registreer je een agent als tool, dan kan de bovenliggende agent specifieke taken delegeren aan een subagent en het resultaat in de oorspronkelijke respons verwerken. Dat is handig wanneer een generieke agent toegang nodig heeft tot gespecialiseerde agents met eigen instructies, tools, model- en providerconfiguratie. Bijvoorbeeld: een klantenservice-agent die vragen over het terugbetalingsbeleid delegeert aan een terugbetalingsspecialist.
Om aan te passen hoe de subagent aan de bovenliggende agent wordt gepresenteerd, implementeer je op de subagent de CanActAsTool-interface en definieer je een naam en beschrijving voor de tool.
Voor subagents die CanActAsTool niet implementeren, gebruikt Laravel de klassenaam als toolnaam en genereert het automatisch een generieke beschrijving. Elke aanroep van een subagent gebeurt onafhankelijk en neemt de gespreksgeschiedenis van de bovenliggende agent niet over.

Middleware

Voeg middleware toe aan een agent om prompts en responses te onderscheppen.
Implementeer op de agent de HasMiddleware-interface en registreer de middleware in de middleware()-methode.
Een voorbeeldimplementatie van een middlewareklasse.
Met then() voeg je ook verwerking toe na de respons.

Anonieme agents

Met de agent()-helper gebruik je een anonieme agent zonder een klasse te definiëren.
Je kunt ook anonieme agents met gestructureerde output maken.

Agentconfiguratie (PHP attributes)

Met PHP attributes beschrijf je de standaardinstellingen van een agent declaratief.
Er zijn ook shortcut-attributes voor modelselectie.

Provideropties

Implementeer je de HasProviderOptions-interface, dan kun je providerspecifieke opties doorgeven.
De providerOptions-methode ontvangt de provider die op dat moment wordt gebruikt (als Lab enum of string), zodat je per provider andere opties kunt teruggeven. Omdat je elke fallback-provider een eigen configuratie kunt meegeven, is dit vooral handig bij gebruik van failover. In het Anthropic-voorbeeld hierboven wordt met cache_control ook prompt-caching ingeschakeld.

Prompt-caching

Veel providers cachen automatisch herhaalde promptprefixen en rekenen voor het gecachte deel een gereduceerd tarief. OpenAI, Gemini, Groq, DeepSeek en xAI vereisen geen configuratie; de besparing kun je terugvinden in de usage van de respons.
De anthropic- en bedrock-providers cachen alleen wanneer je dat expliciet aangeeft. Met de attributen CacheInstructions en CacheToolDefinitions plaats je cache-breakpoints aan het einde van de instructies en tooldefinities van de agent. Daardoor lezen alle gesprekken die prefix uit de cache en hoeft die niet telkens opnieuw te worden geschreven.
Verandert de inhoud van je instructies per request, bijvoorbeeld omdat je de huidige datum invoegt, gebruik dan alleen CacheToolDefinitions. Cache je een prefix die per request verandert, dan wordt er telkens een nieuwe cache-entry aangemaakt die nooit wordt hergebruikt, terwijl je wel de schrijfkosten betaalt. Providers die deze attributen niet ondersteunen negeren ze gewoon, dus je kunt ze ook bij gebruik van failover veilig declareren. Een gecachte prefix blijft standaard 5 minuten bewaard. Bij Anthropic kun je door een TTL aan het attribuut mee te geven de prefix tot 1 uur bewaren.
Je kunt de automatische caching van Anthropic ook inschakelen via de top-level cache_control provideroptie. Daarbij wordt één breakpoint na het laatste blok van de request geplaatst; naarmate het gesprek vordert, schuift het breakpoint mee en leest elke beurt de vorige beurt uit de cache. Beide mechanismen zijn ook te combineren.
Omdat providers de prompt opbouwen in de volgorde tools, instructies, berichten, moet je bij het 1 uur cachen van instructies ook de tooldefinities 1 uur cachen. Mix je de twee, dan wordt er een InvalidArgumentException gegooid.

Menselijke goedkeuring (human tool approval)

Voor toolgoedkeuring is een Conversational-agent nodig waarvan de gespreksgeschiedenis wordt gepersisteerd. De RemembersConversations-trait biedt de persistentie die nodig is om een gepauzeerde aanroep te hervatten.
Voor tools die gevoelige of onomkeerbare operaties uitvoeren, zoals het verwijderen van bestanden of het overmaken van geld, kun je vóór uitvoering menselijke goedkeuring vereisen. Om een tool goedkeuringsplichtig te maken, implementeer je het Approvable-contract en gebruik je de InteractsWithApprovals-trait. Goedkeuringsplichtige tools vereisen standaard goedkeuring.
Wil je op basis van de argumenten van de toolaanroep bepalen of goedkeuring nodig is, definieer dan een needsApproval-methode op de tool. Deze methode kan een boolean teruggeven, of een Approval-instantie met een reden voor de goedkeuring.
Je kunt de goedkeuringsvereisten ook overschrijven wanneer je de tool teruggeeft vanuit de tools-methode van de agent.
Wordt een goedkeuringsplichtige tool aangeroepen, dan pauzeert de agent vóór uitvoering. Via pendingApprovals op de respons zie je per toolaanroep het ID, de toolnaam, de argumenten en de reden van de goedkeuring.
Om de agent te hervatten, zet je het gesprek voort en geef je een Decisions-instantie door met een beslissing voor elke openstaande toolaanroep. Met een beslissing kun je de aanroep goedkeuren, afwijzen of de argumenten vóór uitvoering aanpassen.
De booleans true en false kun je gebruiken als verkorte notatie voor respectievelijk goedkeuren en afwijzen. Alle openstaande toolaanroepen hebben een beslissing nodig. Geef je een onbekend, ontbrekend of al afgehandeld toolaanroep-ID op, dan wordt er een ApprovalMismatchException gegooid. Voor aanroepen zonder expliciete beslissing kun je met de methoden approveRemaining of rejectRemaining een standaardbeslissing opgeven.
Wijs je af met een resultaat, zoals Decision::reject('Niet goedgekeurd.'), dan wordt dat aan het model teruggegeven en gaat de respons verder. Wijs je af zonder resultaat, dan stopt de generatieloop zodra de afwijzing is vastgelegd. Toolgoedkeuring wordt ondersteund door de methoden prompt, stream, queue, broadcast, broadcastNow en broadcastOnQueue. Tijdens streaming en broadcasting wordt een pauze weergegeven als een tool_approval_request-event. Gebruik je het Vercel AI SDK-streamprotocol, dan worden goedkeuringsverzoeken en resultaten uitgezonden als de native tool-approval-parts van het protocol. Bij agents in de queue wordt de resulterende respons doorgegeven aan de then-callback, en dispatcht Laravel ook het ToolApprovalRequested-event. Laravel slaat het uitvoeringsresultaat van goedgekeurde tools op voordat het model wordt gevraagd verder te gaan. Mislukt de generatie daarna, dan zijn de goedkeuringen al afgehandeld. Stuur dezelfde goedkeuringsbeslissingen niet opnieuw, maar zet het gesprek voort met een gewone tekstprompt.

Volledige goedkeuringsflow

De onderstaande routes tonen een volledige goedkeuringsflow. De GET-route geeft het chatscherm terug en de POST-route ontvangt vanuit het chatscherm ofwel een nieuwe tekstprompt, ofwel goedkeuringsbeslissingen. Dit voorbeeld gaat ervan uit dat het User-model van je applicatie de HasConversations-trait gebruikt.
Is de status van de respons awaiting_approval, dan moet het chatscherm de openstaande goedkeuringen tonen en de keuzes van de gebruiker, met het toolaanroep-ID als sleutel, naar hetzelfde endpoint sturen.
Voor een gewoon chatbericht stuur je in plaats daarvan een message-waarde.
De goedkeuringsflow geeft AI-agents krachtige bevoegdheden en laat je tegelijkertijd een menselijke controle inbouwen vóór uitvoering. Zet dit vooral in bij tools met onomkeerbare operaties, zoals het verwijderen van bestanden, betalingsverwerking of schrijfacties naar externe API’s.

Afbeeldingen genereren

Met de Image-klasse genereer je afbeeldingen. De providers OpenAI, Gemini en xAI worden ondersteund.
Je kunt kwaliteit, beeldverhouding en timeout opgeven.
Je kunt ook een referentieafbeelding bijvoegen en bewerken.

Afbeeldingen opslaan

Afbeeldingen genereren via de queue


Spraaksynthese (TTS)

Met de Audio-klasse zet je tekst om in spraak. De providers OpenAI en ElevenLabs worden ondersteund.
Je kunt het geslacht van de stem, een specifiek voice-ID en spreekinstructies opgeven.

Audio opslaan

Audio genereren via de queue


Transcriptie (STT)

Met de Transcription-klasse zet je audiobestanden om in tekst. De providers OpenAI, OpenAI Compatible, ElevenLabs, Groq, Mistral en Gemini worden ondersteund.

Sprekerscheiding (diarisatie)

Met diarize() krijg je een transcriptie die per spreker is gescheiden.

Transcriptie via de queue


Tekst samenvatten (text summarization)

Met de summarize-methode van Laravels Stringable-klasse vat je tekst samen. Standaard wordt er samengevat in maximaal drie zinnen en wordt het goedkoopste tekstmodel van de geconfigureerde provider gebruikt.
Je kunt ook het maximale aantal zinnen, de provider, het model en de timeout opgeven. De Str-klasse heeft daarnaast een statische variant.

Embeddings

Zet tekst om in vectorrepresentaties, bijvoorbeeld voor similarity search.
Je kunt ook provider, model en aantal dimensies opgeven.

Multimodale embeddings

De Embeddings::for-methode accepteert niet alleen strings, maar ook afbeeldingen, audio, documenten en video als input, zodat je ook embeddings kunt genereren voor niet-tekstuele content. Gemini ondersteunt embeddings van afbeeldingen, audio, documenten en video; VoyageAI ondersteunt embeddings van afbeeldingen en video.
Voor multimodale input gebruik je dezelfde bestandsklassen als voor bijlagen. Deze bestanden kunnen worden gemaakt vanaf een lokaal pad, een filesystem disk, een remote URL of Base64-gecodeerde content. Afbeeldingen, documenten en video’s kunnen ook uit geüploade bestanden worden gemaakt, en documenten ook uit ruwe stringcontent.
VoyageAI staat niet toe dat media van remote URL’s en Base64-gecodeerde media in dezelfde request worden gecombineerd. Lokale, storage- en geüploade bestanden worden verstuurd als Base64-gecodeerde content; tekstinput kan met beide mediabronnen worden gecombineerd. Raadpleeg de documentatie van elke provider voor de beschikbare multimodale modellen en inputs.

Vectorzoeken (pgvector)

Een configuratievoorbeeld voor vectorzoeken met PostgreSQL en de pgvector-extensie.
1

Migration maken

2

Model configureren

3

Similarity search query

Er zijn ook low-level methoden beschikbaar.

Embeddings cachen

Je kunt embeddings cachen om te voorkomen dat dezelfde tekst herhaaldelijk wordt verwerkt. Configureer de standaard cache-instellingen in config/ai.php.
Is caching ingeschakeld, dan worden embeddings 30 dagen gecacht. De cachesleutel wordt gegenereerd op basis van provider, model, aantal dimensies en de inputcontent, zodat identieke requests het gecachte resultaat teruggeven en andere configuraties opnieuw genereren. Standaard wordt de embedding van elke input onder een eigen sleutel gecacht, zodat je zelfs bij een andere set of volgorde van inputs cache-hits krijgt voor eerder geziene inputs. Wil je de volledige input onder één sleutel cachen, zet dan de configuratie ai.caching.embeddings.individually op false. Je kunt de cache ook per request aansturen.

Reranking

Je kunt zoekresultaten reranken (herschikken) op relevantie voor een query. De providers Cohere en Jina worden ondersteund.
Met limit() beperk je het aantal teruggegeven resultaten.

Collecties reranken

Eloquent-collecties kun je direct reranken.

Bestandsbeheer

Je kunt bestanden uploaden naar een AI-provider en er later naar verwijzen.
Ook strings en formulieruploads worden ondersteund.

Verwijzen naar opgeslagen bestanden

Een geüpload bestand kun je via het bestands-ID als bijlage aan een agent meegeven.

Bestanden ophalen en verwijderen

Een provider opgeven

Providerspecifieke opties opgeven

Met de withProviderOptions-methode geef je providerspecifieke uploadopties door. Zo kun je bijvoorbeeld de purpose van een OpenAI-bestand instellen.
Wil je per provider andere opties opgeven, geef dan een closure door.

Vector stores

Met vector stores beheer je documenten aan de kant van de provider.

Bestanden toevoegen aan een store

Je kunt ook metadata meegeven.

Bestanden verwijderen uit een store


Failover

Geef je meerdere providers op als array, dan valt de SDK automatisch terug op de volgende provider wanneer de eerste faalt.

Testen

De Laravel AI SDK biedt fake-functionaliteit voor tests, zodat je kunt testen zonder de echte API aan te roepen. Fake je een gequeued afbeeldings-, audio-, transcriptie- of embeddingsgeneratie, dan wordt de then-callback die je bij de generatie hebt geregistreerd aangeroepen met de fake-respons. Wil je dat de callback ook niet wordt uitgevoerd, gebruik dan daarnaast Queue::fake().

Agents testen

Er zijn ook assertions voor queueing.
Met preventStrayPrompts() wordt er een exception gegooid zodra een prompt wordt aangeroepen die niet in de fake is gedefinieerd.
Fake je een agent met gestructureerde output, dan kun je de respons als array opgeven. De agent geeft dan een gestructureerde respons terug met de opgegeven data.
Wordt fake() op een agent met gestructureerde output aangeroepen zonder expliciete fake-data, dan genereert Laravel automatisch fake-data die voldoet aan het door de agent gedefinieerde schema.
Voor het testen van anonieme agents gebruik je AnonymousAgent::fake().

Afbeeldingsgeneratie testen

Spraaksynthese testen

Transcriptie testen

Embeddings testen

Reranking testen

Bestanden testen

Vector stores testen

Je kunt ook assertions doen op bestandsoperaties op een store.

Events

De Laravel AI SDK dispatcht de onderstaande events. Door naar deze events te luisteren kun je bijvoorbeeld loggen en monitoren.
  • AgentFailed — wanneer de agentverwerking mislukt
  • AgentFailedOver — bij failover van een agent
  • PromptingAgent — vóór het versturen van een prompt
  • AgentPrompted — na het versturen van een prompt
  • StreamingAgent — bij de start van streaming
  • AgentStreamed — na afronding van streaming
  • InvokingTool — vóór een toolaanroep
  • ToolInvoked — na een toolaanroep
  • ToolApprovalRequested — wanneer toolgoedkeuring wordt aangevraagd
  • ToolApprovalResolved — nadat een toolgoedkeuring is afgehandeld
  • ProviderFailedOver — bij failover van een provider
  • StartingStep — bij de start van een stap
  • StepCompleted — na afronding van een stap
  • StepFailed — wanneer een stap mislukt
  • ToolFailed — wanneer de uitvoering van een tool mislukt
  • GeneratingImage — vóór het genereren van een afbeelding
  • ImageGenerated — na het genereren van een afbeelding
  • GeneratingAudio — vóór het genereren van audio
  • AudioGenerated — na het genereren van audio
  • GeneratingTranscription — vóór een transcriptie
  • TranscriptionGenerated — na een transcriptie
  • GeneratingEmbeddings — vóór het genereren van embeddings
  • EmbeddingsGenerated — na het genereren van embeddings
  • Reranking — vóór reranking
  • Reranked — na reranking
  • StoringFile — vóór het opslaan van een bestand
  • FileStored — na het opslaan van een bestand
  • FileDeleted — na het verwijderen van een bestand
  • CreatingStore — vóór het aanmaken van een store
  • StoreCreated — na het aanmaken van een store
  • StoreDeleted — na het verwijderen van een store
  • AddingFileToStore — vóór het toevoegen van een bestand aan een store
  • FileAddedToStore — na het toevoegen van een bestand aan een store
  • RemovingFileFromStore — vóór het verwijderen van een bestand uit een store
  • FileRemovedFromStore — na het verwijderen van een bestand uit een store
Laatst gewijzigd op 6 september 2026