SessionEvent
Tutti i messaggi provenienti da Copilot sono istanze diRevolution\Copilot\Types\SessionEvent.
Poiché questa classe è la più utilizzata, sono state aggiunte funzionalità comode in stile Laravel.
content()
Recupera il messaggio di risposta più importante dell’AI.
__toString() restituisce il contenuto del messaggio.
Verifica del tipo di evento
Sono disponibiliisAssistantMessage(), isUserMessage(), isIdle(), isAssistantMessageDelta().
Per i tipi di evento più usati potrebbero essere aggiunti ulteriori helper.
Con is() puoi verificare qualsiasi EventType.
type() restituisce il valore stringa dell’enum SessionEventType.
failed() / successful()
failed() è true quando il tipo di evento è SESSION_ERROR.
successful() è l’opposto.
Per allinearsi alle convenzioni di naming di Laravel, è stato rinominato da isError().
throw()
Come nelle API HTTP e Process di Laravel, gli errori sono conservati e puoi sollevarli come eccezione con throw().
Se non ci sono errori non fa nulla, quindi puoi scrivere così.
SESSION_ERROR, viene sollevata Revolution\Copilot\Exceptions\SessionErrorException.
In caso di timeout viene sollevata Revolution\Copilot\Exceptions\SessionTimeoutException.
Per errori JSON-RPC viene sollevata Revolution\Copilot\Exceptions\JsonRpcException.
Conditionable
Sono disponibiliwhen() e unless().
Dumpable
Sono disponibilidump() e dd().
Tappable
È disponibiletap().
InteractsWithData
Questa funzionalità si applica solo alla proprietà$data di SessionEvent.
Puoi usare helper familiari come all(), has(), only(), collect().
Per i dettagli consulta InteractsWithData.
Poiché $data di SessionEvent ha struttura diversa per EventType, è comodo per l’accesso ai valori dei singoli eventi.
Anche content() usa internamente InteractsWithData.
toArray() / toJson()
Puoi convertire l’intero SessionEvent in array o JSON.
collect() per l’intero evento.
Il motivo è che $data dispone del collect() di InteractsWithData.
Se vuoi operare sull’intero evento come collezione, usa l’helper collect() di Laravel.
broadcast() / broadcastNow()
Puoi effettuare il broadcast con la stessa interfaccia di StreamEvent di Laravel AI SDK.
Nell’AI SDK si usa durante lo streaming, mentre in SessionEvent è utilizzabile per qualsiasi EventType.
broadcastNow() effettua il broadcast immediato senza passare per la coda.
Per le informazioni più recenti fai riferimento al repository GitHub.