Skip to main content

스트리밍

SessionConfig에서 streaming: true를 지정하면 Copilot에서의 응답을 스트리밍으로 받을 수 있습니다. 원래 stdio 모드에서도 TCP 모드에서도 스트리밍과 같은 동작입니다. 차이는 ASSISTANT_MESSAGE_DELTA를 수신하게 되는 점입니다.
  • 유창한 표시를 위해서는 줄바꿈을 추가하지 않고 그대로 표시합니다.
  • Laravel Prompts의 spin()은 표시가 깨지므로 함께 사용하지 않습니다.

구체적인 사용 패턴

Artisan 명령어

위와 같이 echo 또는 $this->output->write()로 직접 출력합니다. Copilot CLI를 직접 사용한 경우와 같은 표시라서 이해하기 쉽습니다. Laravel Prompts의 stream()을 사용하면 페이드인 효과와 함께 표시할 수도 있습니다.

웹 페이지에서 Server-Sent Events(SSE)로 전송

response()->eventStream()을 사용하는 방법

response()->eventStream()이 추가된 것은 Laravel 12 릴리스 직전 무렵입니다. 이 패키지는 Laravel 12 이상만 지원하므로 사용 가능합니다.

response()->stream()을 사용하는 방법

프론트엔드 측 코드 예시

copilot.blade.php는 간이 표시 확인용입니다. 프로덕션용으로는 React나 Vue를 사용한다면 Laravel 공식 npm 패키지 사용을 권장합니다. @laravel/stream-react@laravel/stream-vue.

WebSocket으로 전송

Laravel의 통지 기능, 브로드캐스트 기능, Reverb를 조합해 delta를 WebSocket으로 전송할 수도 있습니다.

Livewire의 wire:stream

Livewire에서도 wire:stream 디렉티브를 사용해 스트리밍 표시가 가능합니다.
최신 정보는 GitHub 저장소를 참고하세요.
마지막 수정일 2026년 7월 13일