Streaming
Wenn Sie in SessionConfigstreaming: true angeben, empfangen Sie die Antworten von Copilot als Stream.
Auch stdio- und TCP-Modus zeigen von Haus aus ein streaming-ähnliches Verhalten. Der Unterschied ist, dass zusätzlich ASSISTANT_MESSAGE_DELTA empfangen wird.
- Für eine flüssige Anzeige geben Sie den Inhalt ohne zusätzliche Zeilenumbrüche direkt aus.
- Verwenden Sie
spin()aus Laravel Prompts hier nicht, da die Darstellung sonst zerstört wird.
Konkrete Anwendungsmuster
Artisan-Command
Wie oben gezeigt geben Sie die Ausgabe direkt perecho oder $this->output->write() aus. Die Darstellung entspricht der der direkt genutzten Copilot CLI und ist daher intuitiv. Mit stream() aus Laravel Prompts erhalten Sie zusätzlich einen Fade-in-Effekt.
Auslieferung an eine Webseite als Server-Sent Events (SSE)
Variante mit response()->eventStream()
response()->eventStream() wurde kurz vor dem Release von Laravel 12 hinzugefügt. Da dieses Paket ausschließlich Laravel 12 und höher unterstützt, ist es nutzbar.
Variante mit response()->stream()
Beispiel-Code der Frontend-Seite
copilot.blade.php dient nur der einfachen Anzeigeprüfung. Für den Produktivbetrieb mit React oder Vue empfehlen sich die offiziellen npm-Pakete von Laravel: @laravel/stream-react bzw. @laravel/stream-vue.
Auslieferung über WebSocket
Durch Kombination von Laravel-Notifications, Broadcasting und Reverb lassen sichdelta-Ereignisse auch per WebSocket ausliefern.
wire:stream in Livewire
Auch in Livewire ist eine Streaming-Anzeige mit der Direktive wire:stream möglich.
Aktuelle Informationen finden Sie im GitHub-Repository.