SessionEvent
Tous les messages provenant de Copilot sont des instances deRevolution\Copilot\Types\SessionEvent.
Comme cette classe est très utilisée, des commodités à la Laravel lui ont été ajoutées.
content()
Récupère le message de réponse le plus important renvoyé par l’IA.
__toString() renvoie également le contenu du message.
Test du type d’événement
isAssistantMessage(), isUserMessage(), isIdle(), isAssistantMessageDelta() sont disponibles.
Pour les types d’événements couramment utilisés, d’autres helpers peuvent être ajoutés.
is() permet de tester un EventType arbitraire.
type() renvoie la valeur chaîne de l’enum SessionEventType.
failed() / successful()
Si le type d’événement est SESSION_ERROR, failed() renvoie true.
successful() est l’inverse.
Pour s’aligner sur la nomenclature Laravel, isError() a été renommé.
throw()
Comme pour les APIs HTTP et Process de Laravel, l’erreur est conservée et peut être relancée via throw().
Si aucune erreur, la méthode ne fait rien ; vous pouvez donc écrire :
SESSION_ERROR, Revolution\Copilot\Exceptions\SessionErrorException est levée.
En cas de timeout, Revolution\Copilot\Exceptions\SessionTimeoutException est levée.
Pour les erreurs JSON-RPC, Revolution\Copilot\Exceptions\JsonRpcException est levée.
Conditionable
when() et unless() sont disponibles.
Dumpable
dump() et dd() sont disponibles.
Tappable
tap() est disponible.
InteractsWithData
Cette fonctionnalité ne s’applique qu’à la propriété$data de SessionEvent.
Vous disposez d’helpers familiers : all(), has(), only(), collect(), etc.
Pour plus de détails, voir InteractsWithData.
Comme la structure de $data diffère selon l’EventType, ces accès sont pratiques.
content() s’appuie également sur InteractsWithData en interne.
toArray() / toJson()
Vous pouvez convertir l’ensemble du SessionEvent en tableau ou en JSON.
collect() sur l’événement entier.
En effet, $data possède déjà collect() via InteractsWithData.
Pour manipuler l’événement en tant que collection, utilisez le helper collect() de Laravel.
broadcast() / broadcastNow()
La diffusion utilise la même interface que StreamEvent de Laravel AI SDK.
Là où l’AI SDK l’utilise en streaming, ici vous pouvez l’utiliser pour n’importe quel EventType.
broadcastNow() diffuse immédiatement sans passer par la file d’attente.
Pour les dernières informations, consultez le dépôt GitHub.