Einführung
Das Laravel AI SDK bietet eine einheitliche und ausdrucksstarke API zur Interaktion mit KI-Anbietern wie OpenAI, Anthropic und Gemini. Mit dem AI SDK können Sie intelligente Agenten mit Tools und strukturierten Ausgaben erstellen, Bilder generieren, Sprache synthetisieren und transkribieren, Vektor-Embeddings erzeugen und viele weitere KI-Funktionen über eine konsistente, Laravel-typische Schnittstelle nutzen.Das Laravel AI SDK ist ein offizielles Paket, das in Laravel 13 hinzugefügt wurde. Es wird als
laravel/ai bereitgestellt und ermöglicht die Nutzung mehrerer KI-Anbieter über eine einheitliche API.Übersicht der unterstützten Anbieter
Installation
1
Paket installieren
Installieren Sie das Laravel AI SDK über Composer.
2
Konfigurationsdatei und Migrationen veröffentlichen
Veröffentlichen Sie die Konfigurationsdatei und die Migrationen mit dem Artisan-Befehl
vendor:publish.3
Migrationen ausführen
Führen Sie die Datenbankmigrationen aus. Dabei werden die Tabellen
agent_conversations und agent_conversation_messages erstellt, in denen der Gesprächsverlauf gespeichert wird.Konfiguration
Umgebungsvariablen
Tragen Sie in Ihre.env-Datei die API-Schlüssel der KI-Anbieter ein, die Sie verwenden möchten.
config/ai.php konfiguriert werden.
Benutzerdefinierte Basis-URL
Wenn Sie Anfragen über einen Proxydienst leiten möchten, können Sie pro Anbieter eine benutzerdefinierte URL festlegen.OpenAI-kompatible Anbieter
Wenn Sie eine OpenAI-kompatible API verwenden – zum Beispiel LM Studio, vLLM, Together, Fireworks oder ein lokales Gateway – können Sie einen Anbieter mit dem Treiberopenai-compatible konfigurieren. url ist erforderlich; wenn Sie key angeben, wird er als Bearer-Token gesendet.
Lab-Enum
Verwenden Sie dasLab-Enum, um Anbieter im Code zu referenzieren.
Agenten
Agenten sind der grundlegende Baustein des Laravel AI SDK. Mit dem Befehlmake:agent erzeugen Sie eine Agentenklasse.
app/Ai/Agents/ abgelegt. Nachfolgend sehen Sie einen Agenten, der alle wichtigen Schnittstellen implementiert.
Prompt
Über die Methodeprompt() senden Sie eine Nachricht an den Agenten.
make() können Sie eine Instanz erzeugen und Abhängigkeiten über den Container auflösen lassen.
prompt() überschreiben.
Gesprächskontext
Wenn Sie dasConversational-Interface implementieren und eine Methode messages() definieren, wird der bisherige Gesprächsverlauf an die KI übergeben.
Das Trait RemembersConversations speichert und lädt den Gesprächsverlauf automatisch aus der Datenbank.
forUser() und setzen Sie sie mit continue() fort, indem Sie die zurückgegebene conversationId verwenden.
Strukturierte Ausgaben
Implementieren Sie dasHasStructuredOutput-Interface und definieren Sie in der Methode schema() ein JSON-Schema, um die Antwort der KI als strukturierte Daten zu erhalten.
Verschachtelte Objekte
Arrays von Objekten
anyOf (Auswahl aus mehreren Schemata)
Wenn ein Wert einem von mehreren möglichen Schemata entsprechen soll, verwenden Sie die MethodeanyOf.
Anhänge
Über das Argumentattachments können Sie dem Agenten Dokumente oder Bilder übergeben.
Streaming
Mit der Methodestream() können Sie die Antwort chunkweise zurückgeben. Das eignet sich, um lange Antworten in Echtzeit an das Frontend zu senden.
then()-Callback lässt sich die Verarbeitung nach Abschluss des Streams beschreiben.
Vercel-AI-SDK-Protokoll
Wenn Sie im Frontend das Vercel AI SDK verwenden, rufen SieusingVercelDataProtocol() auf.
Broadcasting
Ereignisse aus dem Stream können an Broadcast-Kanäle, etwa Laravel Echo, gesendet werden.broadcastOnQueue() erfolgt das Broadcasten über eine Queue.
Sehr große Ereignisse überspringen
Manche Broadcast-Plattformen begrenzen WebSocket-Nachrichten auf etwa 10 KB. Datenintensive Stream-Ereignisse wie große Tool-Ergebnisse können diese Grenze überschreiten und beim Broadcasten fehlschlagen. Mit dem AttributWithoutBroadcasting können Sie bestimmte Ereignistypen vom Broadcast ausschließen.
agent_conversation_messages gespeichert. Dadurch kann das Frontend nach Abschluss des Streams weiterhin auf die vollständigen Tool-Daten zugreifen. Dies funktioniert sowohl über die Queue (broadcastOnQueue) als auch synchron (broadcast / broadcastNow).
Queue
Mit der Methodequeue() können Sie Prompts asynchron in die Queue stellen.
Tools
Mit Tools kann die KI Funktionen in Ihrem Code aufrufen. Mit dem Befehlmake:tool erzeugen Sie eine Toolklasse.
tools() des Agenten.
Ähnlichkeitssuche als Tool
Ein Tool für die Ähnlichkeitssuche mit Vektor-Embeddings lässt sich unkompliziert einbinden.withDescription() passen Sie die Beschreibung des Tools an.
Dateisystem-Tools
Mit der FabrikFileStorage können Sie Ihrem Agenten Zugriff auf Filesystem-Disks von Laravel geben. Die Methode all gibt einen Satz von Tools zurück, mit denen der Agent Dateien auf der angegebenen Disk auflisten, lesen, URLs erzeugen, schreiben, löschen und kopieren kann.
readOnly.
Illuminate\Support\Collection zurück, sodass Sie die bereitgestellten Tools weiter filtern können.
MCP-Tools
Wenn Ihre Anwendung Laravel MCP verwendet, können Sie Ihrem Agenten die Tools bereitstellen, die ein Model-Context-Protocol-Server veröffentlicht. Mit dem Laravel-MCP-Client können Sie sich mit entfernten oder lokalen MCP-Servern verbinden und deren Tools direkt an den Agenten übergeben.Für die Nutzung von MCP-Tools muss das Paket Laravel MCP in Ihrer Anwendung installiert sein.
tools des MCP-Clients liefert eine Collection zurück, die Sie mit dem Spread-Operator ... in das tools-Array des Agenten einfügen.
Anbieter-Tools
Dies sind spezielle Tools, die die KI-Anbieter nativ implementieren.Websuche
Fügt dem Agenten eine Websuche hinzu. Unterstützt werden Anthropic, OpenAI, Gemini und OpenRouter.Web-Fetch
Ein Tool, das den Inhalt einer angegebenen URL abruft. Unterstützt werden Anthropic und Gemini.Dateisuche
Ein Tool, das Dokumente aus einem Vektorspeicher durchsucht. Unterstützt werden OpenAI und Gemini.FileSearchQuery sind möglich.
Subagenten
Agenten können auch aus dertools()-Methode eines anderen Agenten zurückgegeben werden. Wenn Sie einen Agenten als Tool registrieren, kann der übergeordnete Agent bestimmte Aufgaben an einen Subagenten delegieren und dessen Ergebnis in die ursprüngliche Antwort einbetten. Das ist nützlich, wenn ein Allzweck-Agent auf spezialisierte Agenten mit eigenen Anweisungen, Tools, Modell- oder Anbietereinstellungen zugreifen soll.
Ein Beispiel: Ein Kundenservice-Agent delegiert Fragen zur Rückerstattungsrichtlinie an einen spezialisierten Erstattungsagenten.
CanActAsTool und definieren einen Namen und eine Beschreibung für das Tool.
CanActAsTool nicht implementiert, verwendet Laravel den Klassennamen als Tool-Namen und generiert automatisch eine allgemeine Beschreibung. Jeder Aufruf eines Subagenten erfolgt unabhängig; der Gesprächsverlauf des übergeordneten Agenten wird nicht übernommen.
Middleware
Sie können Middleware zu einem Agenten hinzufügen, um Prompts und Antworten abzufangen.HasMiddleware implementieren und registrieren Sie die Middleware in der Methode middleware().
then() können Sie zusätzliche Verarbeitungsschritte nach der Antwort ergänzen.
Anonyme Agenten
Ohne eine eigene Klasse zu definieren, können Sie mit dem Helperagent() anonyme Agenten verwenden.
Agentenkonfiguration (PHP-Attribute)
Standardeinstellungen eines Agenten lassen sich deklarativ über PHP-Attribute festlegen.Anbieteroptionen
Wenn Sie das InterfaceHasProviderOptions implementieren, können Sie anbieterspezifische Optionen übergeben.
Bildgenerierung
Mit der KlasseImage können Sie Bilder generieren. Unterstützt werden die Anbieter OpenAI, Gemini und xAI.
Bilder speichern
Bildgenerierung per Queue
Sprachsynthese (TTS)
Mit der KlasseAudio können Sie Text in Sprache umwandeln. Unterstützt werden die Anbieter OpenAI und ElevenLabs.
Audio speichern
Sprachsynthese per Queue
Transkription (STT)
Mit der KlasseTranscription können Sie Audiodateien in Text umwandeln. Unterstützt werden die Anbieter OpenAI, ElevenLabs und Mistral.
Sprechertrennung (Diarisierung)
Mitdiarize() erhalten Sie eine Transkription, die nach Sprechern getrennt ist.
Transkription per Queue
Embeddings
Wandeln Sie Text in eine Vektor-Repräsentation um, die sich zum Beispiel für die Ähnlichkeitssuche nutzen lässt.Vektorsuche (pgvector)
Beispielkonfiguration einer Vektorsuche mit PostgreSQL und der pgvector-Erweiterung.1
Migration erstellen
2
Model konfigurieren
3
Ähnlichkeitssuche
Embeddings zwischenspeichern
Sie können Embeddings zwischenspeichern, um denselben Text nicht mehrfach zu berechnen. Die Standardeinstellungen für den Cache legen Sie inconfig/ai.php fest.
Reranking
Suchergebnisse können anhand ihrer Relevanz zu einer Anfrage neu sortiert werden (Reranking). Unterstützt werden die Anbieter Cohere und Jina.limit() schränken Sie die Anzahl der zurückgegebenen Ergebnisse ein.
Reranking von Collections
Eloquent-Collections lassen sich direkt reranken.Dateiverwaltung
Sie können Dateien zu einem KI-Anbieter hochladen und später darauf verweisen.Auf gespeicherte Dateien verweisen
Bereits hochgeladene Dateien können Sie über ihre ID an einen Agenten anhängen.Dateien abrufen und löschen
Anbieter angeben
Anbieterspezifische Optionen angeben
Über die MethodewithProviderOptions können Sie anbieterspezifische Upload-Optionen übergeben. So können Sie zum Beispiel den purpose-Wert für OpenAI-Dateien setzen.
Vektorspeicher
Mit Vektorspeichern (Vector Stores) können Sie Dokumente auf Anbieterseite verwalten lassen.Dateien zum Store hinzufügen
Dateien aus einem Store entfernen
Failover
Wenn Sie mehrere Anbieter als Array angeben, wird bei einem Fehlschlag des ersten Anbieters automatisch auf den nächsten umgeschaltet.Testen
Das Laravel AI SDK stellt Fakes bereit, mit denen Sie testen können, ohne echte APIs aufzurufen.Agenten testen
preventStrayPrompts() wird eine Ausnahme ausgelöst, wenn ein Prompt aufgerufen wird, der nicht als Fake definiert wurde.
Wenn
fake() bei einem Agenten mit strukturierter Ausgabe ohne explizit angegebene Fake-Daten aufgerufen wird, generiert Laravel automatisch Fake-Daten, die dem vom Agenten definierten Schema entsprechen.AnonymousAgent::fake().
Bildgenerierung testen
Sprachsynthese testen
Transkription testen
Embeddings testen
Reranking testen
Dateien testen
Vektorspeicher testen
Events
Das Laravel AI SDK dispatcht die folgenden Events. Durch Abonnieren dieser Events lassen sich Logging, Monitoring und Ähnliches umsetzen.Agenten
Agenten
PromptingAgent— vor dem Senden eines PromptsAgentPrompted— nach dem Senden eines PromptsStreamingAgent— beim Start des StreamingsAgentStreamed— nach Abschluss des StreamingsInvokingTool— vor dem Aufruf eines ToolsToolInvoked— nach dem Aufruf eines Tools
Bilder, Audio und Transkription
Bilder, Audio und Transkription
GeneratingImage— vor der BildgenerierungImageGenerated— nach der BildgenerierungGeneratingAudio— vor der AudiogenerierungAudioGenerated— nach der AudiogenerierungGeneratingTranscription— vor der TranskriptionTranscriptionGenerated— nach der Transkription
Embeddings und Reranking
Embeddings und Reranking
GeneratingEmbeddings— vor der Embedding-ErzeugungEmbeddingsGenerated— nach der Embedding-ErzeugungReranking— vor dem RerankingReranked— nach dem Reranking
Dateien und Stores
Dateien und Stores
StoringFile— vor dem Speichern einer DateiFileStored— nach dem Speichern einer DateiFileDeleted— nach dem Löschen einer DateiCreatingStore— vor dem Anlegen eines StoresStoreCreated— nach dem Anlegen eines StoresAddingFileToStore— vor dem Hinzufügen einer Datei zum StoreFileAddedToStore— nach dem Hinzufügen einer Datei zum StoreRemovingFileFromStore— vor dem Entfernen einer Datei aus dem StoreFileRemovedFromStore— nach dem Entfernen einer Datei aus dem Store