
sjq는 AI 스트리밍 응답을 이벤트별로 읽어 새로 생성된 토큰과 메타데이터, 시간 정보를 줄 단위로 출력하는 명령줄 도구다. jq가 처리하기 어려운 서버 전송 이벤트(SSE) 형식의 응답을 살펴보거나 스트리밍 속도를 확인할 때 쓸 수 있다.
OpenAI 호환 /v1/chat/completions와 /v1/responses 스트림을 지원한다. curl 출력 뒤에 파이프로 연결하거나 sjq curl … 형태로 실행할 수 있고, 저장한 스트림 파일을 재생할 수도 있다. 설치는 Homebrew 또는 Rust의 cargo install --git https://github.com/vivgrid/sjq를 이용한다. 소스에서 빌드하려면 edition 2024를 지원하는 최신 안정판 Rust가 필요하다.
sjq는 토큰을 한 줄씩 보여주고, 추론 내용은 서버가 보내는 필드명을 유지한다. 스트림 종료 뒤에는 첫 토큰까지 걸린 시간과 전체 시간, 속도 등을 출력한다. 연결·TLS·TTFB 시간은 sjq curl …로 실행할 때만 표시하며, 파이프로 입력하면 TCP 연결 시간은 확인할 수 없다. 저장 파일을 재생할 때는 시간 정보가 나오지 않는다.
부록: 원문 예시
meta: created_at=1792038227 id=resp_0217… model=… reasoning={"effort":"medium"} service_tier=auto data: created status=in_progress data: output_item.added reasoning id=rs_0217… status=in_progress data: reasoning_summary_text='Simple' data: reasoning_summary_text.done data: output_item.added message role=assistant status=in_progress id=msg_0217… data: content_part.added output_text data: 'Here' data: output_text.done data: output_item.done message status=completed data: completed, usage: {"input_tokens":18,"output_tokens":87,"output_tokens_details":{"reasoning_tokens":3},"total_tokens":105}
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요