SessionEvent
Alle Nachrichten von Copilot sind Instanzen der KlasseRevolution\Copilot\Types\SessionEvent.
Da sie am häufigsten verwendet wird, wurden Laravel-typische Komfortfunktionen ergänzt.
content()
Ruft die wichtigste Antwortnachricht der KI ab.
__toString() liefert den Nachrichteninhalt zurück.
Event-Typ prüfen
isAssistantMessage(), isUserMessage(), isIdle(), isAssistantMessageDelta() stehen zur Verfügung.
Für häufig genutzte Event-Typen können weitere Helper hinzugefügt werden.
Mit is() können Sie einen beliebigen EventType prüfen.
type() gibt den String-Wert des Enums SessionEventType zurück.
failed() / successful()
Wenn der Event-Typ SESSION_ERROR ist, wird failed() zu true.
successful() ist die Negation.
Zur Ausrichtung an Laravel-Konventionen wurde die Methode von isError() umbenannt.
throw()
Wie bei Laravels HTTP- und Process-API wird der Fehler beibehalten und kann via throw() als Exception geworfen werden.
Da bei fehlerfreiem Zustand nichts passiert, lässt sich schreiben:
SESSION_ERROR wird Revolution\Copilot\Exceptions\SessionErrorException geworfen.
Bei Timeout wird Revolution\Copilot\Exceptions\SessionTimeoutException geworfen.
Bei JSON-RPC-Fehlern wird Revolution\Copilot\Exceptions\JsonRpcException geworfen.
Conditionable
when() und unless() sind verfügbar.
Dumpable
dump() und dd() sind verfügbar.
Tappable
tap() ist verfügbar.
InteractsWithData
Diese Funktion bezieht sich ausschließlich auf die Eigenschaft$data von SessionEvent.
Sie können vertraute Helper wie all(), has(), only(), collect() verwenden.
Details siehe InteractsWithData.
Da die Struktur von $data je nach EventType unterschiedlich ist, ist dies für den ereignisspezifischen Zugriff auf Werte hilfreich.
Auch content() verwendet intern InteractsWithData.
toArray() / toJson()
Sie können den gesamten SessionEvent in ein Array oder JSON umwandeln.
collect()-Methode für das gesamte Event existiert nicht.
Grund: $data hat bereits collect() aus InteractsWithData.
Wenn Sie das gesamte Event mit Collection-Operationen bearbeiten möchten, nutzen Sie den Laravel-Helper collect().
broadcast() / broadcastNow()
Sie können mit derselben Schnittstelle wie beim StreamEvent des Laravel AI SDK broadcasten.
Beim AI SDK wird es beim Streaming verwendet, beim SessionEvent aber für beliebige EventTypes.
broadcastNow() broadcastet sofort, ohne den Weg über die Queue.
Aktuelle Informationen finden Sie im GitHub-Repository.