Skip to main content

SessionEvent

來自 Copilot 的訊息全部都是 Revolution\Copilot\Types\SessionEvent 類別。 由於這個類別最常被使用,因此加入了 Laravel 風格的便利功能。

content()

取得 AI 最重要的回應訊息。
透過 __toString() 的隱式型別轉換也會回傳訊息內容。

Event type 判斷

可使用 isAssistantMessage()isUserMessage()isIdle()isAssistantMessageDelta()。 若有常用的 Event type,可能會再新增輔助方法。 可用 is() 判斷任意 EventType
type() 會回傳 SessionEventType enum 的字串值。

failed() / successful()

當事件類型為 SESSION_ERROR 時,failed() 為 true。 successful() 則相反。 為配合 Laravel 的命名慣例,由 isError() 改名而來。

throw()

與 Laravel 的 HTTP API 或 Process API 一樣,錯誤會被保留,可透過 throw() 拋出例外。 沒有錯誤時不會做任何事,因此可以這樣寫。
事件類型為 SESSION_ERROR 時會拋出 Revolution\Copilot\Exceptions\SessionErrorException。 逾時會拋出 Revolution\Copilot\Exceptions\SessionTimeoutException JSON-RPC 錯誤會拋出 Revolution\Copilot\Exceptions\JsonRpcException

Conditionable

可使用 when()unless()

Dumpable

可使用 dump()dd()

Tappable

可使用 tap()

InteractsWithData

此功能僅適用於 SessionEvent 的 $data 屬性。 可使用熟悉的輔助方法,例如 all()has()only()collect()。 詳細請參閱 InteractsWithData SessionEvent 的 $data 會依 EventType 有不同結構,方便針對各事件存取其值。 content() 內部也是使用 InteractsWithData。

toArray() / toJson()

可將整個 SessionEvent 轉為陣列或 JSON。
沒有針對整個事件的 collect() 方法。 因為 $data 已經有 InteractsWithData 的 collect()。 若要對整個事件進行 collection 操作,請使用 Laravel 的 collect() 輔助函式。

broadcast() / broadcastNow()

可以與 Laravel AI SDK 的 StreamEvent 相同介面進行廣播。 AI SDK 中用於 streaming,但在 SessionEvent 中可用於任意 EventType
broadcastNow() 不經由 queue,而是立即廣播。
Streaming 時的使用範例:
最新資訊請參閱 GitHub 儲存庫
最後修改於 2026年8月2日