Wann Sie einen eigenen Provider brauchen
Das Laravel AI SDK unterstützt OpenAI, Anthropic, Gemini, Mistral und andere zentrale KI-Dienste out of the box. In folgenden Fällen reichen die Standard-Provider aber nicht:- Ein aufstrebender KI-Dienst, der noch nicht offiziell unterstützt wird.
- Sie möchten über ein internes Modell-Gateway oder eine Abrechnungsschicht laufen.
- Ein On-Prem-Inferenzserver mit eigenem Protokoll oder Auth-Verfahren.
AiManager des SDK. Die Nutzung ist dann identisch zu den Standard-Providern.
Für OpenAI-kompatible APIs den eingebauten Driver nutzenAb SDK 0.9 ist der Treiber
openai-compatible standardmäßig verfügbar. Für interne OpenAI-kompatible Inferenzserver (etwa den OpenAI-kompatiblen Endpoint von Ollama) genügt eine Ergänzung in config/ai.php — eine eigene Provider-Implementierung ist nicht nötig.Überblick der Architektur
Zweischichtiger Aufbau
Das Laravel AI SDK besteht aus zwei Schichten: Provider und Gateway.
Alle Provider erben von der abstrakten Klasse
Laravel\Ai\Providers\Provider und implementieren feature-spezifische Contracts. Die mehrstufige Schleife mit Tool-Aufrufen läuft in TextGenerationLoop, das das Gateway wiederholt aufruft.
Übersicht der Contracts
Sie implementieren nur die Contracts der Funktionen, die Sie anbieten wollen.In den meisten Fällen genügt die Implementierung von
TextProvider.Der TextProvider-Contract
Das ist das Interface, das ein Text-Provider implementiert (src/Contracts/Providers/TextProvider.php).
prompt() und stream() können Sie an vorhandene Traits (GeneratesText, StreamsText) abgeben — Sie müssen also nur drei Methoden für die Modellnamen und zusätzlich textGateway() implementieren (insgesamt vier). Die mehrstufige Tool-Schleife übernimmt TextGenerationLoop; das Gateway verarbeitet nur den Request eines einzelnen Schritts.
Implementierungsbeispiel: eigener Provider
Beispiel: Ein Inferenzdienst mit eigener API wird als Providermy-inference registriert.
1
Provider-Klasse anlegen
Legen Sie
app/Ai/Providers/MyInferenceProvider.php an.2
Im AppServiceProvider registrieren
Registrieren Sie den Provider in der
boot-Methode Ihres App\Providers\AppServiceProvider per extend().3
Provider in config/ai.php ergänzen
.env ergänzen Sie:4
Aus einem Agenten heraus nutzen
Nach der Registrierung geben Sie in Als Default-Provider ändern Sie den
prompt() den Provider-Namen an — die Nutzung entspricht den Standard-Providern.default-Key in config/ai.php.Ein eigenes Gateway implementieren
Für Dienste mit eigener, nicht OpenAI-kompatibler API brauchen Sie ein Gateway, das denStepTextGateway-Contract implementiert.
Der Contract StepTextGateway
Definiert insrc/Contracts/Gateway/StepTextGateway.php. Das Gateway verarbeitet einen einzelnen Schritt der Konversation und gibt eine StepResponse zurück. Die Tool-Schleife übernimmt der aufrufende TextGenerationLoop.
Beispiel eines eigenen Gateways
Ein Gerüst, das HTTP-Requests an eine eigene Inferenz-API sendet.Für Tool-Aufrufe (Function Calling) legen Sie in
generateTextStep() das Ergebnis der Tool-Auswertung in toolCalls ab und setzen finishReason auf FinishReason::ToolCalls. Die Tool-Ausführung und den nächsten Schritt übernimmt TextGenerationLoop. Referenzimplementierung: AnthropicGateway.php.Wie Sie testen
Das fake() der Agent-Klasse verwenden
In Tests der Agent-Klasse mit Ihrem eigenen Provider verwenden Sie die fake()-Methode der Agent-Klasse. Sie setzt unabhängig vom Provider ein Fake-Gateway.
Ab 0.9 laufen
Agent::fake()-Responses durch denselben TextGenerationLoop wie echte Provider. Definieren Sie Fake-Tool-Aufrufe bei einem Agenten ohne Tools, wird eine NoSuchToolException geworfen.Mock-Provider per extend()
Sie können auch einen Test-Provider über den Container registrieren.
Referenz-Links
OllamaProvider.php — schlichtes Provider-Beispiel
Ein minimaler Provider, der einen lokalen Modell-Server anbindet — als Vorlage für eigene Provider.
AnthropicGateway.php — Beispiel-Gateway
Beispielimplementierung eines Gateways, das
StepTextGateway implementiert. Zeigt generateTextStep() und generateStreamStep().StepTextGateway Contract
Definition des Interfaces, das Text-Gateways implementieren.
TextProvider Contract
Definition des Interfaces, das Text-Provider implementieren.